【问题标题】:python: input validation returnpython:输入验证返回
【发布时间】:2016-01-21 01:10:54
【问题描述】:

如果它是 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()

【问题讨论】:

    标签: python


    【解决方案1】:

    您的代码存在一些问题。

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

    你可以试试这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2012-04-17
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多