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 部分。
当您输入 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)
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)