用于检查输入是否具有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想要做的。