2013-12-18 12 views
0

У меня есть функция как часть игры для учебника. Функция вопрос должен вызывать другую функцию, если выполняется условие (если theobject == «код»)Функция не звонит другая функция

# right room 
def right_room(): 
    print "You see a table with two objects: a map and a code translator" 
    print "You can take one object" 
    print "Which object do you take?" 

    next = raw_input("> ") 

    if "map" in next and "code" in next: 
     dead("You're greed surpassed your wisdom.") 
    elif "map" in next: 
     print "OK, you have the map." 
     theobject = "map" 
     print "Now you must exit and go ahead" 
     return theobject 
     opening() 

    elif "code" in next: 
     print "OK, you have the code." 
     theobject = "code" 
     print "Now you must exit and go ahead." 
     return theobject 
     opening() 

Но открытие не называют? Вот вывод:

Вы находитесь в Лабринте. С левой стороны дверь. Там есть дверь на справа. Или вы можете идти вперед.

right Вы видите таблицу с двумя объектами: карту и переводчик кода. Вы можете взять один объект. Какой объект вы берете? код ОК, у вас есть код. Теперь вы должны выйти и идти вперед.

функция выше, то имел в виду, чтобы отправить человека обратно в начало и намеки на них, чтобы ввести «вперед» в терминале:

# opening scene 
def opening(): 
    print "You're in a Labrynthe." 
    print "There's a door on your left." 
    print "There's a door on your right." 
    print "Or you can go ahead." 

    next = raw_input("> ") 

    if "right" in next: 
     right_room() 
    elif "left" in next: 
     left_room() 
    elif "ahead" in next: 
     ahead() 
    else: 
     print "Which way will you go?" 

Но открытие() не вызывается. Вместо этого Python, похоже, завершает сценарий и выходит.

+4

Вы используете 'return' перед вызовом этой функции ... ничего после возврата не выполняется. – Jeribo

+1

' next' - встроенная функция в python. Вы можете переименовать свою переменную в нечто другое ('next_' является жизнеспособной альтернативой) – SethMMorton

ответ

2

Оператор return в Python (и почти все языки - заметное исключение Haskell -) означает, что функция должна остановить. Если оператор равен return expr, тогда значение выражения доступно для вызывающего. В противном случае в Python для вызывающего абонента доступно значение None.

Поэтому вам может потребоваться переместить вызов функции непосредственно перед оператором return.

+0

Спасибо, что отсортировал его. Принятие, когда таймер отрывается –

Смежные вопросы