算法在字符串中搜索数字,但在搜索应该结束后继续搜索 (python 3.8)

Algorithm searches for number in string, but then keeps searching after search should end (python 3.8)

我正在练习输入一个字符串,代码必须找到出现的第一个数字,然后打印该数字。

我有一个循环,首先检查是否有偶数位,第二个循环查找该数字的末尾。我的问题是第二个循环不知道什么时候停止。即使数字结束,它也会继续。

这是我拥有的所有相关代码:

s = str(input("Input a string: "))

# counter to find digit's index
i = 0
while i < len(s) and not s[i].isdigit():
    i += 1

# counter to find end of number's index
j = i
if i < len(s) and s[i].isdigit:
    # find end of number, if any
    while j < len(s) and s[j].isdigit:
        j += 1

# i and j now indicate the starting and ending index of the number
full_number = s[i:j]

如果我输入'hello 123 world',那么full_number 应该是'123',但实际上是returns'123世界'。我完全不知道为什么,因为“世界”不应该满足第二个循环的条件。

如有任何帮助,我们将不胜感激

您忘记在 isdigit() 上拨打 ()。因此,您的代码从不检查 i 之后的任何内容是否是数字,它只是迭代 += 1 每个元素,直到到达 len(s)

if i < len(s) and s[i].isdigit():
    # find end of number, if any
    while j < len(s) and s[j].isdigit():
        j += 1

根据您的情况,您正在检查 s[i].isdigits[j].isdigit 而不是 s[i].isdigit()s[j].isdigit()

isdigit 是一个函数,您必须调用它来验证值。