如何使函数接受另一个函数的参数?

时间:2013-03-17 15:30:46

标签: python function

我的问题可能看起来令人困惑,但这是我能想到措辞的唯一方法。我为任何困惑道歉,我会尽力解释。

基本上我要做的是在我的游戏中有一个简单的退出功能,询问“你想退出吗?”如果用户输入no,则将它们返回到它们所在的函数。

这是我试图做的,但似乎只是循环回'bear_room()'函数。

def bear_room():

    print "You are greeted by a bear"
    next = raw_input()

    if next == 'fight':
        print 'You tried to fight a bear. You died'
    elif next == 'exit':
        exit_game(bear_room())
    else:
        print 'I did not understand that!'
        bear_room()

def exit_game(stage):

    print '\033[31m Are you sure you want to exit? \033[0m'

    con_ext = raw_input(">")

    if con_ext == 'yes':
        exit()
    elif con_ext == 'no':
        stage
    else:
        print 'Please type ''yes'' or ''no'
        exit_game()

2 个答案:

答案 0 :(得分:1)

你几乎得到了它;当你把它作为一个论点传递时,你只需要调用bear_room

    elif next == 'exit':
        exit_game(bear_room)

相反,您需要将stage作为函数调用:

    elif con_ext == 'no':
        stage()

答案 1 :(得分:1)

您需要了解传递函数和调用函数之间的区别。

在这里,您将对函数raw_input的引用复制到变量next中,而不实际执行它。您可能希望将括号()添加到raw_input

next = raw_input

在这里,您以递归方式再次调用bear_room(),而不是将对它的引用传递给exit_game函数。您可能希望将括号()移至bear_room

elif next == 'exit':
    exit_game(bear_room())

同样,提及没有括号的函数不会执行它,所以你也想在这里添加它们:

elif con_ext == 'no':
    stage