菜学校进行了一次考试,成绩需保存于文件score.dat。该文件的格式上要求包含爾 u这种), 押核心! 列信息:学号(长整型)、成锁(单精度浮点数)。编写程序,实现信息的录人、保存和证不。使人感受 要求: (1)数据录人、保存功能:通过控制台输人若千学生的学号和成缆,将信息保存到文件!!多 score.dat 甲。 ( 2)数据读取,亟不功能,可以从文件score dat 中读取学生的学号和成绩,并显示于控,制合。
时间: 2024-03-11 19:49:55 浏览: 16
好的,我会根据您的要求进行回答。下面是一个简单的实现过程:
```python
import struct
# 数据录入和保存
with open('score.dat', 'wb') as file:
while True:
stu_id = input('请输入学生学号(输入exit退出):')
if stu_id == 'exit':
break
score = float(input('请输入学生成绩:'))
# 将学号和成绩打包成二进制数据并写入文件
data = struct.pack('if', int(stu_id), score)
file.write(data)
# 数据读取和显示
with open('score.dat', 'rb') as file:
while True:
# 每次读取8个字节,即一个学号和一个成绩
data = file.read(8)
if not data:
break
# 解包得到学号和成绩并显示出来
stu_id, score = struct.unpack('if', data)
print('学号:%d,成绩:%.1f' % (stu_id, score))
```
上述代码中,我们使用了 Python 的 struct 模块来进行二进制数据的打包和解包。在数据录入和保存时,我们通过控制台输入学生学号和成绩,然后将其打包成二进制数据并写入文件中。在数据读取和显示时,我们通过循环读取文件中的二进制数据,并解包得到学号和成绩,然后输出到控制台上。
需要注意的是,这里我们使用了文件的二进制模式('wb' 和 'rb')来进行读写操作,而不是默认的文本模式。另外,我们在打包和解包时使用了一些特定的格式字符('i' 表示长整型,'f' 表示单精度浮点数),需要根据实际情况进行调整。