我正在尝试接受用户输入,并使用if else函数将结果作为基础。
此输入为名称,如果为字符串,则输出应为文本'What a beautiful name you have'
,如果为int或float,则输出应为'Sorry , please enter a name'
。但是,如果输入int或str,则两个输出均为'What a beautiful name you have'
。我该怎么办?这是我的代码:
name = input("What is your name?")
if type(input) is str:
print("What a beautiful name you have!")
elif type(input) is int or float:
print("Sorry, enter a proper name")
答案 0 :(得分:3)
有几个问题。
1)您使用input
作为type
参数-> elif type(input)...
。您应该使用name
。
2)input()
始终返回str
。您必须键入将其投射到所需的位置。
3)elif type(input) is int or float
并没有您认为的那样。这等效于elif (type(input) is int) or float
,因此它将始终为True
,因为float
是Truthy。您需要执行elif type(name) is int or type(name) is float
。
4)您不应使用type(...)
进行比较,而应使用isinstance(name, str)
。
答案 1 :(得分:2)
尝试一下:
name = input("What is your name?")
if all(x.isalpha() or x.isspace() for x in name):
print("What a beautiful name you have!")
else:
print("Sorry, enter a proper name")
注意:name
始终为字符串格式。如果要检查name
中是否有数字,则可以执行以下操作:any(i.isnumeric() for i in name)
答案 2 :(得分:1)
input function返回一个字符串,而不管该字符串的内容如何。字符串"1"
仍然是字符串。
您可能想做的是检查字符串是否可以正确地转换为数字:
s = input("what is your name?")
try:
float(s)
print("Sorry, enter a proper name")
except ValueError:
print("What a beautiful name you have!")
答案 3 :(得分:1)
问题是来自机器的输入将始终是字符串。因此,即使您输入数字或浮点数,也将其视为字符串。考虑以下使用正则表达式的代码,以识别您的字符串是否包含int / float:
import re
name = input("What is your name?")
if re.match('[0-9]', name):
print("Sorry enter a proper name")
else:
print("What a beautiful name")
希望这会有所帮助!
答案 4 :(得分:0)
这部分工作,但是您需要在引号下键入名称,否则会出现错误,因为python正在寻找变量名。如果将整数写在引号内,则它们将被视为str,但如果不是,则代码将完成其工作。 TBH在不放弃技巧的情况下,我看不到可行的解决方案。
x = eval(input("What is your name? "))
if isinstance(x, str):
print ("What a beautiful name you have!")
else:
print ("Sorry, enter a proper name")