读取文件例题总结 python

主要是读取文件的操作,结合字典,列表,集合的综合例题

主要思路:先看文件结构 根据文件结构 划分 然后保存到列表中(一般是二维列表) 然后再保存到字典中进行一些列操作

1…学生成绩分析

#1.学生成绩分析
'''
小明,98
小刚,90
小红,91
小王,98
小刘,80
***可以看出每行都有两个数据 以逗号隔开 然后就是换行符了***'''
#先打开文件
f=open('score.txt','r',encoding='utf-8')
#读取文件内容
# content=f.readlines() #['小明,98\n', '小刚,90\n', '小红,91\n', '小王,98\n', '小刘,80']
#可以看出 格式和上面分析的一样 所以先去除换行符,再按逗号隔开
#综上 可以用列表推导式简写
lst=[i.strip().split(',') for i in f.readlines()] #现在的lst就是名字和成绩的一个二维列表了[['小明', '98'], ['小刚', '90'], ['小红', '91'], ['小王', '98'], ['小刘', '80']]
#现在就可以对这个二维列表进行分析了
#因为是个二维列表 所以遍历拿到成绩就行
lst_score=[int(i[1]) for i in lst] #拿到成绩
#1.  最高分和最低分分别是多少?max min
print(max(lst_score),min(lst_score))
#2.  得最高分的学生有几个?   得最低分的学生有几个 count
max_count=lst_score.count(max(lst_score))
min_count=lst_score.count(min(lst_score))
print(max_count,min_count)
#3.  平均分是多少?
print(sum(lst_score)/len(lst_score))

2.学生成绩分析2

# 2. 学生成绩分析2
'''
小明,98,96
小刚,90,94
小红,90,94
小王,98,96
小刘,80,90
小赵,90,96
同理 先分析结构 每行有三个数据 以逗号隔开 然后是换行符
所以如果只是读取数据的话 结构一个是类似于['小明,98,96\n', '小刚,90,94\n', '小红,90,94\n', ']的一维列表'''def read_file(file_name):with  open(file_name, 'r', encoding='utf-8') as f:data = [i.strip().split(',') for i inf.readlines()]  # 先去除换行符 再按逗号隔开 [['小明', '98', '96'], ['小刚', '90', '94'], ['小红', '90', '94'], ['小王', '98', '96'], ['小刘', '80', '90'], ['小赵', '90', '96']]return datadef get_score():data = read_file('score2.txt')stu_lst = []for item in data:name = item[0]math = int(item[1])chinese = int(item[2])stu_lst.append({'name': name, 'math': math, 'chinese': chinese})math_dict = {}chinese_dict = {}ys_dict = {}max_score = 0stu_score = 0for stu in stu_lst:  # 遍历字典name = stu['name']math = stu['math']chinese = stu['chinese']score_sum = math + chinese  # 获取每次数学加语文的总分stu_score+=score_sum # 获取总分if score_sum > max_score:max_score = score_sum  # 获取最大分数chinese_dict.setdefault(chinese, [])chinese_dict[chinese].append(name)  # 把语文分数作为key 语文分数相同的学生名字作为valuemath_dict.setdefault(math, [])math_dict[math].append(name)  # 把数学分数作为key 数学分数相同的学生名字作为valueys_dict.setdefault((math, chinese), [])ys_dict[(math, chinese)].append(name)  # 把数学分数和语文分数作为key 数学分数和语文分数相同的学生名字作为valuefor k, v in math_dict.items():if len(v) > 1:print(f'数学分数为{k}的学生有{v}')print('*' * 20)for k, v in chinese_dict.items():if len(v) > 1:print(f'语文分数为{k}的学生有{v}')print('*' * 20)for k, v in ys_dict.items():sum_score=sum(k)if sum_score==max_score:print(f'总分最高的同学是:{v},分数为{max_score}')if len(v) > 1:print(f'数学分数为{k[0]} 语文分数为{k[1]}的学生有{v}')print(f'总平均分是{stu_score/len(stu_lst):.2f}')get_score()

3.投票选班长

