实验名称:文件数据存储练习

一手好牌硬打。

目录

一、实验目的

二、实验环境

三、实验步骤

四、实验结果

1.图片备份

2.将文件中所有的小写字母转换成大写字母,将所有的大写字转换成小写字母

3.完成班级学生成绩的录入,并保存在csv文件中。

4.获得csv文件中的成绩,并计算班级的总成绩。

5.将学生的信息以json的形式保存在文件中。

6.输入姓名,并查看文件中是否存在,如果存在显示学生的所有信息。

五、实验心得


一、实验目的

  1. 图片备份
  2. 将文件中所有的小写字母转换成大写字母,将所有的大写字转换成小写字母
  3. 完成班级学生成绩的录入,并保存在csv文件中。
  4. 获得csv文件中的成绩,并计算班级的总成绩。
  5. 将学生的信息以json的形式保存在文件中。
  6. 输入姓名,并查看文件中是否存在,如果存在显示学生的所有信息。

二、实验环境

安装pycharm2023.3.4 

安装适配的jdk

三、实验步骤

1.图片备份

  • 申请访问shutil库使用shutil的copyfile方法
  • 新建参数去接收文件的地址
  • 再使用拼接字符串方法将该值赋给source
  • 以同样的方法赋值给destination
  • 拥有复制功能的方法,第一个参数通常是来源文件地址(你要复制哪个文件的地址)
            第二个参数通常是复制文件地址(复制完的新文件的地址)
  • 到桌面查看结果

2.将文件中所有的小写字母转换成大写字母,将所有的大写字转换成小写字母

  • 首先创建一个新的变量S去接收用户输入的字符串
  • 然后创建一个新的空数组
  • 通过for循环遍历字符串
  • 通过if语句条件判断找出小写字母,并通过upper()转化为大写字母
  • 通过elif判断找出大写字母,并通过lower()转化为小写字母
  • 然后通过else判断找出既不是大写字母也不是小写字母的数据,直接添加进空数组
  • 这样一直到循环结束,最后输出该数组

3.完成班级学生成绩的录入,并保存在csv文件中。

  • 创建一个空的csv文件,用于保存学生成绩数据。
  • 使用Python的csv模块打开csv文件,并创建一个csv写入对象。
  • 通过循环获取每个学生的姓名和成绩,并将其写入csv文件中。
  • 关闭csv文件。

4.获得csv文件中的成绩,并计算班级的总成绩。

  • 使用Python的csv模块打开之前保存的csv文件,并创建一个csv读取对象。
  • 通过循环读取每个学生的成绩,并将其累加到班级总成绩中。
  • 关闭csv文件。

5.将学生的信息以json的形式保存在文件中。

  • 创建一个空的json文件,用于保存学生信息。
  • 使用Python的json模块打开json文件,并创建一个字典对象。
  • 通过循环获取每个学生的姓名和成绩,并将其添加到字典对象中。
  • 使用json模块将字典对象转换为json格式的字符串,并写入json文件中。
  • 关闭json文件。

6.输入姓名,并查看文件中是否存在,如果存在显示学生的所有信息。

  • 使用Python的json模块打开之前保存的json文件,并加载其中的数据。
  • 输入要查询的学生姓名。
  • 判断学生姓名是否存在于加载的数据中,如果存在则显示学生的所有信息。

四、实验结果

1.图片备份

#文档复制
#copyfile:只复制文件内容,不复制文件描述内容(比如什么时候建立)
#copy:
#copy2:比前两个更强大,可以复制文件描述内容(文件权限,文件创建的描述型资料)
#先调用shutil库,copyfile方法存在于shutil库中。
# 如果需要调用copyfile方法,首先需要申请访问shutil库
import shutil
source_adress = r"C:\Users\肖天宇\OneDrive\军事理论\OneDrive\桌面"   
#这里每个人不一样,你要填写你自己文件所在的绝对路径#用fstring串接路径与档案名称
source = f"{source_adress}/source_file.txt"
destination = f"{source_adress}/destination_file.txt"
# 拥有复制功能的方法,第一个参数通常是来源文件地址(你要复制哪个文件的地址)
# 第二个参数通常是复制文件地址(复制完的新文件的地址)
shutil.copyfile(source,destination)

