如何根据Python中的随机打印打印不同的项目?

时间:2013-08-19 02:45:36

标签: python random sample choice

如果标题没有意义,我很抱歉,但这就是我的意思。这是我脚本的一部分。

Mage = "Mage"
Warrior = "Warrior"
Thief = "Thief"

skilltree = (Mage, Warrior, Thief)

print random.choice (skilltree)

现在说它随机选择了战士。在我的下一个脚本中,它将打印7种技能。但如果它是随机选择小偷或法师,他们将是7种完全不同的技能。所以我希望你获得的7项技能取决于随机选择的技能树。

感谢。

3 个答案:

答案 0 :(得分:2)

你做了很难的事。现在您只需要将技能映射到每个类别。例如,使用字典:

skills = {'Mage': range(7), 'Warrior': range(7,14), 'Thief': range(14,21)}
choice = random.choice(skilltree)
print skills[choice]

这将打印与所选技能树相关联的技能列表。我使用range来说明,你可以有一个包含技能的字符串列表。

答案 1 :(得分:1)

我将用Paulo的例子进一步说明,以防你不熟悉使用字典(就像他说使用字典可能是映射的最佳选择)。

MageSkills = ["Mskill1", "Mskill2"]
ThiefSkills = ["Tskill1", "Tskill2"]
WarriorSkills = ["Wskill1", "Wskill2"]
skills = {'Warrior': WarriorSkills, 'Mage': MageSkills, 'Thief': ThiefSkills}

choice = 'Warrior'

print(skills[choice])

答案 2 :(得分:0)

其他人已经概述了解决方案的一般概念,但我认为他们错过了你的问题背后的关键误解,即如何坚持你随机选择和印刷的东西。就这一点而言,为了理解这就是我要做的事情:

import random

classes = ("Mage", "Warrior", "Thief")
skill_dictionary = {"Mage": ["Fireball", "Ice Blast"...], "Warrior": [...]} # etc
random_class = random.choice(classes) # Keep a version around for yourself
print random_class # print the version you just saved so you still have a copy
print skill_dictionary[random_class] #Then use the saved version to get the skill list

这里有一个重要的思想区别就是将数据与显示数据分开。首先,您随机选择数据,并且只有在您拥有数据后,才决定使用print语句向用户显示数据。

字典只是一个键/值存储(将键(您的类)映射到值(您的技能))。碰巧很适合这个问题,但你可以用其他方式实现这个。