在python提示后如何显示用户输入?

时间:2019-07-12 14:45:30

标签: python python-3.x

我目前正在用python编写一个基于文本的游戏,在该游戏中,根据对某些问题的回答,叙述的开头会有所不同。第一个问题很简单,一个名字。提示后,我似乎无法在正确的文本选项中显示输入。

我尝试使用

“如果名称为True”

“如果名称为str”

但是它们都跳到else选项,而不是在输入后显示正确的选项。

while True:
    try:
        # This will query for first user input, Name.

        name = str(input("Please enter your name: "))
    except ValueError:
        print("Sorry, I didn't understand that.")

        # No valid input will restart loop.

        continue
    else:

        break

if name is str:
    print("Ah, so " + name + " is your name? Excellent.")
else:
    print("No name? That's fine, I suppose.")

因此,如果我输入John作为我的名字,我希望输出为“ Ah,John是你的名字吗?太好了。”

但是相反,我输入John并输出:

请输入您的姓名:John

没有名字?我想那很好。

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:-1)

不需要input周围的异常处理,因为input函数始终返回一个字符串。如果用户未输入值,则返回空字符串。

因此您的代码可以简化为

name = input("Please enter your name: ")

# In python an empty string is considered `False` allowing 
# you to use an if statement like this.
if name:
    print("Ah, so " + name + " is your name? Excellent.")
else:
    print("No name? That's fine, I suppose.")

进一步使用is

is用于比较身份,因为两个变量引用同一对象。更常见的用途是测试变量是否为None,例如if name is NoneNone始终是同一对象)。如前所述,您可以使用type(name)来获取变量 name 的类型,但是不建议使用此变量代替内置检查isinstance

另一方面,

==比较等于if name == "Dave"的相等性。

isinstance不仅可以检查特定类型,还可以处理继承的类型。

答案 1 :(得分:-1)

问题是您要检查name是否为str,而不是type(name)是否为str。

  if type(name) is str:

答案 2 :(得分:-1)

使用isinstance代替is。 而且,您不需要使用str(input()),因为input返回str

while True:
    try:
        # This will query for first user input, Name.
        name = input("Please enter your name: ")
    except ValueError:
        print("Sorry, I didn't understand that.")
        # No valid input will restart loop.
        continue
    else:
        break

if isinstance(name, str):
    print("Ah, so " + name + " is your name? Excellent.")
else:
    print("No name? That's fine, I suppose.")

结果是:

Please enter your name: John
Ah, so John is your name? Excellent.

但是,如果要检查string.isalpha()是否是由字母组成的实名,则必须使用name

if name.isalpha():
    print("Ah, so " + name + " is your name? Excellent.")
else:
    print("No name? That's fine, I suppose.")