'''
文件data里存储了投票选班长的选票情况小红
小刚
小明
小明
小刚
小刘
小红
小张
小王
小明
分析文件结构 每行有一个数据 以换行符结束
1.  —共有多少人参加了班长选举?
2.  这些人分别得了多少选票?'''
with open('data.txt', 'r', encoding='utf-8') as f:data = [i.strip() for i inf.readlines()]  # 这个文件比较简单只需要去除换行符就行了,得到一个一维列表,['小红', '小刚', '小明', '小明', '小刚', '小刘', '小红', '小张', '小王', '小明']stu_dic = {}for stu in data:stu_dic.setdefault(stu, 0)stu_dic[stu] += 1# 1.  —共有多少人参加了班长选举?print(len(stu_dic))
# 2.  这些人分别得了多少选票?for k, v in stu_dic.items():print(f'{k}得了{v}票')

4.ip地址

# 4.IP地址分析
'''
已知—个文件名为ip.txt的文件,里面存储了大量ip地址
请编写函数,读取文件并分析数据,根据ip出现次数进行排序,程序最终输出ip 和 出现次       数,从小到大
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.1
192.168.0.4
192.168.0.5
192.168.0.5
192.168.0.2
192.168.0.2
192.168.0.5
分析文件结构 每行有一个数据 以换行符结束
'''
with open('ip.txt', 'r', encoding='utf-8') as f:data = [i.strip() for i inf.readlines()]  # 这个文件比较简单只需要去除换行符就行了,得到一个一维列表,['192.168.0.1', '192.168.0.2', '192.168.0.3', '192.168.0.1', '192.168.0.4',# 统计每个ip出现的次数dic = {}for ip in data:dic.setdefault(ip, 0)dic[ip] += 1#对字典进行排序 匿名函数就行lst=sorted(dic.items(),key=lambda x:x[1])# 输出for item in lst:print(item)

5.含了含有重复的人名,请直接输出出现最多的人名和次数。

'''
双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏分析文件结构 和前面不同的是 每行有多个数据 以空格隔开 然后是换行符'''
def read_file(filename):lst = []with open(filename, 'r', encoding='utf-8') as file:  # 指定编码格式为UTF-8for line in file:# 假设单词之间用空格分隔lst.extend(line.strip().split(' ')) #因为这里用的是extend 所以是个一维数组return lstdef write_file(filename):lst = read_file(filename)print(lst)# 使用字典统计每个字符出现的次数dic = {}for item in lst:dic.setdefault(item, 0)dic[item] += 1# 找出出现次数最多的字符及其出现次数max_value = 0name = ''for key, value in dic.items():if value > max_value:max_value = valuename = keyreturn f'{name} {max_value}'if __name__ == '__mai

常规写法

with open('test.txt', 'r', encoding='utf-8') as f:# datas=[i.strip() for i in f.readlines()] # 先去除换行符 每行以逗号隔开# ['双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖', 得到是这种一维数组datas = [i.strip().split(' ') for i inf.readlines()]  # [['双儿', '洪七公', '赵敏', '赵敏', '逍遥子', '鳌拜', '殷天正', '金轮法王', '乔峰', '杨过', '洪七公', '郭靖'], 得到的是二维数组dic = {}for data in datas:for item in data: #因为结构和前面的不一样 所以得用双重循环dic.setdefault(item, 0)dic[item] += 1# 输出
# max_count = 0
# max_name = ''
# for k, v in dic.items():
#  if v > max_count:
#     max_count = v
#     max_name = k
# print(max_name, max_count)
#也可以用sorted函数
lst=sorted(dic.items(),key=lambda x:x[1],reverse=True) #降序排序
print(lst[0])

6.水果账单

