Python 使用字典选择要运行的函数
我试图使用字典根据用户输入的内容选择要运行的函数。也就是说,如果用户输入“A”,则函数_A将运行,如果用户输入“B”,则函数_B将运行。我已经设置了字典,但遇到的问题是,所有不同的条目及其函数都在执行中。我使用字典功能是错误的还是我犯了错误?我对python还是相当陌生,所以我可能会犯一些真正的新手错误 我尝试将字典移到函数之外,但似乎不起作用Python 使用字典选择要运行的函数,python,Python,我试图使用字典根据用户输入的内容选择要运行的函数。也就是说,如果用户输入“A”,则函数_A将运行,如果用户输入“B”,则函数_B将运行。我已经设置了字典,但遇到的问题是,所有不同的条目及其函数都在执行中。我使用字典功能是错误的还是我犯了错误?我对python还是相当陌生,所以我可能会犯一些真正的新手错误 我尝试将字典移到函数之外,但似乎不起作用 def set_race(self,race): 种族列表={ “龙生”:自我。角色。\u种族。选择\u龙生(), “矮人”:自我。性格。种族。选择矮人
def set_race(self,race):
种族列表={
“龙生”:自我。角色。\u种族。选择\u龙生(),
“矮人”:自我。性格。种族。选择矮人(),
“Elf”:self.character\u race.选择\u Elf(),
“Gnome”:self.character\u race.select\u Gnome(),
“半精灵”:自我。角色。种族。选择半精灵(),
“半身人”:自我。角色。种族。选择半身人(),
“半兽人”:自我。角色。种族。选择半兽人(),
“人类”:自我。性格。种族。选择人类(),
“Tiefling”:self.character\u race.select\u Tiefling()
}
种族名单[种族]
当我运行代码时,我只希望执行一个函数。正如用户可能运行的那样
bob.set\u种族(“Elf”)
只有
self.character\u race.select\u elf()
将被执行。
但是现在,当调用set_race函数时,它会在到达race_列表[race]之前遍历每一行。这意味着正在执行所有不同的select race函数。您在声明dict时调用函数。您还忘记了在末尾使用
()
调用函数
试试这个:
def set_race(self, race):
race_list = {
"Dragonborn": self.character_race.select_dragonborn,
"Dwarf": self.character_race.select_dwarf,
"Elf": self.character_race.select_elf,
"Gnome": self.character_race.select_gnome,
"Half-Elf": self.character_race.select_halfelf,
"Halfling": self.character_race.select_halfling,
"Half-Orc": self.character_race.select_halforc,
"Human": self.character_race.select_human,
"Tiefling": self.character_race.select_tiefling
}
race_list[race]()
尝试只指定函数名,而不指定
()
@DaemonPainter。首先,这不是问题所在。顺便说一句,python不支持第二种切换情况。在您给定的示例中,self始终可用。是的,这解决了问题!非常感谢你!请原谅我的提问,但是select_dragonborn()和select_dragonborn()之间有什么区别?对不起,之前关于self不可用的评论只是我带了dumb,没有删除我搬到其他地方的字典副本…不用担心!当您使用括号()
时,您正在调用一个函数。如果没有括号,它就像引用此函数的变量。