2012-05-15 73 views
-6

代码运行。但由于某种原因,当我被提示进入山姆时,我回来了“你的名字不是山姆。”为什么input()的结果不符合我期望得到的结果?

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中工作。任何帮助,将不胜感激。谢谢!

回答

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

这将使它明显,你是一个列表进行比较的串

3

用户输入变量name_choice,但是你比较name为“萨姆”(使用户输入使用从未)。

而且你也比较字符串到一个列表,这将永远是False

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

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

导致程序总是显示“你的名字是不是山姆”,不管用户输入的内容。

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

可能是你想要做的

2

OK什么的,我会咬,这是一个稍微好一点的问题。这里有两个主要问题。

  • 你为什么要指定名​​称只包含"Sam"列表?这意味着什么?
  • 然后,将您的用户输入分配给永不使用的变量name_choice

我不确定你的思维过程在这里 - 我认为它显示了一种非常明显缺乏语言的基本知识,我建议阅读a tutorial

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

+0

任何原因,我得到了这个downvote? –

1

这是因为name == ["Sam"](您将它设置为等于第一行)和"Sam" != ["Sam"]。您正试图将列表与字符串进行比较。

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

0

首先,不知道这是故意的),name = ["Sam"]创建一个字符串元素"Sam",这是不一样的字符串列表"Sam"

然后你这个名单与一个字符串,而不是输入的值与一个字符串(或者列表中的一个元素)

相关问题