如何获取用户输入并使用if else函数提供输出

时间:2019-07-18 12:59:43

标签: python python-3.x

我正在尝试接受用户输入,并使用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")

5 个答案:

答案 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")