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

Python ValueError:使用str.index时未找到子字符串,python,string,indexing,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" 当我输入例如“1234506”时,其显示“未接受”,这是有效的,但当我输入“123456”时,其抛出错误“未找到子字符串”。 因此,如

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

input_number = raw_input("Please input the number:")
print type(input_number)
if(input_number.index('0')):
    print "Not Accepted"
else:
    print "Accepted"
当我输入例如“1234506”时,其显示“未接受”,这是有效的,但当我输入“123456”时,其抛出错误“未找到子字符串”。
因此,如何打印else部分。

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

选项1

转换到
set
查找:

if '0' not in set(input_number):
    print "Accepted"
else:
    print "Not accepted"

选项2

使用
try…except
处理
ValueError

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

except ValueError:
    print "Accepted"

选项3

使用
str.find

if input_number.find('0') < 0:
    print "Accepted"
else:
    print "Not accepted"
if input_number.find('0')<0:
打印“已接受”
其他:
打印“不接受”

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

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

您可以改为使用以下选项:

if '0' in input_number :
    print 'not accepted'
else :
    print 'accepted'