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