" inve-6ren">
gpt4 book ai didi

python - 如何在Python中拥有一个万能的函数调用,可以调用不同的函数?

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:57 24 4
gpt4 key购买 nike

我正在尝试用 Python 制作一个基于文本的游戏,但是,如果我不能在一行中做一件事,代码可能很快就会失控。

一、源码:

from sys import exit

prompt = "> "
inventory = []

def menu():
while True:
print "Enter \"start game\" to start playing."
print "Enter \"password\" to skip to the level you want."
print "Enter \"exit\" to exit the game."
choice = raw_input(prompt)
if choice == "start game":
shell()
elif choice == "password":
password()
elif choice == "exit":
exit(0)
else:
print "Input invalid. Try again."

def password():
print "Enter a password."
password = raw_input(prompt)
if password == "go back":
print "Going to menu..."
else:
print "Wrong password. You are trying to cheat by (pointlessly) guess passwords."
dead("cheating")

def shell(location="default", item ="nothing"):
if location == "default" and item == "nothing":
print "Starting game..."
# starter_room (disabled until room is actually made)
elif location != "default" and item != "nothing":
print "You picked up %s." % item
inventory.append(item)
location()
elif location != "default" and item == "nothing":
print "You enter the room."
location()
else:
print "Error: Closing game."

def location():
print "Nothing to see here."
# Placeholder location so the script won't spout errors.

def dead(reason):
print "You died of %s." % reason
exit(0)

print "Welcome."
menu()

首先,解释一下我的游戏的基本运作方式。游戏有一个“外壳”(输入完成的地方),它从游戏中的不同“房间”接收信息并向其发送信息,并存储库存。它可以接收两个参数,位置和要添加到库存中的最终项目。但是,第 40-42 行(“shell”中的第一个 elif block )和第 43-45 行(“shell”中的最后一个 elif block )应该返回到该位置所在的任何位置(第 42 和 45 行,将精确的)。我试过 "%s() % location"但这不起作用,它似乎只在打印东西或其他东西时起作用。

有什么办法吗?否则,即使为这款游戏编写引擎也将是一场噩梦。或者我必须制作一个完全不同的引擎,我认为在这种情况下这是一种更好的方法。

对不起,如果我犯了任何错误,第一个问题/帖子。

最佳答案

elif location != "default" and item != "nothing":
print "You picked up %s." % item
inventory.append(item)
location()
elif location != "default" and item == "nothing":
print "You enter the room."
location()

我猜你想调用一个有它的名字的函数。为此,您需要对定义它的模块或类的引用:

module = some_module # where the function is defined
function = getattr(module, location) # get the reference to the function
function() # call the function

如果函数定义在当前模块中:

function = globals()[location]
function() # call the function

关于python - 如何在Python中拥有一个万能的函数调用,可以调用不同的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8107203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com