2014-12-07 4 views
0

Я начинаю на питоне. Я продолжаю получать сообщение об ошибке, когда добавляю новый raw_input внутри оператора if. Если вход, на который они отвечают, неверен, я хочу дать им еще один шанс ввести больше ввода, есть ли другой способ сделать это?Python: Raw_Input внутри оператора if?

Heres Кодекс

attraction = { 
    'approach' : "words", 
    'introduction' : "words", 
    'qualification' : "words", 
    'rapport' : "words" 
} 

answer = raw_input("Pick from these approaches: introduction, qualification, or rapport:") 

if answer != "approach" and answer != "introduction" and answer != "qualification" and answer != "rapport": 
    new_answer = raw_input("You didn't choose one of the choices, type in the choice you want again:") 
if new_answer != "approach" and answer != "introduction" and answer != "qualification" and answer != "rapport": 
    print "That was your last chance buddy" 
else: 
    print attraction[answer] 
+0

поставил необработанный ввод в цикле. Используйте break, если у вас есть ответ –

+0

Какая ошибка? – nkobber

+0

Я знаю, что это не связанный с этим вопрос, но могу ли я спросить, почему вы начали изучать Python 2.7? Почему бы не Python 3? – yeyo

ответ

2

Вам не нужно, чтобы сделать новую переменную new_answer когда вы просите их во второй раз, вы можете просто установить answer новое значение:

answer = raw_input("You didn't choose one of the choices, type in the choice you want again:") 

И замените new_answer на answer в других местах вашей программы.

Я хотел бы сделать программу, как это, используя метод .keys():

attraction = { 
    'approach' : "words", 
    'introduction' : "words", 
    'qualification' : "words", 
    'rapport' : "words" 
} 

answer = raw_input("Pick from these approaches: introduction, qualification, or rapport:") 

while not answer in attraction.keys(): 
    answer = raw_input("You didn't choose one of the choices, type in the choice you want again:") 

print attraction[answer] 
+0

вам даже не нужно использовать '.keys()'. По определению словарь итерации по его клавишам - так что вы можете просто использовать 'while not answer at Attach:' –

+0

И это то, что я получаю от того, что на самом деле не выполняю код в своем ответе. – javanut13

+0

@PeterWood Обратите внимание, что in-loop 'raw_input' имеет другое приглашение, чем исходное. – kevinsa5

0

Вы можете просто написать:

while True: 
    answer = raw_input("Pick from these approaches: introduction, qualification, or rapport:") 
    if answer == "approach" or answer == "introduction" or answer == "qualification" or answer == "rapport": 
     break 
Смежные вопросы