PYTHON: как создать функцию для получения входных данных переменной, а затем отправить ее в другую функцию - PullRequest
3 голосов
/ 26 марта 2011

Я использую Learn Python на нелегком пути и учу 35 дополнительных кредитов, чтобы упростить. Я хотел бы создать функцию, которая будет запрашивать у пользователя переменную next и затем возвращать ее другим функциям.

на случай, если я не буду иметь смысла ...

    def action():
        next = raw_input (">> ")
        return next

    def start():
    print"""
You are in a dark room.
There is a door to your right and left.
Which one do you take?"""

    action()

    if next == "left":
        bear_room()
    elif next == "right":
        cthulu_room()
    else:
        dead("You stumble around the room until you starve.")

когда я запускаю его таким образом, он всегда выдает следующий, как иначе.

Ответы [ 3 ]

2 голосов
/ 26 марта 2011

Вам нужно где-то хранить возвращаемое значение функции; как только он выходит, все маленькое пространство с отступами под функцией исчезает вместе с переменной next. Я думаю, что вы действительно хотите:

next = action()

Таким образом, с уничтоженным небольшим пространством имен функции у вас все равно будет копия next на верхнем уровне вашей программы.

Если эта особенность Python звучит излишне деструктивно, поверьте мне: гораздо сложнее управлять сложными программами, если вы можете рассчитывать на то, что каждая функция - это ее собственный маленький мир, который не вносит глобальных изменений в переменные, которые вы определили! 1008 *

1 голос
/ 26 марта 2011

Я изменил ваш синтаксис. Может быть, это помогает вам

def action():
    nextt = raw_input (">> ")
    return nextt

def start():
    print"""
    You are in a dark room.
    There is a door to your right and left.
    Which one do you take?"""

def bear_room():
    print "You meet the bear..."

def cthulu_room():
    print "you meet the princess"

def dead(message):
    print message

def answ(nextt):
    if nextt == "left":
       bear_room()
    elif nextt == "right":
       cthulu_room()
    else:
       dead("You stumble around the room until you starve.")

start()
ok = action()
answ(ok)
1 голос
/ 26 марта 2011

Вам нужно присвоить результат вашего звонка action() в start() чему-либо. Например. next = action(). Когда action() завершается, Python больше не нуждается в переменной next, которую вы в ней создали, поэтому он отбрасывает ее. Вы можете сохранить этот результат в другой функции, присвоив результат функции переменной (в данном случае next в функции start()).

Счастливого взлома!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...