Python 如果索引在字符串之外,如何返回False?

Python 如果索引在字符串之外,如何返回False?,python,Python,我正在编写一个程序,比较字符串中的两个索引,并根据索引是否具有相同的值返回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__":

我正在编写一个程序,比较字符串中的两个索引,并根据索引是否具有相同的值返回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))


当索引出现错误时,可以捕获异常并返回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

当索引出现错误时,可以捕获异常并返回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

这个答案假设索引为非负。考虑到这一事实,我们可以测试索引a和b是否大于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))
或者,您可以按照user@tobias_k的建议,将samat函数缩短:

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

这个答案假设索引为非负。考虑到这一事实,我们可以测试索引a和b是否大于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))
或者,您可以按照user@tobias_k的建议,将samat函数缩短:

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