在 Python 循环中查找第一个数字索引?

宇宙猫
found = False
position = 0

while not found and position < len(inputString):
    if inputString[position].isdigit():
        found = True
    else:
        position += 1

if found:
    print('first digit is at position', position)
else:
    print('There are no digits in the string')

这是我发现的一个简单程序,用于查找输入字符串中的第一个数字。我无法理解的事情是......

if inputString[position].isdigit(): found = True

这个表达式究竟说明了什么,特别是inputString[position]部分。我们是否在寻找第一个数字的位置/索引值,然后将循环分解为下面的打印语句?

jpp

我们是否在寻找第一个数字的位置/索引值,然后将循环分解为下面的打印语句?

是的,这是真的。它会中断,因为一旦找到一个数字,在下一次迭代while not found条件中就会给出while False和中断while循环。值得注意的是and短路,因此甚至不评估第二个条件。

如果未找到数字,则position递增直至等于len(inputString),此时while循环会通过第二个条件(即 )中断position < len(inputString)


编写while循环的一种更 Pythonic / 惯用的方法是通过for循环和enumerate

for idx, val in enumerate(inputString, 1):
    if val.isdigit():
        position = idx
        break
else:
    position = 0

if position:
    print('first digit is at position', position)
else:
    print('There are no digits in the string')

注意,在这个解决方案中,由于我们从 1 开始计数,我们可以利用这样一个事实,如果找到一个数字,它必须是“Truthy”,即非零。因此,我们不需要额外的found变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

跳过python for循环中的第一个值

跳过python中的for循环中的第一个条目?

在python中找到第一个数字是元组

python正则表达式,只返回第一个数字匹配

从Python中的字符串中仅获取第一个数字

Python按字符串中的第一个数字排序列表

在Python中保留小数点后的第一个数字

从第一个数字字符开始在Python中分割字符串

Python-仅提取第一个数字

在python中读取文件,不跳过第一个数字

提取文本直到达到第一个数字 - Python

在 Python 保龄球程序的 while 循环中输入一个数字

Python,Pandas:查找具有确切条件的第一个行索引

python数组中None之间的第一个和最后一个数字

在Python列表中查找某个值的第一个和最后一个索引

Python Selenium-webdriver:用于在整个循环中循环返回列表的第一个元素

Python:当第一个数组排序时,如何使第二个数组的索引匹配第一个数组的索引?

在for循环中引用两个序列,然后根据其条件更新第一个序列-python

第一个Python列表索引大于x?

Python:如何计算给定数字的各个部分的组合,给出数字,列表长度,第一个和最后一个数字

在python中查找单词的第一个实例

访问第一个元素后无法通过xpaths在循环中访问其余元素-WebScraping Selenium Python

python:在一个列表中查找索引,然后用第一个列表中索引的项目替换第二个列表

如何从存储在python数据框中的模式的字符串中提取第一个数字?

最有效的方法来获取Python中整数的第一个数字?

如何在python中捕获字符串中的第一个数字元素?

当尺寸不匹配时,将第一个数字添加到python列表中

如何使用python和regex获取字符串左侧的第一个数字?

如何在Python熊猫数据框中的NaN之间的序列中冻结第一个数字