Python用户输入的while循环

7
我有一个简单的小程序,但它无法正常工作。我希望程序不断询问用户我的名字,直到他们猜对为止。
在第一次尝试后,程序会抛出错误消息。我无法确定问题出在哪里。
name = "not_aneta"

while name != "aneta":
    name = input("What is my name? ")

if name == "aneta":
    print "You guessed my name!"

当我运行它时,出现一个错误信息:
Traceback (most recent call last):
  File "C:\Users\Aneta\Desktop\guess_my_name.py", line 4, in <module>
    name = input("What is my name? ")
  File "<string>", line 1, in <module>
NameError: name 'aneta' is not defined

2
你正在使用Python 2.X,需要使用raw_input。在Python 2.X中,input函数会对输入进行求值,因此当你想在name == "aneta"中使用它时,会引发NameError异常。 - Mazdak
2
如果你在使用Python2,那么请使用raw_input代替input - Ahsanul Haque
2个回答

11

你需要使用 raw_inputinput 会尝试将输入作为 Python 表达式运行,这不是你想要的),并解决缩进问题。

name = "not_aneta"

while name!= "aneta":
    name = raw_input("What is my name? ")

    if name == "aneta":
        print "You guessed my name!"

5
这里其实不需要使用 if。你可以将 print "You guessed my name!" 放在 while 循环外面。或者更明确一点,你可以使用 else,像这样: else: print "You guessed my name!" - Remi Guan

2

看起来你正在使用2.x版本,所以需要使用raw_input来处理字符串。

name = "not_aneta"

while name!= "aneta":
    name = raw_input("What is my name? ")

此外,if语句是相当无意义的,因为程序在用户猜对名称之前不会继续执行。所以你可以这样做:
name = "not_aneta"

while name!= "aneta":
    name = raw_input("What is my name? ")

print "You guessed my name!"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接