python-3.x 导致错误的原因(索引超出范围)

km0tfn4u  于 2022-11-19  发布在  Python
关注(0)|答案(2)|浏览(152)
def main():
    plate = input("Plate: ")
    if is_valid(plate):
        print("Valid")
    else:
        print("Invalid")

def is_valid(s):
    index = []
    for i in s:
        if i.isdigit():
            index += i
            break
    print(index)
    if 6 >= len(s) >= 2 and s[0:1].isalpha() and s.isupper() and index[0] != '0':
        return True
main()

在我添加index[0]!= '0'之前,代码运行得很好,但是在添加这段代码之后,当我输入“KEVIN”时,由于某种原因,弹出了一个错误(index out of range)。我如何在检查if语句中的代码要求的同时防止弹出这个错误?

xtfmy6hx

xtfmy6hx1#

一个较小的例子说明了这个问题

def is_valid(s):
    index = []
    for i in s:
        if i.isdigit():
            index += i
            break
    print(index)
    if 6 >= len(s) >= 2 and s[0:1].isalpha() and s.isupper() and index[0] != '0':
        return True

is_valid("KEVIN")

"KEVIN"不包含任何数字,i.isdigit()永远不是True,并且index列表保持为空。请为这种情况添加检查。

def is_valid(s):
    index = []
    for i in s:
        if i.isdigit():
            index += i
            break
    print(index)
    if (6 >= len(s) >= 2 and s[0:1].isalpha() and s.isupper() 
            and index and index[0] != '0'):
        return True
p5cysglq

p5cysglq2#

当字符串s没有数字时,代码不考虑边缘情况。在这种情况下,index将是空列表,index[0] != '0'将引发错误。请考虑添加一个条件来检查s的长度。

相关问题