在Python循环中找到第一位数索引?

时间:2018-10-17 15:11:09

标签: python loops while-loop digits

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

6 个答案:

答案 0 :(得分:1)

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

inputString[position]读取position在字符串中的位置。因此,如果您的字符串为abcdefg,则为inputString[2]= c(不是b,因为python从0开始计数。)

然后.isdigit()会检查此位置是否为数字。如果是数字,则found = True,while循环停止。 (否则它将继续。)

循环结束后,该函数将根据inputString中是否存在数字来打印两个消息之一。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

  

我们在寻找第一位数的位置/索引值吗?   然后将循环破坏到下面的打印语句中?

是的,是的。之所以中断,是因为一旦找到一个数字,在下一次迭代中,while not found条件将给出while False并中断while循环。值得注意的是and发生了短路,因此第二个条件甚至都没有评估。

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


编写while循环的一种更Python化/惯用的方法是通过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变量。

答案 3 :(得分:0)

inputString[position]给出输入字符串中位置的字符。例如,如果inputString =“ Foobar”且position = 3,则inputString [position] =“ b”。

当我们以这种方式找到一个数字时,found变为True,而while的评估条件变为False。该程序将退出循环并打印。

答案 4 :(得分:0)

收集所有可能数字的索引,如果列表不为空,则打印0索引,否则,如果列表为空,则打印no digits语句。

lst = [i for i, v in enumerate(s) if v.isdigit()]
if len(lst):
    print(f'First digit is at postion {lst[0]}')
else:
    print('There are no digits in the string.')

答案 5 :(得分:-1)

python中的字符串可以用作序列,这意味着您可以使用索引来访问其元素。例如: "Victor"[0]是V。

因此,在您的示例中,您正在检索字符串的元素(字符)之一。函数isdigit()是一个字符串方法,可以检查该字符是否为数字。

相关问题