Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于检查输入是否具有int、float或bool的Python程序_Python_String_Python 3.x_Input - Fatal编程技术网

用于检查输入是否具有int、float或bool的Python程序

用于检查输入是否具有int、float或bool的Python程序,python,string,python-3.x,input,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 nam

因此,我试图在这里制作一个程序,它要求输入,然后检查输入是否有整数、布尔或浮点,如果它有这些字符中的任何一个,它将再次要求输入。我想这样做,而不是仅仅写
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

如果您能提供帮助,请回复。

您似乎只想检查您的姓名是否包含字母数字字符和可能的空格。您可以通过按空格分割后的
str.isalpha
实现这一点

请记住,
input
始终返回字符串,因此需要使用字符串方法验证用户输入。您可以使用
if not x
作为附加验证来检查空字符串。使用
type
isinstance
是不合适的

此外,您需要在
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

尝试使用
ast.literal\u 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, '!')

“检查输入是否有整数、布尔值或浮点值”实际上并不意味着什么
input
始终返回一个字符串,而字符串不“具有整数布尔值或浮点值”,它只包含字符、句点。您必须根据这一事实(哪些字符集/序列是允许的或不允许的),重新考虑和改写您的规范,然后才能编写正确的验证代码

我认为您是在寻找而不是将值与类型进行比较。另外,
input
无论如何都会返回一个字符串。一个完全无用的
else:pass
和一个裸露的
except
子句?提交此类代码的人将立即被我的团队解雇…@Brunodesshuilliers哦,是的,你是对的,我编辑了我的回答,除了裸露的除外条款。我们都在做假设。但是如果某人的名字是“真的”怎么办。不太可能,是的。但只是指出这可能不是OP想要做的。