注意:完成这一小题的前提是需要创建一个csv文件(并且将该文件命名为source_file,是你需要复制的文件;而destination_file是你复制好的文件);

关于如何创建一个csv文件?

首先桌面新建一个文本文档。将该文件另存为source_file.csv,并且将类型改为所有类型

然后点开文件你会发现它的格式变得跟excel表差不多

然后再运行代码找桌面上那个名字为destination.csv的文件截图

2.将文件中所有的小写字母转换成大写字母,将所有的大写字转换成小写字母

#接收用户输入的字符串
s = input("请输入字符串:")#新建一个空数组
b = []
for i in s:#把小写字母择出来,然后再把小写字母变成大写字母,添加到新建的空数组中if i.islower():b.append(i.upper())# 把大写字母择出来,然后再把大写字母变成小写字母,添加到新建的空数组中elif i.isupper():b.append(i.lower())else:#如果既不是小写字母也不是大写字母,原样添加进空数组b.append(i)#输出结果
print("".join(b))

3.完成班级学生成绩的录入,并保存在csv文件中。

# 3.完成班级学生成绩的录入,并保存在csv文件中。
data = [['99100', 90,  100, 91, 80,],['99101', 89,  95,  99, 80],['99102', 87,  90,  67, 100],['99103', 100, 99,  95, 90],['99104', 78,  80,  86, 88]
]
# 导入CSV模块
import csv# 新建嵌套列表data存储学号和成绩
data = [['99100', 90, 100, 91, 80, ],['99101', 89, 95, 99, 80],['99102', 87, 90, 67, 100],['99103', 100, 99, 95, 90],['99104', 78, 80, 86, 88]
]# 用for循环计算依次计算每个学生的总成绩
for i in range(5):# 总成绩=每个子列表后4个元素的和# data[i]依次取出子列表# [1:5]取出子列表中的第2个至第5个元素# sum函数计算子列表的和total_score = sum(data[i][1:5])# append函数向列表增加元素data[i].append(total_score)
# 查看最终生成的列表
# print(data)# 新建head变量存储标题行
head = ['学号', 'python', '数据结构', 'java', 'javaweb', '总分']# 以自动关闭文件的方式写入
# PY_08_06_Scores.csv文件路径(和代码在同一文件夹)
# w写入方式
# encoding='utf-8'编码方式
# newline=''去除CSV文件中的空行
with open('PY_08_06_Scores.csv', 'w', encoding='utf-8', newline='') as f:# 调用模块的类:模块名.类名()csv_writer = csv.writer(f)# 写入标题csv_writer.writerow(head)for i in range(5):# 调用类中的方法:对象.方法名()# writerow每次只能写入一行csv_writer.writerow(data[i])print('写入完毕!')

4.获得csv文件中的成绩,并计算班级的总成绩。

# 4.获得csv文件中的成绩,并计算班级的总成绩。
import csvdef calculate_total_score():total_score = 0# 打开之前保存的csv文件with open('grades.csv', 'r') as file:reader = csv.reader(file)# 循环读取每个学生的成绩并累加for row in reader:score = int(row)  # 假设成绩在第二列total_score += scoreprint("班级总成绩:", total_score)calculate_total_score()

5.将学生的信息以json的形式保存在文件中。

 # 5.将学生的信息以json的形式保存在文件中。
import jsondef save_student_info():student_info = {}# 循环录入学生的姓名和成绩while True:name = input("请输入学生姓名(输入exit退出):")if name == 'exit':breakscore = input("请输入学生成绩:")# 将姓名和成绩添加到字典对象中student_info[name] = score# 创建一个空的json文件with open('student_info.json', 'w') as file:# 将字典对象转换为json格式的字符串,并写入json文件中json.dump(student_info, file)save_student_info()

6.输入姓名,并查看文件中是否存在,如果存在显示学生的所有信息。

# 6.输入姓名,并查看文件中是否存在,如果存在显示学生的所有信息
import jsondef search_student_info():# 打开之前保存的json文件并加载数据with open('student_info.json', 'r') as file:student_info = json.load(file)name = input("请输入要查询的学生姓名:")# 判断学生姓名是否存在于加载的数据中if name in student_info:print("学生信息:")print("姓名:", name)print("成绩:", student_info[name])else:print("该学生不存在")search_student_info()

自己截图嗷!做人可以摆!但是不能太摆!

五、实验心得

