-6

代码运行。但是由于某种原因,当我被提示输入 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。任何帮助,将不胜感激。谢谢!

4

5 回答 5

3

用户输入位于 variable 中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")

可能是你想做的

于 2012-05-15T23:13:10.747 回答
2

好的,我会咬一口,这是一个稍微好一点的问题。您在这里有两个主要问题。

  • 为什么要为 name 分配一个仅包含 的列表"Sam"?这是为了达到什么目的?
  • 然后,您将用户输入分配给变量name_choice,该变量永远不会被使用。

我不太确定你的思维过程是什么——我认为这表明非常明显缺乏该语言的基本知识,我建议阅读教程

还值得注意的是,打印用户提示,然后将实际提示用于"Type Here:".

于 2012-05-15T23:13:45.413 回答
1

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

另外,您可能想要做if name_choice == "Sam".

于 2012-05-15T23:14:06.190 回答
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")

这将表明您正在将列表与字符串进行比较

于 2012-05-15T23:15:20.323 回答
0

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

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

于 2012-05-15T23:15:30.167 回答