python: input validation return
我试图返回一个整数,如果它是一个整数,那么当你输入一个字母时就会出现一个错误。此外,您还必须输入正确的值两次才能获得输入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | def get_number(): b = False while b == False: try: n = (input('Please enter a 6 digit number')) except ValueError: continue if n >= 100000 and n <= 1000000: b = True break return n if __name__ == '__main__': get_number() print get_number() |
`
将输入更改为原始输入,现在如果有人输入字母,它就会工作。但是,当我输入正确的输入时,它将继续循环:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | def get_number(): b = False while b == False: try: n = (raw_input('Please enter a 6 digit number')) except ValueError: continue if n >= 100000 and n <= 1000000: b = True break return n if __name__ == '__main__': get_number() print get_number() |
号
您的代码有一些问题。
- 您可以使用
input 来评估unser输入的内容,但这很危险;最好使用raw_input 来获取字符串,并尝试将该字符串显式转换为int 。 - 另外,如果你使用的是
input ,那么你就必须抓到NameError 和SyntaxError (或者更多),而不是ValueError 。 - 目前,您的
if 条件允许输入7位数字(1000000);此外,您还可以使用比较链接简化条件。 - 不需要布尔变量;只需要循环中的
break 或return - 调用函数两次,只打印第二次调用的结果
你可以尝试这样的方法:
1 2 3 4 5 6 7 8 9 10 11 | def get_number(): while True: try: n = int(raw_input('Please enter a 6 digit number ')) if 100000 <= n < 1000000: return n except ValueError: continue if __name__ == '__main__': print get_number() |