通过撰写实验报告,巩固了在课堂上学习的知识,让我对编程有了更深刻的认识。开始的时候学的很吃力,幸好那时候我没有放弃。学不进的时候每天逼自己学一点,不过是以敲代码为主。那个时候我真的有怀疑自己为什么大学要选择编程这个专业,明明那么多专业,可能冥冥之中自有定数吧。我觉得看别人敲真的和自己敲是两回事。你觉得你听懂了,可是你拿到这个题目一点思路都没有,就说明你还是没学会。我现在觉得培养代码思维最重要的方式就是敲代码,因为你敲代码的时候会去思考步骤,有没有更简便的方法、或者它一般应用于哪个方面、优点缺点等等都可以帮你扩展你的整个知识面。敲代码也让我收获了很多,我不知道人有没有跟我一样,非常享受解决问题的过程,现在算上道了么,我也不知道。我不知道的东西越多,我的求知欲就越强烈。我记得有一句话是这样说的:“如果你无法拒绝,那就享受它”

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

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

相关文章

java 若依框架使用介绍

若依框架是一个开源的后台管理系统,用了2周最大的感觉就是比较轻量级的,有多种不同的版本,如前后端分离、微服务、移动端版本,集成了简单的代码生成器,入门比起jeecgboot要稍微更加简单一些。 官网地址:ht…

2024年应用经济学、管理科学与社会国际学术会议(ICAEMSS 2024)

2024年应用经济学、管理科学与社会国际学术会议(ICAEMSS 2024) 会议简介 2024年应用经济学、管理科学与社会国际学术会议将聚焦应用经济学和管理科学的前沿问题,深入探讨社会变革中的经济管理与科学应用。参会者将分享最新研究成果&#xf…

短剧小程序App系统源码:打造个性化追剧体验

随着数字媒体的迅猛发展,短剧作为一种新兴的娱乐形式,越来越受到广大观众的喜爱。为了满足用户对短剧内容的个性化需求,短剧小程序App系统应运而生。本文将深入探讨短剧App源码的核心功能,以及如何通过多语言支持和国际支付等技术…

超声波洗眼镜机是智商税吗?四款不能错过的超声波清洗机实力种草

在日常生活中,眼镜成为了我们不可或缺的伙伴,无论是阅读书籍、工作还是享受自然风光,清晰的视野总是至关重要。然而,眼镜上不可避免地会沾染灰尘、油脂甚至细菌,影响我们的视觉体验。传统的眼镜清洗方法虽然简单&#…

雷池WAF《动态防护》功能体验

一、雷池简介(官方) 自 2016 年起,长亭就开源了雷池的语义分析算法自动机引擎,随后又陆续开源了雷池相关风控插件和引擎通信协议。雷池的商业版本自发布以来,得到了各大咨询机构和众多顶级企业的认可。然而&#xff0…

MT3050 区间最小值

思路&#xff1a; 使用ST表 ST模板可参考MT3024 maxmin 代码&#xff1a; 1.暴力9/10&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e5 10; int n, m; int a[N]; int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin …

Java的垃圾回收算法详解

在Java编程语言中&#xff0c;垃圾回收&#xff08;Garbage Collection, GC&#xff09;是一个至关重要的概念&#xff0c;它负责自动管理内存&#xff0c;释放不再使用的对象所占用的空间&#xff0c;从而防止内存泄漏和溢出。下面我们将从技术难点、面试官关注点、回答吸引力…

2024精选热门骨传导耳机推荐,你不会还不挑选吧?

骨传导耳机作为最近两年来才兴起的耳机品类&#xff0c;在街头的出现频率并不是很高&#xff0c;很多人对骨传导耳机不够了解甚至没听说过。骨传导耳机不入耳的设计&#xff0c;安全性、舒适性和稳定性都更高&#xff0c;既然有这么多的优势&#xff0c;那就为大家挑选几款高性…

leetcode-[704]二分查找[27]移除元素

一、[704]二分查找 //二分法&#xff1a;有序 //[left,right] 故判定条件为left < right,等于此时有意义&#xff1b; //缩小范围 leftmid1&#xff1b; //right nums.length-1; //不要忘了修改mid 的值class Solution {public int search(int[] nums, int target) {int le…

16. 最接近的三数之和 - 力扣

