为什么input()的结果与我期望的结果不匹配?

时间:2012-05-15 23:10:45

标签: python python-3.x

代码运行。但出于某种原因,当我被提示进入Sam时,我会回来“你的名字不是Sam。”

name = ["Sam"]
print ("What is your name?")
name_choice = input("Type Here: ")

if name == "Sam":
   print ("Your name is Sam")
else:
   print ("Your name isn't Sam")

我在使用Python 3.2。任何帮助,将不胜感激。谢谢!

5 个答案:

答案 0 :(得分:3)

用户输入位于变量name_choice中,但您将name与“Sam”进行比较(因此用户输入从不使用)。

您还要将字符串与列表进行比较,这将始终为False

In [32]: name = ['Sam']

In [33]: 'Sam' == name
Out[33]: False

使程序始终显示“您的名字不是Sam”,无论用户输入了什么。

if name_choice == 'Sam':
   print ("Your name is Sam")
else:
   print ("Your name isn't Sam")

可能就是你想做的事情

答案 1 :(得分:2)

好的,我会咬人,这是一个稍微好一点的问题。你有两个主要问题。

  • 为什么要为名称分配仅包含"Sam"的列表?这意味着什么?
  • 然后,您将用户输入分配给变量name_choice,该变量永远不会被使用。

我不确定你的思维过程是什么 - 我认为它显示出非常明显缺乏对该语言的基本知识,我建议阅读a tutorial

值得注意的是,打印用户提示符然后使用"Type Here:"的实际提示是没有意义的。

答案 2 :(得分:1)

这是因为name == ["Sam"](您将其设置为与第一行中的相等)和"Sam" != ["Sam"]。您正在尝试将列表与字符串进行比较。

此外,您可能想要if name_choice == "Sam"

答案 3 :(得分:0)

我认为你应该在这里使用name_choice而不是name

if name == "Sam":
    print ("Your name is Sam")

无论如何,name变量意味着什么?

当发生类似情况时,提示是在if

之前打印您正在比较的内容

例如

print ("name ==", name)
if name == "Sam":
    print ("Your name is Sam")

这样就可以明显地将列表与字符串进行比较

答案 4 :(得分:0)

首先,不确定这是否是故意的,name = ["Sam"]创建一个字符串元素"Sam"的列表,它与字符串"Sam"

不同

然后将此列表与单个字符串进行比较,而不是将输入的值与字符串(或列表中的元素)进行比较