因此,我尝试在此处制作一个要求输入的程序,然后检查输入是否具有整数,布尔值或浮点数,并且如果具有这些字符中的任何字符,则它将再次要求输入。我想这样做,而不是像用户输入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
如果可以帮助您,请回复。
答案 0 :(得分:2)
您似乎想检查自己的名字只包含字母数字字符和可能的空格。在按空格分割后,您可以通过str.isalpha
来实现此目的。
请记住,input
总是返回一个字符串,因此您需要使用字符串方法来验证用户输入。您可以使用if not x
作为其他验证来检查空字符串。使用type
或isinstance
是不合适的。
此外,您需要在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, '!')