Python编程基础:实验7——文件和数据格式化

简介: 巩固Python文件操作相关基础知识,熟练的掌握文件操作至关重要。

一、前言

在本期实验中我们将利用之前学习的相关Python文件操作来进行题目代码练习,巩固知识。

二、我的环境

  • 电脑系统:Windows 11
  • 语言版本:Python 3.10.4
  • 编译器:VSCode

三、实验目的与要求

  1. 熟练掌握文件的打开、关闭和读写
  2. 理解数据组织的维度、掌握一维数据和二维数据的处理方法
  3. 掌握采用CSV格式对一二维数据文件进行读写的方法

四、实验任务

1、程序填空

【填空12-1】编写程序,根据用户输入的星座名称,输出此星座的出生日期范围及对应的星座符号。程序不完整,请完善代码。

星座及出生日期范围已存于文件SunSign.csv中,文件内容如下图所示。首先读入CSV文件中数据到一个列表中,然后获得用户输入,则输出此星座信息,直至用户输入“exit”程序结束。

image-20221012094755871.png

image-20221012095844144.png

fo=open(".\填空题\SunSign.csv", "r", encoding="GB18030")
ls= []
forlineinfo:
line=line.replace("\n","")
ls.append(line.split(","))
fo.close()
whileTrue:
InputStr=input()
InputStr.strip()
flag=FalseifInputStr=='exit':
breakforlineinls:
ifInputStr==line[0]:
print("{}座的生日位于{}-{}之间".format(chr(eval(line[3])), line[1], line[2]))
flag=Trueifflag==False:
print("输入星座名称有误!")

它运行的结果是:

白羊座♈座的生日位于321-419之间天蝎座♏座的生日位于1024-1122之间水瓶座♒座的生日位于120-218之间exit

【填空12-2】编写程序,统计并输出传感器采集数据中光照部分的最大值、最小值和平均值,所有值保留小数点后2位。程序不完整,请完善代码。

已知传感器采集数据文件为sensor-data.txt,如下图所示,其中每行是一个整体数据.分别包括"日期、时间、温度、湿度、光照和电压"等6个读数,光照数据处于第5列,在列表中表示光照数据时下标应为4。

image-20221012100521797.png

f=open(".\填空题\sensor-data.txt", "r")
avg, cnt=0, 0maxv, minv=0, 9999forlineinf:
ls=line.split()
cnt+=1val=eval(ls[4])
avg+=valifval>maxv:
maxv=valifval<minv:
minv=valprint("最大值、最小值、平均值分别是:{:.2f},{:.2f},{:.2f}".format(maxv, minv, avg/cnt))
f.close()

它运行的结果是:

最大值、最小值、平均值分别是:47.08,45.08,46.08

2、程序编程

【编程12-1】文件smartphone.txt 存放着部分公司手机年销量数据,每行为每家公司连续4年的销量数据,数据项间以制表符作为分隔,文件内容如下图所示。

编写程序,显示各公司年销量是否快速增长的情况(本题设年销量增长率均超过30%为快速增长),程序运行结果如下图所示。现给出部分程序代码,请根据题目要求进行编程。

image-20221012100649054.png

rate=0.3defisBigGrowth(L, rate):
foriinrange(0, len(L)-1):
yearGrowth= (L[i+1]-L[i])/L[i]
if(yearGrowth<rate):
returnFalsereturnTrueprint("手机公司  是否快速增长?")
data= []
withopen(".\编程题\smartPhone.txt",encoding="utf-8") asf:
data=f.readlines()
deldata[0]
forcompanyindata:
company=company.split()
foriinrange(1, len(company)):
company[i] =float(company[i])
ifisBigGrowth(company[1:], 30/100):
print("%s\t\t%s"% (company[0], "快速"))
else:
print("%s\t\t%s"% (company[0], "否"))

它运行的结果是:

手机公司是否快速增长?SamsungAppleHuaweiOPPO快速Vivo快速ZTELGLenovoXiaomi

五、最后我想说

本期有关文件和数据格式化的实验就到这里结束了,如果还对文件相关操作不熟悉的朋友可以去看看我前面更新的有关文件操作知识的博客。

Python编程基础:文件基础

另外,在本期实验中,如果出现编码报错,可以修改一下编码进行解决,如果出现无法找到文件的错误,可以尝试一下相对路径,看看文件是否跟代码放在同一文件目录下,或者使用绝对路径尝试一下。

目录
相关文章
|
10天前
|
缓存 API 网络架构
淘宝item_search_similar - 搜索相似的商品API接口,用python返回数据
淘宝联盟开放平台中,可通过“物料优选接口”(taobao.tbk.dg.optimus.material)实现“搜索相似商品”功能。该接口支持根据商品 ID 获取相似推荐商品,并返回商品信息、价格、优惠等数据,适用于商品推荐、比价等场景。本文提供基于 Python 的实现示例,包含接口调用、数据解析及结果展示。使用时需配置淘宝联盟的 appkey、appsecret 和 adzone_id,并注意接口调用频率限制和使用规范。
|
2月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
10天前
|
Python
Python中的f-string:更简洁的字符串格式化
Python中的f-string:更简洁的字符串格式化
150 92
|
2月前
|
JSON API 数据格式
Python采集京东商品评论API接口示例,json数据返回
下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析
|
2月前
|
PHP Python
Python format()函数高级字符串格式化详解
在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。 今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。
160 0
|
12天前
|
JSON 安全 API
Python处理JSON数据的最佳实践:从基础到进阶的实用指南
JSON作为数据交换通用格式,广泛应用于Web开发与API交互。本文详解Python处理JSON的10个关键实践,涵盖序列化、复杂结构处理、性能优化与安全编程,助开发者高效应对各类JSON数据挑战。
71 1
|
2月前
|
XML Linux 区块链
Python提取Word表格数据教程(含.doc/.docx)
本文介绍了使用LibreOffice和python-docx库处理DOC文档表格的方法。首先需安装LibreOffice进行DOC到DOCX的格式转换,然后通过python-docx读取和修改表格数据。文中提供了详细的代码示例,包括格式转换函数、表格读取函数以及修改保存功能。该方法适用于Windows和Linux系统,解决了老旧DOC格式文档的处理难题,为需要处理历史文档的用户提供了实用解决方案。
118 1
|
2月前
|
缓存 监控 API
1688平台开放接口实战:如何通过API获取店铺所有商品数据(Python示列)
本文介绍如何通过1688开放平台API接口获取店铺所有商品,涵盖准备工作、接口调用及Python代码实现,适用于商品同步与数据监控场景。
|
2月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。

推荐镜像

更多