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

标签 python python-3.x dictionary if-statement

我有 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)]()

说明

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

关于python - 允许用户从多个函数中进行选择以在 Python 中运行的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49389920/

相关文章:

python - 在用户表单 django 中设置默认值

python - 用于 Python 的 eyed3 包未正确设置 ID3 元数据

python - 有什么办法可以使这段代码更快?

python - 计算字典中项目的实例(Pandas)

Python 3 有效地迭代列表字典

python - 独立移动 numpy 数组的行

python - 使用 pandas 对数据进行排序 - 根据其他列中的值对第一列进行排序

python - 如何重新进入上次引发异常的迭代器/生成器对象

django - 单个应用程序中的 ValueError ('Related model %r cannot be resolved' % self.remote_field.model)

c# - 在 C# 中使用 LINQ 反转字典