gpt4 book ai didi

python - 来自元组的值与 Python 中的用户输入命名相同(我很难解释,如果我能找到更好的表达方式,我会更新标题)

转载 作者:行者123 更新时间:2023-11-28 20:47:02 25 4
gpt4 key购买 nike

我是一个非常新手的学习者,我正在参加 Python 类(class)来学习。这个问题与类(class)无关,只是与我在上课时正在做的一个项目有关(我正在做一个简单的游戏,使用我在类里面学到的概念来更新、扩展和清理我的代码。)

我这段时间在学习元组、列表和字典,认为简单的元组会清除大量 IF 语句并简化代码。但是,我无法让它完全按照我希望的方式工作。

基本上我的所有类都有一组元组(注意,这些是训练分类,而不是 Python 类)。它们中有不同的数字,然后我有一个元组,其中包含所有类的名称列表。在代码的某个位置,我要求用户输入以确定角色的类别。我希望能够使用该输入,以便我可以从元组中提取(拼接是正确的术语吗?)值,假设我想将元组第三个位置的任何值添加到另一个值。现在我无法获得与同名元组关联的用户输入。有办法做到这一点吗?


# Class list
Apprentice = (6, 0, 0, 0, 0, 0, 0)
Warrior = (12, 2, 0, 2, 0, 0, 0)
Paladin = (14, 2, 0, 2, 1, 0, 1)
Barbarian = (12, 6, 0, 3, -1, -1, -1)
Blademaster = (10, 4, 4, 0, 0, 0, 0)
Assassin = (8, 0, 8, -2, 0, 0, 0)
Rogue = (8, 0, 4, 0, 0, 0, 0)
Monk = (10, 2, 2, 2, 2, 2, -4)
Bard = (8, 0, 0, 0, 0, 0, 4)
Mage = (6, 0, 0, 0, 2, 2, 0)
Priest = (6, 0, 0, 0, 1, 2, 1)
Wizard = (4, -2, -2, -2, 6, 8, 0)
Scholar = (6, -1, -1, 0, 4, 4, 0)
Necromancer = (6, 0, 0, 0, 6, 6, -5)
classList = ('Apprentice', 'Warrior', 'Priest', 'Mage', 'Wizard', 'Rogue', 'Bard', 'Paladin', 'Scholar', 'Necromancer', 'Barbarian', 'Blademaster', 'Assassin', 'Monk')

validClass = False
while validClass == False:
charClass = raw_input('What type of training have you had (Class)? ')
if charClass in classList:
print ''
validClass = True
else:
print 'That is not a valid class.'

最佳答案

您可以通过访问全局变量列表来做到这一点,但我建议不要这样做。一个更好的方法是创建一个类字典,如下所示:

classes = {'Apprentice':Apprentice,'Warrior':Warrior, ...}

然后做类似的事情

selected_class = None

while True:
charClass = raw_input('What type of training have you had (Class)? ')
if charClass in classes:
selected_class = classes[charClass]
break
else:
print 'That is not a valid class.'

关于python - 来自元组的值与 Python 中的用户输入命名相同(我很难解释,如果我能找到更好的表达方式,我会更新标题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19841116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com