【问题标题】:How to return False if index is outside string? [duplicate]如果索引在字符串之外,如何返回 False? [复制]
【发布时间】:2021-01-11 16:30:22
【问题描述】:

我正在编写一个程序,它比较字符串中的两个索引,并根据索引是否具有相同的值返回 True 或 False。如果任何一个索引在字符串之外,它也应该返回 false,但我无法弄清楚如何在不收到错误消息的情况下继续前进。 到目前为止,这是我所拥有的:

def samat(jono,a,b):
    if jono[a] in jono and jono[b] in jono:
        return (jono[a]==jono[b])

if __name__ == "__main__":
    print(samat("koodari", 1, 2))

【问题讨论】:

    标签: python


    【解决方案1】:

    索引错误时可以捕获异常并返回False

    def samat(jono,a,b):
    
        # check if it the same value
        try: 
            return jono[a]==jono[b]
        except IndexError:
            return False
    

    输出:

    if __name__ == "__main__":
        print(samat("koodari", -69, 2)) # False
        print(samat("koodari", 420, 2)) # False
        print(samat("koodari", 1, 2)) # True
    

    【讨论】:

      【解决方案2】:

      这个答案假设非负索引。鉴于此,我们可以测试索引ab是否大于jono的长度并返回False,或者比较这些位置的字符,并返回结果。

      def samat(jono, a, b):
          if a >= len(jono) or b >= len(jono):
              return False
          return jono[a] == jono[b]
      
      if __name__ == "__main__":
          print(samat("koodari", 1, 2))
      

      或者,您可以使 samat 函数更短,正如用户 @tobias_k 建议的那样:

      def samat(jono, a, b):
          return 0 <= a < len(jono) and 0 <= b < len(jono) and jono[a] == jono[b]
      

      输出:

      True
      

      【讨论】:

      • return a &lt; len(jono) and b &lt; len(jono) and jono[a] == jono[b]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 2022-01-01
      • 2014-12-18
      • 2022-06-15
      • 2022-08-18
      相关资源
      最近更新 更多