【问题标题】:ValueError: Substring not found when using str.indexValueError:使用 str.index 时未找到子字符串
【发布时间】:2017-08-31 07:11:57
【问题描述】:
我是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 部分。
【问题讨论】:
标签:
python
string
indexing
【解决方案1】:
当你输入 123456 或 1234506 时,python 将其视为字符串。
现在,当您使用 string_object.index(substring) 时,它会在 string_object 中查找子字符串(在您的情况下,子字符串为 '0')的出现。如果存在 '0',则该方法返回子字符串存在的索引,否则,它会引发错误。
您可以改用以下内容:
if '0' in input_number :
print 'not accepted'
else :
print 'accepted'
【解决方案2】:
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"