繁体   English   中英

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

[英]How to take user input and use the if else function to give outputs

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

有几个问题。

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)

尝试这个 :

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)

输入函数将返回一个字符串,而不管该字符串的内容如何。 字符串"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!")

问题是机器的输入将始终是字符串。 因此,即使您输入数字或浮点数,也将其视为字符串。 考虑以下使用正则表达式的代码,以识别您的字符串是否包含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") 

希望这可以帮助!

这部分工作,但您需要在引号下键入名称,否则您将收到错误消息,因为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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM