python输入逗号分隔值文件_如何在Python(Pygame)中显示逗号分隔值(.txt)文件中的前10个高分…

我正在为我的游戏创建一个高分表。它以下列格式将值附加到.txt文件:

5.234,0,0,5234

6.345,1,1,8345

1.649,0,1,2649

2.25,0,1,3250

…等等

我想读取前10个得分(得分是每行的第4个值)并将其输出到屏幕上。我尝试使用此处的信息,但无法理解。输出它们的最佳方法是什么?

我知道您可以使用拆分值

for line in f:

Array = line.split(‘,’)

我很确定如果我将它们放在排序的2D数组或等效数组中,就可以管理输出

解决方案

使用该csv模块将更加容易。例如:

with open(‘highscores.txt’, ‘rb’) as f:

reader = csv.reader(f)

scores = list(reader)

现在,scores将是10个列表的列表,每个列表有4个值。

with open(‘highscores.txt’, ‘rb’) as f:

scores = [line.strip().split(‘,’) for line in f]

现在,您可以对每个步骤使用单个理解或函数调用来一次转换列出的一个步骤。这种”声明式编程”,您只需要说说要对值做些什么,而不用编写循环并交错所有步骤,就可以使您的生活变得更加轻松。

如果只需要最后一列,则可以理解:

with open(‘highscores.txt’, ‘rb’) as f:

reader = csv.reader(f)

scores = [row[-1] for row in reader]

如果要将它们转换为整数:

with open(‘highscores.txt’, ‘rb’) as f:

reader = csv.reader(f)

scores = (row[-1] for row in reader)

intscores = [int(score) for score in scores]

…尽管在这种情况下,将两个步骤合并在一起很简单:

with open(‘highscores.txt’, ‘rb’) as f:

reader = csv.reader(f)

scores = [int(row[-1]) for row in reader]

如果希望它们以相反的顺序(从最高到最低)排序:

with open(‘highscores.txt’, ‘rb’) as f:

reader = csv.reader(f)

scores = (int(row[-1]) for row in reader)

topscores = sorted(scores, reverse=True)

如果您只想要前十名:

with open(‘highscores.txt’, ‘rb’) as f:

reader = csv.reader(f)

scores = (int(row[-1]) for row in reader)

topscores = sorted(scores, reverse=True)

top10 = topscores[:10]

通过使用heapq模块,您可以使最后一步更有效,但更为复杂:

with open(‘highscores.txt’, ‘rb’) as f:

reader = csv.reader(f)

scores = (int(row[-1]) for row in reader)

top10 = heapq.nlargest(10, scores)

从对另一个答案的评论中,您实际上希望获得每行中的所有四个值。因此,您不仅需要阅读每一行的最后一列,还需要阅读整行。另外,您可能想将第一列转换为浮点数,将其余列转换为整数,这比将函数映射到每一行中的所有列要复杂一些。同时,nlargest或sorted将按第一列进行比较,但要与最后一列进行比较,这意味着您需要提供键功能。尽管自己写一点也不难,但itemgetter已经可以满足您的要求。

with open(‘highscores.txt’, ‘rb’) as f:

reader = csv.reader(f)

def convert_row(row):

return [float(row[0])] + [int(value) for value in row[1:]]

scores = (convert_row(row) for row in reader)

top10 = heapq.nlargest(10, scores, key=operator.itemgetter(-1))

for record in top10:

print(‘time: {} | moves: {} | penalties: {} | score: {}’.format(*record))

此代码的唯一问题是,列顺序的知识有点隐式地散布在整个代码中。如果您有字典列表而不是列表列表,则可以按名称访问值。并DictReader让您做到这一点:

with open(‘highscores.txt’, ‘rb’) as f:

reader = csv.DictReader(f, fieldnames=(‘time’, ‘moves’, ‘penalties’, ‘score’))

def convert_row(row):

return {k: float(v) if k == ‘time’ else int(v) for k, v in row.items()}

scores = [convert_row(row) for row in reader]

top10 = heapq.nlargest(10, scores, key=operator.itemgetter(‘score’))

for record in top10:

print(‘time: {time} | moves: {moves} | penalties: {penalties} | score: {score}’

.format(**record))

format函数中不再有0、1,-1或隐式排序;现在,所有内容都使用字段名称-time,但不包括time,score等等。另一方面,代码更加冗长,并且某些人发现dict理解比列表理解/生成器表达式更难读,所以……这是一个问题品尝这是否有所改善。

