在 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]部分。我们是否在寻找第一个数字的位置/索引值,然后将循环分解为下面的打印语句?


达令说
浏览 290回答 3
3回答

千巷猫影

我们是否在寻找第一个数字的位置/索引值,然后将循环分解为下面的打印语句?是的,这是真的。它会中断,因为一旦找到一个数字,在下一次迭代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):&nbsp; &nbsp; if val.isdigit():&nbsp; &nbsp; &nbsp; &nbsp; position = idx&nbsp; &nbsp; &nbsp; &nbsp; breakelse:&nbsp; &nbsp; position = 0if position:&nbsp; &nbsp; print('first digit is at position', position)else:&nbsp; &nbsp; print('There are no digits in the string')注意,在这个解决方案中,由于我们从 1 开始计数,我们可以利用这样一个事实,如果找到一个数字,它必须是“Truthy”,即非零。因此,我们不需要额外的found变量。

慕无忌1623718

这position是您的迭代变量,就像在for循环中一样。因此,每次找不到数字时,都会转到字符串中的下一个字符。TheinputString[position]读取什么代表position's 在字符串中的位置。所以,如果你的字符串abcdefg,然后inputString[2]= c(不是b因为Python从0开始计数)。在.isdigit()随后看,如果在此位置是一个数字。如果是数字,则found = Truewhile循环停止。(否则它继续。)循环结束后,该函数会根据 .csv 文件中是否有数字来打印两条消息之一inputString。

慕运维8079593

您正在寻找inputString位置的 值,position。position首先初始化为零,然后while循环每个位置(注意position += 1)以查看它是否.isdigit().
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python