基于伪随机数按顺序打印变量

时间:2015-08-30 16:12:11

标签: python random

我正在创建一个任务,其中一个人根据其准确性获得分数。然后他们会在其他玩家中看到一个具有表演位置的屏幕(其他玩家的分数是随机生成的数字。)

我需要为假玩家生成随机分数,然后以某种方式根据分数的降序对分数进行排序。所呈现的唯一真实分数将是[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

谢谢!

2 个答案:

答案 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并选择适当的数据结构。