您如何专门检测整数输入,同时检查某物的输入是否为空?[复制]

How do you detect specifically an integer input but also check to see if the input to something is blank? [duplicate]

提问人:mxrgan 提问时间:2/27/2023 最后编辑:Karl Knechtelmxrgan 更新时间:2/27/2023 访问量:55

问:

我想知道是否可以让输入变量查找整数输入,但也能够检测用户是否没有输入。我想制作一个简单的应用程序,用户从编号列表中选择一个选项,并希望程序在用户将输入区域留空时默认为第一个选项。

我目前有一个 try 循环,它不断要求用户输入一个整数作为输入,这样写成:

def inputNum():
    while True:
        try:
            userInput = int(input())
        except ValueError:
            print("Input is not an integer");
            continue
        except EOFError:
            return ""
            break
        else:
            return userInput
            break


selection = inputNum()

我有一种感觉,这其中的一部分是完全错误的,但我希望每个人都能理解事情的要点,并能帮助提供有用的反馈和答案。

python-3.x 列表 输入

评论

0赞 Shorn 2/27/2023
如果不立即强制转换为 ,则可以用 检查它是否为空。类似地,您可以检查它是否是带有字符串的整数,所以 .以您的方式执行 try/catch 也可用于检查它是否为整数,尽管它可能会导致意外效果。userInputintuserInput == "".isdigit()userInput.isdigit()
0赞 mxrgan 2/27/2023
@Shorn,那么 会检测到空输入吗?.isdigit()
0赞 Karl Knechtel 2/27/2023
除此之外:这里的主要问题是空输入不会导致 .它会导致字符串何时被解释为 Python 代码,例如使用 或(此处不要使用此类工具)。一旦你明白了如何检查一个空字符串,就不再是一个有意义的问题了;所以我关闭了它作为规范的副本,用于如何检查空字符串。EOFErrorintEOFErrorevalexec
0赞 mxrgan 2/27/2023
好的,我刚刚检查了这个主题,发现 EOFError 是一种方法,所以感谢您让我对此有更多的了解。我确实相信这足以不同,不会被骗,但我确实从其他人那里得到了很好的答案和一些体面的信息,所以我对此感觉很好。有一个美好的白天/夜晚。
0赞 Shorn 2/28/2023
如果你问的是,@mxrgan回来了。如果你想专门检查一个字符串是否为空,这样做就可以了。"".isdigit()FalseuserInput == ""

答:

0赞 mozway 2/27/2023 #1

请求输入时不要转换为整数。将输入请求拆分为 2 个步骤:

def inputNum():
    while True:
        userInput = input().strip()
        if not userInput:
            print('Input is empty')
            continue
        try:
            userInput = int(userInput)
        except ValueError:
            print("Input is not an integer");
            continue
        return userInput

selection = inputNum()

例:

 
Input is empty
 abc
Input is not an integer
 123

输出:123