Если это ответ, вернуться на предыдущую строку

В настоящее время я изучаю Python, и мне было интересно кое-что. Я пишу небольшую текстовую приключенческую игру, и мне нужна помощь в этом: если я напишу, например,

example = input("Blah blah blah: ")
if example <= 20 and > 10:
    decision = raw_input("Are you sure this is your answer?: ")

какие функции я могу написать, чтобы "example = input("Blah blah blah:")" запускался снова? Если пользователь говорит «нет» на «decision = raw_input («Вы уверены, что это ваш ответ?:»)».

Извините, если я вас всех запутал. Я немного новичок в Python и вообще в программировании.


person MalyG    schedule 09.12.2012    source источник
comment
Правильный синтаксис для этого условия — 10 < example <= 20.   -  person kennytm    schedule 09.12.2012


Ответы (2)


Вы ищете цикл while:

decision = "no"
while decision.lower() == "no":
    example = input("Blah blah blah: ")
    if 10 < example <= 20:
        decision = raw_input("Are you sure this is your answer?: ")

Цикл многократно запускает блок кода до тех пор, пока условие не перестанет выполняться.

Мы устанавливаем решение в начале, чтобы убедиться, что оно выполняется хотя бы один раз. Очевидно, вы можете сделать проверку лучше, чем decision.lower() == "no".

Также обратите внимание на редактирование вашего условия, так как if example <= 20 and > 10: не имеет синтаксического смысла (что больше 10?). Вероятно, вы хотели if example <= 20 and example > 10:, которое можно сократить до 10 < example <= 20.

person Gareth Latty    schedule 09.12.2012
comment
Спасибо, это очень помогло! - person MalyG; 09.12.2012

Вы можете использовать функцию, которая вызывает себя до тех пор, пока ввод не будет действительным:

def test():
   example = input("Blah blah blah: ")
   if example in range(10, 21): # if it is between 10 and 20; second argument is exclusive
      decision = raw_input("Are you sure this is your answer?: ")
      if decision == 'yes' or desicion == 'Yes':
         # code on what to do
      else: test()
   else: # it will keep calling this until the input becomes valid
      print "Invalid input. Try again."
      test()
person Rushy Panchal    schedule 09.12.2012
comment
Это все еще способ добиться того, чего он хочет :) - person Rushy Panchal; 10.12.2012
comment
Возможно, но чрезмерное усложнение является плохой практикой и приводит к ненужным ограничениям (таким как максимальная глубина рекурсии). - person Thijs van Dien; 10.12.2012