为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

达令说 2021-07-09 14:15:46
found = Falseposition = 0while not found and position < len(inputString):    if inputString[position].isdigit():        found = True    else:        position += 1if 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]部分。我们是否在寻找第一个数字的位置/索引值,然后将循环分解为下面的打印语句?
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

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


是的,这是真的。它会中断,因为一旦找到一个数字,在下一次迭代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变量。


查看完整回答
反对 回复 2021-07-21
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

position是您的迭代变量,就像在for循环中一样。因此,每次找不到数字时,都会转到字符串中的下一个字符。

TheinputString[position]读取什么代表position's 在字符串中的位置。所以,如果你的字符串abcdefg,然后inputString[2]= c(不是b因为Python从0开始计数)。

.isdigit()随后看,如果在此位置是一个数字。如果是数字,则found = Truewhile循环停止。(否则它继续。)

循环结束后,该函数会根据 .csv 文件中是否有数字来打印两条消息之一inputString


查看完整回答
反对 回复 2021-07-21
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您正在寻找inputString位置的 值,positionposition首先初始化为零,然后while循环每个位置(注意position += 1)以查看它是否.isdigit().


查看完整回答
反对 回复 2021-07-21
  • 3 回答
  • 0 关注
  • 289 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号