Original: https://blog.csdn.net/weixin_35426022/article/details/113679206
Author: linlinpu
Title: python输入逗号分隔值文件_如何在Python(Pygame)中显示逗号分隔值(.txt)文件中的前10个高分…

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/783400/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python 函数递归教程

    函数的嵌套调用:一个函数里面又写了一个函数。 函数的递归调用:他是一种特殊的嵌套调用,他也是在函数里面调用函数,但是他在函数体内调用的函数时他自己本身。 如果递归函数不断的在函数体…

    Python 2023年10月30日
    045
  • 学习NumPy全套代码【超详细】基本操作、数据类型、数组运算、复制和试图、索引、切片和迭代、形状操作、通用函数、线性代数

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师。欢迎大家跟我一起走进数据分析的世界,一起学习!感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦…

    Python 2023年8月29日
    054
  • pygame十分钟写一个Python小游戏!

    十分钟写一个Python小游戏 最近玩游戏玩到累了,作为一个游戏爱好者,自己就想着自己来写一个游戏吧,又这么巧,在网上看到了pygame,就打算用pygame写一个贪吃蛇的小游戏,…

    Python 2023年9月22日
    049
  • python:pytest 查找测试用例的原则pytest运行方式详解及其参数

    pytest 查找测试用例的原则 pytest 运行方式详解及其参数pytest 有两个测试运行方式,命令行运行和 pytest.main() 运行。 python -m pyte…

    Python 2023年9月10日
    071
  • Django – MySQL配置信息与迁移

    首先了解一下,数据库简单分类:1、sqlite3(免费) 1.1、是一个嵌入式的关系型数据库;1.2、主要在移动端使用,属于小型的关系型数据库 2、中型数据库:mysql(甲骨文、…

    Python 2023年8月4日
    036
  • 微信小程序|基于小程序+C#制作一个聊天系统

    此文主要基于小程序+C#使用WebSocket制作一个聊天系统,基本实现小程序与服务端的聊天功能。用小程序自带的客服功能只能绑定微信且一对一沟通,接入市面上成熟的即时通讯预算又略显…

    Python 2023年11月4日
    045
  • 自动化测试框架系列-pytest

    1.什么是pytest? pytest是一个python的一个自动化测试框架,主要用于单元测试和功能测试。 java: junit 或者 testngpython: unittes…

    Python 2023年9月13日
    066
  • matplotlib中自定义scale——针对普通标度与colorbar

    文章目录 背景 方案一(题外话) 方案二 自定义scale * 理论部分 核心代码 数据标注 多组数据使用heatmap:自定义color bar的scale 背景 现在我对比了1…

    Python 2023年9月3日
    038
  • 一文速学-最小二乘法曲线拟合算法详解+项目代码

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年7月31日
    048
  • 【HTML5】登录页面制作简易版

    刚开始学习Java。文件的命名,讲道理应该以英文为主,但是英语又不好,所以只好用拼音,最痛苦的应该算是那些英语又不好,又想秀一下的程序员,一半英语一半拼音,如mainFangFa~…

    Python 2023年8月1日
    061
  • 机器学习笔记 – 特征向量和特征值

    一、特征向量和特征值 1、概念简述和应用 (1)概念简述 矩阵的特征向量是矩阵理论上的重要概念之一,它有着广泛的应用。特征值和特征向量是数据科学领域的核心。 它到底有什么用? 简而…

    Python 2023年9月5日
    035
  • 上线流程

    上线流程 上线前准备 首先将跑在本地版本的项目,上传至远端(gitee、github上) 重新复制一份项目的配置文件,可以命名为pro.py(dev为开发阶段的配置文件,pro为上…

    Python 2023年10月30日
    051
  • Python库之numpy之数组切片

    众所周知,python中有很多的库,numpy就是其中的一个库,做数据分析必备的库之一,今天就让我们来学一下,numpy的切片 今天上课学这个切片切的我快自卑了,为啥为啥,脑子里全…

    Python 2023年8月29日
    050
  • Python数据清洗

    实验题目 Python 数据清洗 实验目和要求 1)了解 Python 数据清洗的特点; 2)掌握 Numpy、Pandas、Matplotlib 库的使用 3)能进行与Pytho…

    Python 2023年8月21日
    062
  • flask-19 Flask-SQLAlchemy多对多(many-to-many)关系

    目录 flask-18 Flask-SQLAlchemy一对多(one-to-many)关系 一、模型创建 1、apps下创建goods 2、apps/goods下创建models…

    Python 2023年8月11日
    047
  • 瞧瞧别人家的API接口,那叫一个优雅

    在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台API接口,或者提供API接口给第三方平台调用。 那么问题来了,如果设计一个优雅的API接口,能够满足:安全性、可…

    Python 2023年9月5日
    051
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球