利用函数编写程序,生成50个随机数据,模拟一个班的考试成绩(要求在40~100分之间),计算这批数据的平均分、最高分和最低分)
时间: 2023-11-28 11:49:10 浏览: 118
下面是Python代码实现:
```python
import random
def generate_scores(num):
scores = []
for i in range(num):
score = random.randint(40, 100)
scores.append(score)
return scores
def calculate_stat(scores):
avg_score = sum(scores) / len(scores)
max_score = max(scores)
min_score = min(scores)
return avg_score, max_score, min_score
if __name__ == '__main__':
scores = generate_scores(50)
avg_score, max_score, min_score = calculate_stat(scores)
print("平均分:{:.2f}\n最高分:{}\n最低分:{}".format(avg_score, max_score, min_score))
```
代码运行结果:
```
平均分:70.94
最高分:99
最低分:42
```
相关问题
4.python利用函数编写程序,生成50个随机数据,模拟一个班的考试成绩(要求在40~100分之间)。计算这批数据的平均分、最高分和最低分,并排序由高到低输出。
你可以使用Python的random模块来生成随机数据,并使用函数来实现这个程序。下面是一个示例代码:
```python
import random
def generate_scores(num_scores):
scores = []
for _ in range(num_scores):
score = random.randint(40, 100)
scores.append(score)
return scores
def calculate_average(scores):
total = sum(scores)
average = total / len(scores)
return average
def calculate_highest(scores):
highest = max(scores)
return highest
def calculate_lowest(scores):
lowest = min(scores)
return lowest
def sort_scores(scores):
sorted_scores = sorted(scores, reverse=True)
return sorted_scores
num_scores = 50
scores = generate_scores(num_scores)
average = calculate_average(scores)
highest = calculate_highest(scores)
lowest = calculate_lowest(scores)
sorted_scores = sort_scores(scores)
print("平均分:", average)
print("最高分:", highest)
print("最低分:", lowest)
print("排序后的成绩:", sorted_scores)
```
这段代码会生成50个在40到100之间的随机整数作为考试成绩,并计算平均分、最高分和最低分,最后将成绩按照从高到低排序输出。
22 级计算机类共有 5 个班,每班现假定有 50 名同学,本学期有6门课程考试,每门课程成绩是百分制。现规定每个同学的成绩记录包含以下数据:学号、姓名以及各门课程的成缋共8项,其中学号是一个8位的数宇,每个学生都有唯一的学号。编写程序完成以下 操作要求: (1)编写一个成绩生成两数,使用随机数方法,利用随机两数生成学生的各门课程的成绩(每门课程的成绩都是 0-100 之间的整数),通过调用该西数生成全部学生的成绩(因为学生太多,现在不要你输入真实成绩),学号可以简单按顺序号来,姓名也可以简单处理(比如:字母加数字的形式)。以班为单位把成绩记录(包括学号 姓名6门课程成绩)存入5个不同的输入文件 in1 (inz、in3、in4、in5)中(每个文件分别存为二进制格式和文本格式两份),在文件内以学号排序;
以下是我为您编写的 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` 函数用来将成绩记录写入文件,包括二进制格式和文本格式两种方式。
最后,我们可以调用上述函数,生成成绩记录并写入文件。注意,由于本程序只是模拟生成成绩记录,因此学号和姓名是随机生成的,且并不具有真实意义。
阅读全文