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

发布于:2024-06-07 ⋅ 阅读:(144) ⋅ 点赞:(0)

一手好牌硬打。

目录

一、实验目的

二、实验环境

三、实验步骤

四、实验结果

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 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()

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

五、实验心得

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


网站公告

今日签到

点亮在社区的每一天
去签到