У меня есть следующий код:код зацикливается снова и снова
def begin_game():
print "You landed on planet and see three rooms."
door = int(raw_input("Pick number of door>>>"))
print "You approach and see that you need to enter password..."
password = raw_input("Enter your surname>>>")
if door == 1:
medical_room()
if door == 2:
library()
if door == 3:
basement()
else:
print "No room exists"
begin_game()
begin_game()
Когда я вхожу door
номер, я получаю medical_room
функции сделана, но затем выполняются другое заявление и код начинается снова снова и снова.
Мой вопрос в том, почему выполняется инструкция else? Должен ли он останавливаться на if, выполнять внутри блока и останавливаться?
В качестве примечания, вы вообще не хотите позвонить ваша функция снова похожа на петлю назад. Таким образом, у вас есть потенциально бесконечная рекурсия. Каждый раз, когда вы вызываете функцию без возврата, вы строите уровень уровня 1 выше, а когда он достигает 1000 уровней, он прекращает свое существование с исключением. Лучший способ сделать это состоит в том, чтобы поместить всю функцию внутри цикла while while: и иметь случаи без ошибок 'break' или' return' (например, 'if door == 1: return medical_room()' , и т.д.). – abarnert