繁体   English   中英

根据伪随机数按顺序打印变量

[英]Print variables in order based on pseudo-random numbers

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

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

谢谢!

有几件事: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)

按照您的方式创建单个变量将使这项任务变得非常困难。 它也很难扩展。 想想如果你有一百或一千分会发生什么!

相反,请仔细考虑您的要求并选择能够满足您所有要求的适当数据结构。 许多结构甚至可以自动排序。

假设您有一组键:jsw_score、jbp_score 等,它首先适合使用字典结构。 您可以像这样静态构建字典:

 scores = {'jsw_score':random.randint(70,90),
           'jbp_score':random.randint(70,90),
           ...}

然后看看这个关于按值排序字典的问题的答案。

或者,如果您有字典无法满足的其他要求,那么您可以在文档中阅读此页面并选择适当的数据结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM