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变量。

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

TA贡献1876条经验 获得超5个赞
您正在寻找inputString
位置的 值,position
。position
首先初始化为零,然后while循环每个位置(注意position += 1
)以查看它是否.isdigit()
.
添加回答
举报