一手好牌硬打。
目录
一、实验目的
二、实验环境
三、实验步骤
四、实验结果
1.图片备份
2.将文件中所有的小写字母转换成大写字母,将所有的大写字转换成小写字母
3.完成班级学生成绩的录入,并保存在csv文件中。
4.获得csv文件中的成绩,并计算班级的总成绩。
5.将学生的信息以json的形式保存在文件中。
6.输入姓名,并查看文件中是否存在,如果存在显示学生的所有信息。
五、实验心得
一、实验目的
- 图片备份
- 将文件中所有的小写字母转换成大写字母,将所有的大写字转换成小写字母
- 完成班级学生成绩的录入,并保存在csv文件中。
- 获得csv文件中的成绩,并计算班级的总成绩。
- 将学生的信息以json的形式保存在文件中。
- 输入姓名,并查看文件中是否存在,如果存在显示学生的所有信息。
二、实验环境
安装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()
自己截图嗷!做人可以摆!但是不能太摆!
五、实验心得
通过撰写实验报告,巩固了在课堂上学习的知识,让我对编程有了更深刻的认识。开始的时候学的很吃力,幸好那时候我没有放弃。学不进的时候每天逼自己学一点,不过是以敲代码为主。那个时候我真的有怀疑自己为什么大学要选择编程这个专业,明明那么多专业,可能冥冥之中自有定数吧。我觉得看别人敲真的和自己敲是两回事。你觉得你听懂了,可是你拿到这个题目一点思路都没有,就说明你还是没学会。我现在觉得培养代码思维最重要的方式就是敲代码,因为你敲代码的时候会去思考步骤,有没有更简便的方法、或者它一般应用于哪个方面、优点缺点等等都可以帮你扩展你的整个知识面。敲代码也让我收获了很多,我不知道人有没有跟我一样,非常享受解决问题的过程,现在算上道了么,我也不知道。我不知道的东西越多,我的求知欲就越强烈。我记得有一句话是这样说的:“如果你无法拒绝,那就享受它”