'''
文件fruits-saturday.txt中保存了小明周六买水果的消费情况
苹果 30.6香蕉20.8葡萄 15.5草莓30.2樱桃43.9请写程序分析1.  这些水果—共花费了多少钱?
2.  花费最多的水果是哪个文件fruits-sunday.txt 中保存了小明周日买水果的消费情况
苹果  20.6
香蕉  16.8
樱桃  30.5
大鸭梨  10.5
火龙果  18.8周六,周日两天,  —共买了多少水果
2.  周六,周日两天都买的水果有哪些?
3.  哪些水果是周日买了而周六没有买的?
4.  两天—共花费了多少钱买水果
5.  哪个水果花费的钱最多,花了多少?分析文件结构 可以发现每行数据之间用的是空格隔开 然后是换行符'''# 读取文件
def read_file(filename):info = {}  # 字典 用于存放水果名字和价格with open(filename, 'r', encoding='utf-8') as f:datas = [i.strip().split() for i in f.readlines()]  # 去除换行符 再按空格隔开')for data in datas:name = data[0]price = float(data[1])info[name] = pricereturn infodef func1():info = read_file('fruits-saturday.txt')# 1.这些·水果共花费了多少钱?total = 0for k, v in info.items():total += vprint(total)# 2.花费最多的水果是哪个max_price = 0max_name = ''for k, v in info.items():if v > max_price:max_price = vmax_name = kprint(max_name, max_price)def func2():info1 = read_file('fruits-saturday.txt')info2 = read_file('fruits-sunday.txt')# 周六,周日两天, 共买了多少水果# 用集合更方便set1 = set(list(info1.keys()))set2 = set(list(info2.keys()))print(set1 | set2)# 周六,周日两日都买水果有哪些?print(set1 & set2)  # 并集# 哪些水果是周日买了而周六没有买的?print(set2 - set1)  # 差集# 4.两天—共花费了多少钱买水果print(sum(list(info1.values())) + sum(list(info2.values())))# 5.哪个水果花费的钱最多, 花了多少?name = ''max_price = 0for k, v in info1.items():if v > max_price:max_price = vname = kfor k, v in info2.items():if v > max_price:max_price = vname = kprint(name, max_price)
func1()
func2()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm批量注释或取消多行

1. 背景和介绍 在我们编写Python代码的过程中,注释是非常重要的。它可以帮助我们理解代码的逻辑、功能和用法,并且方便其他开发者阅读和维护代码。然而,在大型项目中,有时需要批量注释或取消注释多行代码,手动操作会非…

UI-Diffuser——使用生成性人工智能的UI原型设计

概述。 移动UI是影响参与度的一个重要因素,例如用户对应用的熟悉程度和使用的便利性。如果你有一个类似的应用程序,你可能会选择一个具有现代、好看的设计的应用程序,而不是一个旧的设计。然而,要从头开始研究什么样的UI最适合应…

Java中使用Redis实现分布式锁的三种方式

1. 导语 随着软件开发领域的不断演进,并发性已经成为一个至关重要的方面,特别是在资源跨多个进程共享的分布式系统中。 在Java中,管理并发性对于确保数据一致性和防止竞态条件至关重要。 Redis作为一个强大的内存数据存储,为在Java应用程序中实现分布式锁提供了一种高效的…

Go图片列表

