首页 > 解决方案 > 有没有一种简单的方法来压缩这段代码?

问题描述

这是我目前正在编程/测试的恐龙狩猎风格游戏的代码片段。这是迄今为止代码中效率最低的部分,我很想知道是否有很多地方需要适当地压缩。由此产生的统计数据被简单地传递到类结构中以创建实际的生物。由于超过奖杯 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

标签: python-3.x

解决方案


将所有这些数据放入一个数组中,然后对其进行索引(不要忘记减去其中一个Trophy以获得适当的索引)。或者,您可以创建一个类DinosaurDataDescriptor并将该对象放入数组中。


推荐阅读