python:输入验证返回

时间:2015-10-21 21:19:50

标签: python

我试图返回数字,如果它是INT和数字之间,当你输入一个字母时会发生错误。您还必须输入两次正确的值才能获得输入:

  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()

`

将输入更改为raw_input,如果有人输入了一封信,它现在可以正常工作。但是当我输入正确的输入时,它将继续循环:

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()

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题。

  • 可以只使用input来评估所输入的任何内容,但这很危险;更好地使用raw_input来获取字符串并尝试将该字符串强制转换为int显式
  • 另外,如果您使用的是input,那么您必须抓住NameErrorSyntaxError(可能还有更多)而不是{{ 1}}
  • 目前,您的ValueError条件允许输入7位数字(1000000);此外,您可以使用比较链来简化条件
  • 不需要布尔变量;来自循环的ifbreak
  • 您两次调用您的函数,并仅打印第二次调用的结果

您可以尝试这样的事情:

return