【问题标题】: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"
      

      【讨论】:

        猜你喜欢
        • 2018-10-09
        • 1970-01-01
        • 1970-01-01
        • 2017-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-02
        相关资源
        最近更新 更多