"Force"用户输入并检查输入类型是否正确



我有一些函数调用用户输入,有时是字符串、int或其他什么。所以我注意到,如果在没有输入的情况下按下ENTER,我会得到一个错误。所以我做了一些研究,我想我发现EVAL功能可能是我想要的,但后来我又读到了它的危险性。

以下是我的问题:

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

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

我感谢您的反馈,

干杯

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

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

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

针对python3.3和python3.3的字符串方法对于其他版本的python,只需在页面顶部的菜单中选择一个适当的值。

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

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

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

最新更新