python:输入验证返回

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,那么你就必须抓到NameErrorSyntaxError(或者更多),而不是ValueError
  • 目前,您的if条件允许输入7位数字(1000000);此外,您还可以使用比较链接简化条件。
  • 不需要布尔变量;只需要循环中的breakreturn
  • 调用函数两次,只打印第二次调用的结果

你可以尝试这样的方法:

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