检查输入是否为int,float或bool的Python程序

时间:2018-06-23 10:02:38

标签: python string python-3.x input

因此,我尝试在此处制作一个要求输入的程序,然后检查输入是否具有整数,布尔值或浮点数,并且如果具有这些字符中的任何字符,则它将再次要求输入。我想这样做,而不是像用户输入str(input())int一样写bool,它会打印错误并停止程序。

这是我目前所拥有的,但是它不起作用:

x=input('Enter your name: ')
while True:
    if x==int or x==bool or x==float:
       print('error, incorrect name please try again!')
    else:
       print('Nice name', x, '!')
       break

如果可以帮助您,请回复。

3 个答案:

答案 0 :(得分:2)

您似乎想检查自己的名字只包含字母数字字符和可能的空格。在按空格分割后,您可以通过str.isalpha来实现此目的。

请记住,input 总是返回一个字符串,因此您需要使用字符串方法来验证用户输入。您可以使用if not x作为其他验证来检查空字符串。使用typeisinstance是不合适的。

此外,您需要在input循环中包含while,以便用户能够重新输入名称。这是一个示例:

while True:
    x = input('Enter your name: ')
    if (not x) or (not all(i.isalpha() for i in x.split())):
        print('Error, incorrect name please try again!')
    else:
        print('Nice name', x, '!')
        break

答案 1 :(得分:0)

“检查输入是否具有整数,布尔值或浮点数” 并没有任何意义。 input始终返回一个字符串,并且字符串不“具有整数布尔值或浮点数”,它仅包含字符,句点。您必须基于这个事实(允许或不允许使用字符集/字符序列)重新考虑和重新定义规格,以接受输入,然后才可以编写正确的验证码。

答案 2 :(得分:-2)

尝试使用ast.literal_eval

import ast
x = input('Enter your name: ')
try:
   if type(ast.literal_eval(x)) in (bool,float,int):
      print('Error, incorrect name please try again!')

except:
   print('Nice name', x, '!')