Python 实验任务:学生成绩数据生成与矩阵乘法计算
Python 实验任务:学生成绩数据生成与矩阵乘法计算
本实验任务包含两个部分:
(1) 学生成绩数据生成与统计分析
使用 Python 编写程序,生成 100 个学生的成绩数据,每个学生的数据包含姓名和 6 门课程的成绩。姓名和成绩都是随机产生的。注意姓名是一个长度为 10 的随机字符串。
任务要求:
- 统计每一个学生的 6 门课程的平均成绩。
- 统计每一门课的平均成绩,最高成绩,最低成绩。
示例数据:
'adfasdfaaaf' , 80, 67, 87, 54, 90, 75
'bssdfdghgd' , 90, 33, 45, 64, 34, 34
代码如下:
import random
# 生成随机姓名
def random_name():
name = ''
for i in range(10):
name += chr(random.randint(97, 122))
return name
# 生成随机成绩
def random_score():
return random.randint(0, 100)
# 生成 100 个学生的成绩数据
students = []
for i in range(100):
name = random_name()
scores = [random_score() for j in range(6)]
student = {'name': name, 'scores': scores}
students.append(student)
# 统计每一个学生的 6 门课程的平均成绩
for student in students:
avg_score = sum(student['scores']) / 6
student['avg_score'] = avg_score
# 统计每一门课的平均成绩,最高成绩,最低成绩
subject_scores = [[] for i in range(6)]
for student in students:
for i in range(6):
subject_scores[i].append(student['scores'][i])
for i in range(6):
subject_avg_score = sum(subject_scores[i]) / 100
subject_max_score = max(subject_scores[i])
subject_min_score = min(subject_scores[i])
print('第{}门课的平均成绩为:{:.2f},最高成绩为:{},最低成绩为:{}'.format(i + 1, subject_avg_score, subject_max_score, subject_min_score))
(2) 矩阵乘法
使用 Python 编写程序,计算两个矩阵的乘法。
任务要求:
- 用户输入第一个矩阵的大小(m, n)。
- 用户输入 m * n 个矩阵元素。
- 用户输入第二个矩阵的大小 (m, n)。
- 用户输入 m * n 个矩阵元素。
- 若两个矩阵无法相乘:输出 '无法计算'。
- 否则计算两个矩阵的乘法并输出结果。
代码如下:
# 输入第一个矩阵的大小
m1, n1 = map(int, input('请输入第一个矩阵的大小(用空格隔开):').split())
# 输入第一个矩阵的元素
matrix1 = []
for i in range(m1):
row = list(map(int, input('请输入第一个矩阵第{}行的元素(用空格隔开):'.format(i + 1)).split()))
matrix1.append(row)
# 输入第二个矩阵的大小
m2, n2 = map(int, input('请输入第二个矩阵的大小(用空格隔开):').split())
# 输入第二个矩阵的元素
matrix2 = []
for i in range(m2):
row = list(map(int, input('请输入第二个矩阵第{}行的元素(用空格隔开):'.format(i + 1)).split()))
matrix2.append(row)
# 判断是否能相乘
if n1 != m2:
print('无法计算!')
else:
# 计算矩阵乘法
result = [[0 for j in range(n2)] for i in range(m1)]
for i in range(m1):
for j in range(n2):
for k in range(n1):
result[i][j] += matrix1[i][k] * matrix2[k][j]
# 输出结果
for row in result:
print(row)
完成以上两个实验任务,并提交代码。
原文地址: https://www.cveoy.top/t/topic/nzS3 著作权归作者所有。请勿转载和采集!