数据结构论坛

首页 » 分类 » 常识 » Python数据结构的简单应用,使用Or
TUhjnbcbe - 2025/4/20 17:12:00

,我们梳理了Python中关于字典排序的一些常用方法(杂乱无章的数据结构如何进行排序,简明讲述Python字典排序那些事)。其中,我们讲到了Python的collections模块中的OrderedDict类。今天,我们来使用它模拟一个简单的竞速游戏的排名的操作。

实例分析

我们知道,在现实生活中有很多竞速比赛,比如,汽车竞速、游戏比赛竞速、体育竞速等等。这类比赛通常是以选手完成比赛的时间来进行排名的,完成比赛需要所用越短,选手的排名越靠前。今天,我们使用Python来模拟一个竞速比赛。

竞速项目模拟

编程实现

首先,我们创建一个比赛选手列表

importstring

player_lst=list(string.ascii_lowercase)#创建26个选手代号列表

我们再来创建一个OrderedDict用来记录每一个选手比赛的耗时信息。

scroe_dict=OrderedDict()

然后,我们梳理一下程序要如何记录比较过程及每一个选手的比赛信息。

比赛开始,为每一名选手确定一个开始时间,程序等待每一名选手完成比赛,这个比赛过程我们就不用程序模拟了,直接使用input()等待响应,当我们按下任意键后,假设一个随机选手完成比赛。同时,我们将该选手移出比赛队列,记录选手比赛所用的时间,并将选手名次和比赛耗时计入到score_dict中,依次执行,直到比赛结束。

竞速游戏

程序实现如下:

#计时开始比赛

start=time()

foriinrange(len(player_lst)):

input(按任意键随机产生一名参赛者成绩)

#比赛完成后弹出列表

pop_p=player_lst.pop(randint(0,25-i))

#记录完成时间

end=time()

#成绩添加进字典中

scroe_dict[pop_p]=(i+1,end-start)

这样,我们就将选手比赛的名次和耗时信息添加到了OrderedDict字典中。

最后,我们运行程序后打印该字典看下结果。

forkeyinscroe_dict:

print(第{0}名:姓名{1},成绩为{2:.2f}.format(scroe_dict[key][0],key,scroe_dict[key][1]))

我们来看一下比赛的具体排名信息,粘贴打印信息如下:

第1名:姓名c,成绩为3.26

第2名:姓名i,成绩为4.11

第3名:姓名x,成绩为4.82

第4名:姓名q,成绩为5.29

第5名:姓名n,成绩为5.69

第6名:姓名v,成绩为6.03

第7名:姓名h,成绩为6.31

第8名:姓名u,成绩为6.54

第9名:姓名s,成绩为6.77

第10名:姓名w,成绩为6.96

第11名:姓名m,成绩为7.15

第12名:姓名a,成绩为7.37

第13名:姓名j,成绩为7.59

。。。

成功模拟了竞速比赛项目,当然,需要说明的是选手排名次序是随机产生的,下一名选手耗时取决于我们按键的频率。

总结

我们成功模拟了一个竞速比赛,作为一个练手小项目,主要是让大家熟悉一下OrderedDict的使用及其优点,作为字典,它可以按照进入字典的次序主动对字典内元素进行排序,减少了排序代码量。类似项目,建议使用OrderedDict这种数据结构。这个项目的目的是让大家掌握类似程序的编写方式,如果可以,这个思路可以运用到我们的竞速游戏开发中。

思路可用于游戏开发

后续会推出更有意思的内容,欢迎大家持续

1
查看完整版本: Python数据结构的简单应用,使用Or