算法在字符串中搜索数字,但在搜索应该结束后继续搜索 (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].isdigit
和 s[j].isdigit
而不是 s[i].isdigit()
和 s[j].isdigit()
。
isdigit
是一个函数,您必须调用它来验证值。
我正在练习输入一个字符串,代码必须找到出现的第一个数字,然后打印该数字。
我有一个循环,首先检查是否有偶数位,第二个循环查找该数字的末尾。我的问题是第二个循环不知道什么时候停止。即使数字结束,它也会继续。
这是我拥有的所有相关代码:
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].isdigit
和 s[j].isdigit
而不是 s[i].isdigit()
和 s[j].isdigit()
。
isdigit
是一个函数,您必须调用它来验证值。