需求 在一个页面浏览目录下所有图片 代码 package mainimport ("net/http""fmt""io/ioutil""sort""strings""strconv" )func handleRequest(w http.ResponseWriter, r *http.Request) {fmt.Println(r.Proto &…

静态库、动态库回顾

回顾一下库相关的知识点&#xff0c;总结备忘一下。在某种情况下&#xff0c;你有了如下的代码&#xff0c;结构如下 //pra.h #include <stdio.h> void test_01(); //pra.c #include "pra.h" void test_01() {printf("xxxxxxx----->%s %s()\n",…

typescript类型检查和原始类型

typescript类型检查和原始类型 类型检查 非严格类型是typescript默认的类型检查模式&#xff0c;在该模式下&#xff0c;类型检查的规则相对轻松&#xff0c;不会对undefined和null值做过多的限制&#xff0c;允许将undefined和null值赋给string类型的变量。进行JavaScript代…

【ChatGPT with Date】使用 ChatGPT 时显示消息时间的插件

文章目录 1. 介绍2. 使用方法2.1 安装 Tampermonkey2.2 安装脚本2.3 使用 3. 配置3.1 时间格式3.2 时间位置 4. 反馈5. 未来计划6. 开源协议7. 供给开发者自定义修改脚本的文档7.1 项目组织架构7.2 定义新的 Component(1) 定义一个新的 Component 类(2) 注册该 Component 7.3 一…

ICode国际青少年编程竞赛- Python-1级训练场-基本操作

ICode国际青少年编程竞赛- Python-1级训练场-基本操作 1、 Dev.step(3)2、 Dev.step(1)3、 Dev.step(7)4、 Dev.step(-1)5、 Dev.step(-5)6、 Dev.step(3) Dev.step(-8)7、 Dev.turnRight() Dev.step(1)8、 Dev.turnLeft() Dev.step(1)9、 Dev.step(4) Dev.tur…

自动找出字符串中有符号数字

需求 代码 class Solution:def myAtoi(self, s: str) -> int:s s.strip() # 删除首尾空格if not s: return 0 # 字符串为空则直接返回res, i, sign 0, 1, 1int_max, int_min, bndry 2 ** 31 - 1, -2 ** 31, 2 ** 31 // 10if s[0…

2024年 Java 面试八股文——SpringMVC篇

目录 1.简单介绍下你对springMVC的理解? 2.说一说SpringMVC的重要组件及其作用 3.SpringMVC的工作原理或流程 4.SpringMVC的优点 5.SpringMVC常用注解 6.SpringMVC和struts2的区别 7.怎么实现SpringMVC拦截器 8.SpringMvc的控制器是不是单例模式&#xff1f;如果是&am…

B树:原理、操作及应用

B树&#xff1a;原理、操作及应用 一、引言二、B树概述1. 定义与性质2. B树与磁盘I/O 三、B树的基本操作1. 搜索&#xff08;B-TREE-SEARCH&#xff09;2. 插入&#xff08;B-TREE-INSERT&#xff09;3. 删除&#xff08;B-TREE-DELETE&#xff09; 四、B树的C代码实现示例五、…

蓝桥杯练习系统(算法训练)ALGO-953 混合积

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 众所周知&#xff0c;人人都在学习线性代数&#xff0c;既然都学过&#xff0c;那么解决本题应该很方便。   宇宙大战中&…

oracle杀死锁时如果是多机并行怎么查

在Oracle中&#xff0c;当处理多机并行的锁问题时&#xff0c;查找和杀死锁定的会话可能涉及到跨多个数据库实例或服务器的操作。以下是一些建议的步骤和查询&#xff0c;帮助你在多机并行的环境中查找和杀死锁&#xff1a; 确定锁定对象&#xff1a; 首先&#xff0c;你需要…

MongoDB聚合运算符:$substr

MongoDB聚合运算符&#xff1a;$substr 文章目录 MongoDB聚合运算符&#xff1a;$substr语法使用举例 $substr聚合运算符返回字符串的子串&#xff0c;子串是从指定索引位置开始并包含指定数量的字符&#xff0c;索引是从零开始。自3.4版本起 $substr已弃用&#xff0c;目前 …

K8s: Helm搭建mongodb集群(1)

mongodb 集群搭建 mongdb 部署前 需要创建 pvc, pv 和 sc&#xff0c;如果在云上会自动创建helm 应用中心: https://artifacthub.io 1 &#xff09;Helm 安装 mongodb A. 无本地存储配置&#xff0c;重启数据消失 在 https://artifacthub.io/packages/helm/bitnami/mongodb…

如何在postman上提交文件格式的数据

如何在postman上提交文件格式的数据 今天在写一个文件上传的功能接口时&#xff0c;想用postman进行提交&#xff0c;花了些时间才找到在postman提交文件格式的数据。记录一下吧&#xff01; 1.打开postman&#xff0c;选择POST提交方式&#xff0c;然后在Params那一行的Head…

计算机网络chapter2——家庭作业

文章目录 2.1 节&#xff08;1&#xff09;列出5种非专用的因特网应用及它们所使用的应用层协议。&#xff08;2&#xff09;网络体系结构与应用程序体系结构之间有什么区别?&#xff08;3&#xff09;对两进程之间的通信会话而言&#xff0c;哪个进程是客户&#xff0c;哪个进…

设计模式: 代理模式

目录 一&#xff0c;代理模式和适配器模式区别 二&#xff0c;代理模式 三&#xff0c;特点 四&#xff0c;组成部分和实现步骤 五&#xff0c;案例 六&#xff0c;应用场景 一&#xff0c;代理模式和适配器模式区别 意图&#xff1a;代理模式控制访问并可能添加额外功能…

抖音视频评论区用户采集 根据视频链接批量获取用户信息

要批量获取抖音视频评论区用户的信息&#xff0c;可以通过抖音开放平台的接口来实现。 首先&#xff0c;你需要在抖音开放平台注册开发者账号&#xff0c;并创建一个应用。然后&#xff0c;使用抖音开放平台提供的接口&#xff0c;可以根据视频链接获取视频的详细信息&#xf…

数据分析--客户价值分析RFM(K-means聚类/轮廓系数)

原数据 import os import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn import metrics ### 数据抽取&#xff0c;读⼊数据 df pd.read_csv("customers1997.csv") #相对路径读取数据 print(df.info()) pr…