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

Ver*_*ace 2 python dictionary if-statement python-3.x

我有20个文件,每个文件都定义了自己的功能.文件集是相关的.每个文件定义一项运动和一个年龄组.因此,作为一个例子,这些函数存在,每个函数都在各自的文件中:

footballAdults()
footballTeens()
footballKids()
tennisAdults()
tennisTeens()
Run Code Online (Sandbox Code Playgroud)

....等

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

x = input("Pick a sport:")
y = input ("Pick an age group:")
Run Code Online (Sandbox Code Playgroud)

然后,程序将过滤用户的选择以运行用户选择的功能.

有没有更好的办法做一个巨大的,如果... 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
Run Code Online (Sandbox Code Playgroud)

jpp*_*jpp 5

使用字典调度程序:

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)]()
Run Code Online (Sandbox Code Playgroud)

说明

  • 将元组键(与x和的值匹配y)与函数值一起存储在字典中.
  • 通过字典调用您的函数.