Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何使用字典来调用方法(字典中的值)以基于不同函数中的用户输入(字典中的键)运行?_Python_Python 3.x_Dictionary_Lookup Tables - Fatal编程技术网

Python:如何使用字典来调用方法(字典中的值)以基于不同函数中的用户输入(字典中的键)运行?

Python:如何使用字典来调用方法(字典中的值)以基于不同函数中的用户输入(字典中的键)运行?,python,python-3.x,dictionary,lookup-tables,Python,Python 3.x,Dictionary,Lookup Tables,到目前为止,我所拥有的: def run_A(): # code... def run_B(): # code... def run_C(): # code... inputDict = {'a': run_A, 'b': run_B, 'c': run_C, 'q': False} # q for quit program def userChoice(self): y = True while y: choice = input("a.

到目前为止,我所拥有的:

def run_A():
   # code...

def run_B():
   # code...

def run_C():
   # code...

inputDict = {'a': run_A, 'b': run_B, 'c': run_C, 'q': False}  # q for quit program
def userChoice(self):
    y = True
    while y:
       choice = input("a. run A\nb. run B\nc. run C\nq. Quit").lower()
       self.inputDict[choice]

我这里的问题是,程序允许用户输入他们的选择,但函数将根据字典调用(不会运行),程序只会不断询问用户的选择。

self.inputDict[choice]
将只从dict获取函数,而不会调用它,因此您可能需要替换
self.inputDict[choice]
with
self.inputDict[choice]()

如果函数是类的一部分,请在此处编写完整的代码。从您的问题来看,您似乎有两个问题:字典调用没有运行函数,因为它检索函数名。这可以通过以下关于“eval()”的答案来解决。但你们的第二个问题是“程序只会不断询问用户的选择”,若你们想解决这个问题,我们需要知道你们想要什么。是否希望程序只询问一次(删除
,同时删除
)?你想让它在用户每次输入时都问一次吗?我想:应该是
self.inputDict[choice](self)
def run_A():
    print("A")
   # code...

def run_B():
    print("B")
   # code...

def run_C():
    print("C")
   # code...

inputDict = {'a': run_A, 'b': run_B, 'c': run_C, 'q': False}  # q for quit program
def userChoice(self):
    y = True
    while y:
       choice = input("a. run A\nb. run B\nc. run C\nq. Quit").lower()
       if choice =="q":
           y = False
       else:
           self.inputDict[choice]()