2015-10-29 3 views
1

У меня есть эта простая небольшая программа, которая не работает. Я хочу, чтобы программа продолжала спрашивать пользователя о моем имени, пока они не догадаются.Python while loop with user input

Программа выдает сообщение об ошибке после первой попытки. Я не могу решить, где проблема.

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'.The input' функция в Python 2.x будет оцениваться вход, так что подняли 'NameError' когда вы хотели использовать его в 'name ==" aneta "' – Kasramvd

+2

Используйте 'raw_input' вместо' input', если вы используете python2 –

ответ

5

Вы должны использовать raw_input (input пытается запустить ввод как выражение питона, и это не то, что вы хотите) и исправить проблема с отступом.

name = "not_aneta" 

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

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

На самом деле нам не нужно 'if' здесь. Вы можете поместить 'print ', вы догадались мое имя!" 'Вне цикла while. Или для более ясного, вы можете использовать 'else' как' else: print "Вы догадались мое имя!". –

1

кажется, что ваш используете 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!"