while循环.isdigit。为什么错误的功能'123'而不是'abc123'?

时间:2017-02-14 03:09:27

标签: python-3.x

为什么这样功能1执行但功能2返回错误? (Python 3.4)

功能1:

secret('abc123')

功能2:

secret('123')

代码:

def secret(s):
i = 0
result = ''

while s[i].isdigit():
    result = result + s[i]
    i = i + 1

return result

1 个答案:

答案 0 :(得分:0)

您没有发布您收到的错误消息,但我的猜测是因为您没有检查i以确保它没有超过字符串的长度。第一个例子是有效的,因为第一个字符不是数字,因此在它可以超出边界之前打破你的循环。将您的while更改为此:

while i<len(s) and s[i].isdigit():

这样可以确保i不会跳过字符串长度的范围。