我正在创建一个任务,其中一个人根据其准确性获得分数。然后他们会在其他玩家中看到一个具有表演位置的屏幕(其他玩家的分数是随机生成的数字。)
我需要为假玩家生成随机分数,然后以某种方式根据分数的降序对分数进行排序。所呈现的唯一真实分数将是[sub_score]。
以下是我到目前为止的情况。我不确定如何根据它们的值对这些变量进行排序,然后打印[firstplace],[secondplace],[thirdplace]等变量。此外,这需要发生4次,每次都不同为假玩家生成得分,并且他们的位置在任务之间波动。这些随机生成的数字应该在70-90之间,因为这些分数反映了准确性。
import random
'jsw_score' = random.randint(70,90)
'jbp_score' = random.randint(70,90)
'bsp_score' = random.randint(70,90)
'mjk_score' = random.randint(70,90)
'phs_score' = random.randint(70,90)
'msw_score' = random.randint(70,90)
'tdl_score' = random.randint(70,90)
'aik_score' = random.randint(70,90)
'wjc_score' = random.randint(70,90)
'sub_score' = accuracy
谢谢!
答案 0 :(得分:1)
以下几点:1)不确定您使用sub_score
的内容。 2)您需要更好的数据结构以避免重复的代码。我用下面的字典。
import random
dd = {}
for i in [
'jsw_score',
'jbp_score',
'bsp_score',
'mjk_score',
'phs_score',
'msw_score',
'tdl_score',
'aik_score',
'wjc_score']:
dd[i] = random.randint(70,90)
# sort by score
for item in sorted(dd.items(), key=lambda x: x[1], reverse=True):
print item
示例输出:
('aik_score', 90)
('tdl_score', 89)
('jsw_score', 88)
('wjc_score', 87)
('msw_score', 84)
('jbp_score', 82)
('bsp_score', 81)
('mjk_score', 79)
('phs_score', 73)
答案 1 :(得分:0)
按照您的方式创建单个变量将使此任务变得非常困难。它也很难扩展。考虑一下,如果你有一百分或一千分,会发生什么!
请仔细考虑您的要求,并选择符合您所有要求的适当数据结构。许多结构甚至可以自动排序。
鉴于您有一组键:jsw_score,jbp_score等适合以字典结构开头。您可以静态构建这样的字典:
scores = {'jsw_score':random.randint(70,90),
'jbp_score':random.randint(70,90),
...}
然后看一下this question关于按值排序字典的答案。
或者,如果您对字典没有帮助,则可以阅读文档中的this page并选择适当的数据结构。