Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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/15.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/1/cassandra/3.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_If Statement - Fatal编程技术网

允许用户从多个函数中选择在Python中运行的最佳方法是什么?

允许用户从多个函数中选择在Python中运行的最佳方法是什么?,python,python-3.x,dictionary,if-statement,Python,Python 3.x,Dictionary,If Statement,我有20个文件,每个文件定义自己的函数。文件集是相关的。每个文件定义一项运动和一个年龄组。例如,这些函数存在于各自的文件中: footballAdults() footballTeens() footballKids() tennisAdults() tennisTeens() 。。。。等等 我想允许用户通过主文件调用其中任何一个,过滤他们的选择,如下所示: x = input("Pick a sport:") y = input ("Pick an age group:") 然后,程序将过

我有20个文件,每个文件定义自己的函数。文件集是相关的。每个文件定义一项运动和一个年龄组。例如,这些函数存在于各自的文件中:

footballAdults()
footballTeens()
footballKids()
tennisAdults()
tennisTeens()
。。。。等等

我想允许用户通过主文件调用其中任何一个,过滤他们的选择,如下所示:

x = input("Pick a sport:")
y = input ("Pick an age group:")
然后,程序将过滤用户的选择,以运行用户选择的函数

除了做一个巨大的if…elif…elif…elif…else语句之外,还有没有更好的方法来做这件事,还是我一直在做

例如:

from footballAdults import footballAdults
from footballTeens import footballTeens
from footballKids import footballKids
from tennisAdults import tennisAdults
#this would continue on until all 20 files have had their functions imported

x = input("Pick a sport:")
y = input ("Pick an age group:")

if x == ("football") and y == ("adults")
    footballAdults()
elif x == ("football") and y == ("teens")
    footballTeens()
elif x == ("football") and y == ("kids")
    footballKids()
elif x == ("tennis") and y == ("adults")
    tennisAdults()
#this would continue on until the final else statement
#cycling through all 20 functions

使用字典调度器:

from footballAdults import footballAdults
from footballTeens import footballTeens
from footballKids import footballKids
from tennisAdults import tennisAdults

x = input("Pick a sport:")
y = input ("Pick an age group:")

d = {('football', 'adults'): footballAdults,
     ('football', 'teens'): footballTeens,
     ('football', 'kids'): footballKids,
     ('tennis', 'adults'): tennisAdults}

d[(x, y)]()
解释

将匹配x和y值以及函数值的元组键存储在字典中。 通过字典调用函数。
我已经尝试过实现它,但它似乎事先以某种方式运行了每个函数。每个函数(如FootballDults)都会创建一个特定于该函数的文件来写入数据。然而,使用这种字典方法会导致在运行import语句时打开每个文件。在这种情况下,可能是单个函数的问题?是的,似乎您的函数定义不正确。已修复。谢谢