22 级计算机类共有 5 个班,每班现假定有 50 名同学,本学期有6门课程考试,每门课程成绩是百分制。现规定每个同学的成绩记录包含以下数据:学号、姓名以及各门课程的成缋共8项,其中学号是一个8位的数宇,每个学生都有唯一的学号。编写程序完成以下 操作要求: (1)编写一个成绩生成两数,使用随机数方法,利用随机两数生成学生的各门课程的成绩(每门课程的成绩都是 0-100 之间的整数),通过调用该西数生成全部学生的成绩(因为学生太多,现在不要你输入真实成绩),学号可以简单按顺序号来,姓名也可以简单处理(比如:字母加数字的形式)。以班为单位把成绩记录(包括学号 姓名6门课程成绩)存入5个不同的输入文件 in1 (inz、in3、in4、in5)中(每个文件分别存为二进制格式和文本格式两份),在文件内以学号排序;
时间: 2024-01-03 17:05:15 浏览: 79
以下是我为您编写的 Python 程序,实现了您的要求:
```python
import random
# 生成学生信息
def generate_student_info():
student_id = str(random.randint(10000000, 99999999))
student_name = 'S' + str(random.randint(1, 250))
grades = [random.randint(0, 100) for i in range(6)]
return [student_id, student_name] + grades
# 生成全部学生的成绩记录
def generate_all_grades():
all_grades = []
for i in range(5):
grades = [generate_student_info() for j in range(50)]
grades.sort(key=lambda x: x[0])
all_grades.append(grades)
return all_grades
# 将成绩记录写入文件
def write_grades_to_file(grades, filename):
# 写入二进制格式文件
with open(filename + '_binary', 'wb') as f:
for grade in grades:
data = b''
for item in grade:
if isinstance(item, str):
data += item.encode() + b'\t'
else:
data += str(item).encode() + b'\t'
f.write(data + b'\n')
# 写入文本格式文件
with open(filename + '_text', 'w') as f:
for grade in grades:
f.write('\t'.join([str(item) for item in grade]) + '\n')
# 生成全部学生的成绩记录
all_grades = generate_all_grades()
# 将成绩记录写入文件
write_grades_to_file(all_grades[0], 'in1')
write_grades_to_file(all_grades[1], 'in2')
write_grades_to_file(all_grades[2], 'in3')
write_grades_to_file(all_grades[3], 'in4')
write_grades_to_file(all_grades[4], 'in5')
```
程序中,`generate_student_info` 函数用来生成一个学生的成绩记录,包括学号、姓名和六门课程的成绩。`generate_all_grades` 函数用来生成全部学生的成绩记录,按班级分组存储在一个二维列表中。`write_grades_to_file` 函数用来将成绩记录写入文件,包括二进制格式和文本格式两种方式。
最后,我们可以调用上述函数,生成成绩记录并写入文件。注意,由于本程序只是模拟生成成绩记录,因此学号和姓名是随机生成的,且并不具有真实意义。
阅读全文
相关推荐

