1. 题目 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 2. 示例 3.分析 做这道题目前&#xff0c;先做这道&#xff1a;三数之和 &#x…

【归档】git使用

教材 廖雪峰博客 时间 2022年8月11日 13:39:52 - 2022年8月11日 15:59:53 学习过程 在开始学习之前&#xff0c;我首先对Git的不同区域概念进行了深入理解&#xff1a; 工作区&#xff1a;这是我们进行编辑和修改的地方&#xff0c;但这些修改尚未被跟踪。暂存区&#xf…

手动操作Telnet不嫌累?要不试一下我自制的自动执行指令Telnet工具吧!

网管小贾 / sysadm.cc 昨天发生了一件事&#xff0c;我现在仍记忆犹新。 一大早我就被秘书喊进了胡总的办公室…… 一进门&#xff0c;只见我们部门的赖经理也在。 我打完招呼&#xff0c;胡总就问我&#xff0c;最近调到我们部门实习的小王表现如何。 我偷偷瞥了一眼赖经理…

【已有项目版】uniapp项目发版pda -- Android Studio

必备资料清单&#xff1a; 构建完成的app项目 在HBuilderX开发的uniapp项目 .keystore文件 文章目录 1. 安装Android Studio&#xff1a;https://developer.android.google.cn/studio?hlzh-cn2. 安装Android 离线SDK&#xff1a;https://nativesupport.dcloud.net.cn/AppDocs…

短期业绩波动较大被券商不予评级,金种子酒背靠华润如何发力?

《港湾商业观察》施子夫 王璐 虽然一季度成功实现了扭亏为盈&#xff0c;但从近些年年报来看&#xff0c;金种子酒&#xff08;600199.SH&#xff09;的业绩压力依然不容小觑。白酒主业萎靡不振时&#xff0c;金种子酒开始了剥离非主营业务。 这些措施能否有利于主业向好&am…

Python变量运算:深入探索其复杂性与动态性

Python变量运算&#xff1a;深入探索其复杂性与动态性 在Python编程中&#xff0c;变量运算是一个核心且富有深度的主题。变量不仅仅是存储数据的容器&#xff0c;它们还承载着数据类型的多样性、动态性以及与运算符的交互性。本文将从四个方面、五个方面、六个方面和七个方面…

【vuejs】keep-alive组件的原理讲解和使用讲解

1. keep-alive 简介 Vue.js 框架中的 <keep-alive> 组件是一个用于缓存组件实例的内置组件&#xff0c;它使得组件在不活动时保持其状态&#xff0c;从而提高应用的性能和用户体验。当使用动态组件 <component> 切换视图时&#xff0c;不在显示的组件实例会被销毁…

jmeter的infludb+grafana实时监控平台

目的&#xff1a;可以实时查看到jmeter拷机信息 框架&#xff1a;将 Jmeter 的数据导入 InfluxDB &#xff0c;再用 Grafana 从 InfluxDB 中获取数据并以特定的模板进行展示 性能监控平台部署实践 一、influxDB 官网&#xff1a;https://www.influxdata.com/downloads/ wget h…

5款相见恨晚的神级软件推荐,每一款都让人惊喜

今天来给大家种草5款特别赞且完全免费的软件&#xff0c;每一款都超级好用&#xff0c;的值得大家去试试。 搜书大师「Android、iPhone」 亮点&#xff1a;看小说神器。 搜书大师是看小说的神器&#xff0c;而且永久免费哦&#xff0c;看书的时候再也不会被那些烦人的弹窗广…

PyQt5学习系列之ui转py后的使用

PyQt5学习系列之ui转py后的使用 前言实现主要起作用的语句主程序中使用总结 前言 ui转py后的使用 在已搭建好的架构QWidget中添加QWidget窗体。 实现 在QtDesigner中绘制好ui界面&#xff0c;通过工具将ui转py文件。实现的py文件再调用。 class ShowView(QWidget):def __in…

职场不设限<1>:真正的AI产品经理太少了

针对AI产品经理这个岗位畅聊并总结成文&#xff0c;希望能给大家的职业路径增加一种可能性 本文篇幅适中&#xff0c;内容环环相扣&#xff1a; 1&#xff0c;AI产品经理到底该怎么定义&#xff1f; 2&#xff0c;做AI产品经理需要具备哪些能力&#xff1f; 3&#xff0c;A…