我之前宣布了3个功能,这只是一个愚蠢的基于文本的cookie Clicker-esque游戏。
dostuff={"" : turn() , "help" : helpf() , "invest" : invest() }
while done != True:<br>
do = input("What do you want to do? ")
do = do.lower()
if do == "" or do == "help" or do == "invest":
dostuff[do]
elif do == "quit":
done = True
因此,当我使用dostuff["turn"]
时,它什么都不做(该函数应该打印一些东西)。我对其他选项也有同样的问题。
答案 0 :(得分:6)
你的括号必须在dict中省略,然后放在dict调用的末尾。你定义一个函数,它成为一个python对象。使用dict引用该对象,然后使用对象引用,后跟括号调用该函数:
def one():
print("one")
def two():
print("two")
do_stuff = {
"one": one,
"two": two
}
do_stuff["one"]()
打印:
"one"
通过熟悉python的内置函数,您可以将字符串输入执行调用的概念更进一步。
https://docs.python.org/2/library/functions.html
例如,您可以使用getattr方法创建一个类并使用基于文本的输入调用其方法或属性:
class do_stuff():
def __init__(self):
pass
def one(self):
print("one")
def two(self):
print("two")
doer = do_stuff()
inp = "one"
getattr(doer, inp)()
prints-&GT;
"one"