繁体   English   中英

python:输入验证返回

[英]python: input validation return

我试图返回一个数字,如果它是一个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()

您的代码有一些问题。

  • 可以只使用input来评估unser输入的内容,但这很危险; 最好使用raw_input获取一个字符串,然后尝试将该字符串显式转换为int
  • 另外, 如果您使用input ,那么您必须捕获NameErrorSyntaxError (可能还有更多)而不是ValueError
  • 当前,您的if条件将允许输入7位数字(1000000); 另外,您可以使用比较链接简化条件
  • 不需要布尔变量; 只是break或从循环return
  • 您两次调用函数,并且仅打印第二次调用的结果

您可以尝试这样的事情:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM