输入验证python 2.7.13

时间:2017-03-03 17:56:56

标签: python-2.7

我正在尝试验证进入列表的输入。输入必须是整数。如果我输入一个整数或一个字母,我怎么工作。但如果我输入'qw'这样的程序,程序会崩溃。我该怎么做才能更好地验证输入?这是我的代码:

def getPints(pints):
    counter = 0
    while counter < 7:
        pints[counter] = raw_input("Enter the number of pints donated: ")
        check = isinstance(pints[counter], int)
        while check == False:
            print "Please enter an integer!"
            pints[counter] = input("Enter the number of pints donated: ")
        counter = counter + 1

1 个答案:

答案 0 :(得分:0)

如上所述,check将始终评估为False,因为raw_input()仅返回字符串,而不是整数。然后,您将陷入无限while循环,因为您不会在其中更新check

使用字符串isdigit()方法而不是isinstance

check = pints[counter].isdigit()

您还需要在循环内重新评估check。但实际上,您根本不需要check

pints[counter] = raw_input("Enter the number of pints donated: ")
while not pints[counter].isdigit():
    print "Please enter an integer!"
    pints[counter] = raw_input("Enter the number of pints donated: ")

我怀疑你一旦有了合适的输入,你也想把pints[counter]转换成一个int。

您正在使用LBYL方法(Look Before You Leap)。您还可以使用EAFP(更容易请求宽恕而不是权限)方法,只需尝试将输入转换为int并在输入错误时捕获异常:

while True:
    try:
        pints[counter] = int(raw_input("Enter the number of pints donated: "))
        break
    except ValueError:
        print "Please enter an integer!"