Python实现COD WW2随机连杀奖励按价格排序的技术咨询
解决《使命召唤:二战》连杀奖励按价格排序的问题
嘿,作为Python新手能做到这一步已经很棒啦!你已经有了价格字典,接下来只需要用它来给选中的连杀奖励排序就行,而且咱们还能把你那串重复检查的代码简化不少,一起来看看:
第一步:简化随机选择逻辑
你现在的重复检查代码有点繁琐,Python的random模块里有个sample方法,可以直接从列表里选出指定数量的不重复元素,一步到位解决重复问题:
import random scorestreaks = ["Molotov Cocktail", "Recon Aircraft", "Counter Recon Aircraft", "Care Package", "Fighter Pilot", "Glide Bomb", "Flamethrower", "Mortar Strike", "Artillery Barrage", "Flak Guns", "Emergency Airdrop", "Fire Bombing Run", "Paratroopers", "Carpet Bombing", "Ball Turret Gunner"] # 直接选3个不重复的连杀奖励 selected_ss = random.sample(scorestreaks, 3)
第二步:按价格从低到高排序
接下来就用到你已经创建好的scorestreaks_prices字典了,Python的sorted()函数可以接受一个key参数,用来指定排序的依据。咱们把每个连杀奖励对应的价格作为排序依据,就能轻松实现按价格排序:
scorestreaks_prices = {"Molotov Cocktail": 300, "Recon Aircraft": 500, "Counter Recon Aircraft": 525, "Care Package": 575, "Fighter Pilot": 625, "Glide Bomb": 650, "Flamethrower": 700, "Mortar Strike": 750, "Artillery Barrage": 850, "Flak Guns": 950, "Emergency Airdrop": 1000, "Fire Bombing Run": 1050, "Paratroopers": 1250, "Carpet Bombing": 1400, "Ball Turret Gunner": 1700} # 按价格从低到高排序 sorted_ss = sorted(selected_ss, key=lambda x: scorestreaks_prices[x])
这里的lambda x: scorestreaks_prices[x]是一个匿名函数,它的作用是告诉sorted():“拿每个元素x对应的字典值(也就是价格)来作为排序的标准”。
第三步:输出结果
最后把排序后的结果打印出来就行,这里给你两种方式,选你觉得顺手的用:
# 传统格式化方式 print("Scorestreaks: %s, %s, %s" % (sorted_ss[0], sorted_ss[1], sorted_ss[2])) # 更简洁的f-string方式 print(f"Scorestreaks: {', '.join(sorted_ss)}")
完整代码整合
把所有部分放在一起就是这样:
import random scorestreaks = ["Molotov Cocktail", "Recon Aircraft", "Counter Recon Aircraft", "Care Package", "Fighter Pilot", "Glide Bomb", "Flamethrower", "Mortar Strike", "Artillery Barrage", "Flak Guns", "Emergency Airdrop", "Fire Bombing Run", "Paratroopers", "Carpet Bombing", "Ball Turret Gunner"] scorestreaks_prices = {"Molotov Cocktail": 300, "Recon Aircraft": 500, "Counter Recon Aircraft": 525, "Care Package": 575, "Fighter Pilot": 625, "Glide Bomb": 650, "Flamethrower": 700, "Mortar Strike": 750, "Artillery Barrage": 850, "Flak Guns": 950, "Emergency Airdrop": 1000, "Fire Bombing Run": 1050, "Paratroopers": 1250, "Carpet Bombing": 1400, "Ball Turret Gunner": 1700} # 随机选3个不重复的连杀奖励 selected_ss = random.sample(scorestreaks, 3) # 按价格排序 sorted_ss = sorted(selected_ss, key=lambda x: scorestreaks_prices[x]) # 输出 print(f"Scorestreaks: {', '.join(sorted_ss)}")
这样运行起来,输出的连杀奖励就会自动按价格从低到高排列啦!如果之后你想调整排序顺序(比如从高到低),只需要给sorted()加个reverse=True参数就行:sorted(selected_ss, key=lambda x: scorestreaks_prices[x], reverse=True)。
内容的提问来源于stack exchange,提问作者Jelle
相关产品推荐
相关产品推荐

