python-3.x - 有没有一种简单的方法来压缩这段代码?
问题描述
这是我目前正在编程/测试的恐龙狩猎风格游戏的代码片段。这是迄今为止代码中效率最低的部分,我很想知道是否有很多地方需要适当地压缩。由此产生的统计数据被简单地传递到类结构中以创建实际的生物。由于超过奖杯 3 的生物的拟议统计数据将继续上升(以非线性方式),我看不到压缩代码的简单数学方法,尽管我认为自己是一个效率相当低的 Python 程序员,我希望这可以在一些帮助下浓缩。
Trophy1 = ["Compsognathus", "Coelophysis", "Troodon"]
Trophy2 = ["Edmontosaurus", "Iguanadon", "Parasaurolophus"]
Trophy3 = ["Deinonychus", "Utahraptor", "Novaraptor"]
Trophy4 = ["Protoceratops", "Avimimmus", "Gallimumus"]
Trophy5 = ["Allosaurus", "Carnotaurus", "Baryonyx"]
Trophy6 = ["Stegosarus", "Arrhinoceratops", "Triceratops"]
Trophy7 = ["Ankylosaurus", "Minmi", "Euplocephalus"]
Trophy8 = ["Abelisaurus", "Albertosaurus", "Gorgosarus", "Megalosaurus"]
Trophy9 = ["Apatasaurus", "Brachiosaurus", "Brontosaurus"]
Trophy10 = ["Tyrannosaurus Rex","Giganotosaurus","Spinosaurus"]
Trophy11 = ["Indominous Rex"]
if Trophy == 1:
Name = random.choice(Trophy1)
EHealth = random.randint(50,100)
EAttack = random.randint(20,50)
Resistance = random.randint(5,10)
Weight = random.randint(100,150)
Carnivore = 1
elif Trophy == 2:
Name = random.choice(Trophy2)
EHealth = random.randint(100,250)
EAttack = random.randint(30,75)
Resistance = random.randint(5,15)
Weight = random.randint(500,1000)
Carnivore = 1
elif Trophy == 3:
Name = random.choice(Trophy3)
EHealth = random.randint(100,200)
EAttack = random.randint(50,100)
Resistance = random.randint(5,10)
Weight = random.randint(250,500)
Carnivore = 2
elif Trophy == 4:
Name = random.choice(Trophy4)
EHealth = random.randint(50,100)
EAttack = random.randint(20,50)
Resistance = random.randint(5,10)
Weight = random.randint(100,150)
Carnivore = 1
elif Trophy == 5:
Name = random.choice(Trophy5)
EHealth = random.randint(50,100)
EAttack = random.randint(20,50)
Resistance = random.randint(5,10)
Weight = random.randint(100,150)
Carnivore = 2
elif Trophy == 6:
Name = random.choice(Trophy6)
EHealth = random.randint(50,100)
EAttack = random.randint(20,50)
Resistance = random.randint(5,10)
Weight = random.randint(100,150)
Carnivore = 1
elif Trophy == 7:
Name = random.choice(Trophy7)
EHealth = random.randint(50,100)
EAttack = random.randint(20,50)
Resistance = random.randint(5,10)
Weight = random.randint(100,150)
Carnivore = 1
elif Trophy == 8:
Name = random.choice(Trophy8)
EHealth = random.randint(50,100)
EAttack = random.randint(20,50)
Resistance = random.randint(5,10)
Weight = random.randint(100,150)
Carnivore = 2
elif Trophy == 9:
Name = random.choice(Trophy9)
EHealth = random.randint(50,100)
EAttack = random.randint(20,50)
Resistance = random.randint(5,10)
Weight = random.randint(100,150)
Carnivore = 1
elif Trophy == 10:
Name = random.choice(Trophy10)
EHealth = random.randint(50,100)
EAttack = random.randint(20,50)
Resistance = random.randint(5,10)
Weight = random.randint(100,150)
Carnivore = 3
elif Trophy == 11:
Name = random.choice(Trophy11)
EHealth = random.randint(50,100)
EAttack = random.randint(20,50)
Resistance = random.randint(5,10)
Weight = random.randint(100,150)
Carnivore = 4
解决方案
将所有这些数据放入一个数组中,然后对其进行索引(不要忘记减去其中一个Trophy
以获得适当的索引)。或者,您可以创建一个类DinosaurDataDescriptor
并将该对象放入数组中。
推荐阅读
- mysql - mariadb 查询和使用邮递员的不同输出
- java - “no”输入函数在 while 循环 Java 中不起作用
- google-cloud-platform - 如何使用 Logs Explorer 审核并显示哪个用户对 GKE 节点池进行了更改?
- javascript - Discord.js - 获取对消息做出反应的用户列表并根据他们的反应分配角色
- python - 如何让它在pygame中退出?
- angular - ng build --prod“无法否定语句”时出错
- git - git stash pop,我遇到了这个问题
- handlebars.js - Handlebars 非块表达式助手,可以使用它的参数名称字符串以及它在上下文中的值查找
- rcpp - 使用 Rcpp 构建 R 包
- sql - Postgres 9.6 到 12.7 pg_upgrade 错误 - 由于管理员命令而终止连接