“强制”用户输入并检查输入类型是否正确

时间:2012-11-21 23:10:07

标签: types input python-3.x eval

我有一些函数要求用户输入,有时是string,int或者其他什么。所以我注意到,如果没有INPUT按下ENTER,我会收到一个错误。所以我做了一些研究,我想我发现EVAL功能可能正是我正在寻找的,但我再次读到它的危险。

所以这是我的问题:

  1. 如何检查/强制用户输入? EX:重复输入字符串,甚至警告用户他没有输入任何内容?

  2. 如何在不让我的脚本返回错误的情况下针对用户类型检查输入的正确类型(int,float,string等)?

  3. 感谢您的反馈,

    干杯

3 个答案:

答案 0 :(得分:2)

对于问题1:当提示输入空字符串时输入结果是否按下(你在脚本中使用input()吗?)。显然空字符串不是您的函数的有效输入。据我所知,无论你输入什么输入,你都会得到一个由input()返回的字符串。要检查字符串是否为空并重复提示,您可以尝试:

while True:
    answer = input('Enter something: ')
    if answer: break

对于问题2:为了检查所提供的参数类型,通常Pythonic方法是使用try / except处理它,而不是针对每个有效/无效类型显式检查。此外,在这种情况下,您必须从字符串进行显式手动转换,因此您只检查字符串的内容,而不是处理其他类型(至少尚未处理)。因为,你可能对字符串方法或re(正则表达式)模块感兴趣,以检查是否存在某个特定的子字符串。

re module for python3.3string methods for python3.3 对于其他版本的python,只需在页面顶部的菜单中选择一个合适的值即可。

答案 1 :(得分:0)

要回答问题的第二部分,您可以使用python中的isinstance()函数来检查变量是否属于某种类型。

答案 2 :(得分:0)

除非正确的类型,否则拒绝所有输入:

input_ = input('Enter some input: ')
try:
    input_ = int(input_) # or float(input_); str format is used with input() function by default
except ValueError: # can't convert
    pass # or some other friendly error message

为防止输入为空:

while True:
    input_ = input('Enter something: ')
    if input_: # if this value is not empty, for example None or ''
        break
pass # continue the program