ValueError:使用 str.index 时未找到子字符串

Chi*_*moy 3 python string indexing

我是 python 的初学者,我正在尝试以下代码

input_number = raw_input("Please input the number:")
print type(input_number)
if(input_number.index('0')):
    print "Not Accepted"
else:
    print "Accepted"
Run Code Online (Sandbox Code Playgroud)

当我给出输入时,例如“1234506”,它显示“未接受”,这是有效的,但是当我给出“123456”时,它的抛出错误“未找到子字符串”。那么我如何打印 else 部分。

Tus*_*wal 7

当您输入 123456 或 1234506 时,python 会将其视为字符串。

现在,当您使用 string_object.index(substring) 时,它会在 string_object 中查找子字符串的出现(在您的情况下,子字符串为“0”)。如果存在“0”,则该方法返回子字符串所在的索引,否则将引发错误。

您可以改用以下内容:

if '0' in input_number :
    print 'not accepted'
else :
    print 'accepted'
Run Code Online (Sandbox Code Playgroud)


cs9*_*s95 5

str.index不匹配时出错。在这种情况下,您可以选择处理错误,或者使用str.find它返回 -1 和 之间的整数值len(input_number),或者对原始字符串进行集合成员资格测试。

选项1

转换为set查找:

if '0' not in set(input_number):
    print "Accepted"
else:
    print "Not accepted"
Run Code Online (Sandbox Code Playgroud)

选项 2

使用try...except处理ValueError

try:
    input_number.index('0')
    print "Not accepted"

except ValueError:
    print "Accepted"
Run Code Online (Sandbox Code Playgroud)

选项 3

使用str.find

if input_number.find('0') < 0:
    print "Accepted"
else:
    print "Not accepted"
Run Code Online (Sandbox Code Playgroud)