如何使用词典使功能易于访问

-1 python python-3.x

我之前宣布了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
Run Code Online (Sandbox Code Playgroud)

因此,当我使用dostuff["turn"]它什么都不做(该功能应该打印一些东西).我和其他选项有同样的问题.

Vin*_* W. 6

必须在dict中省略括号,然后将其放在dict调用的末尾.你定义一个函数,它成为一个python对象.使用dict引用该对象,然后使用对象引用后跟括号调用该函数:

def one():
    print("one")

def two():
    print("two")

do_stuff = {
    "one": one,
    "two": two
}

do_stuff["one"]()
Run Code Online (Sandbox Code Playgroud)

打印:

"one"
Run Code Online (Sandbox Code Playgroud)

通过熟悉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)()
Run Code Online (Sandbox Code Playgroud)

prints->

"one"
Run Code Online (Sandbox Code Playgroud)