python用函数输入一批学生成绩 求平均成绩和最高分
时间: 2024-02-28 09:24:02 浏览: 171
可以这样实现:
```python
def calculate_scores(scores):
total_scores = sum(scores)
average_score = total_scores / len(scores)
max_score = max(scores)
return average_score, max_score
# 调用函数
scores = [80, 90, 85, 70, 95]
average_score, max_score = calculate_scores(scores)
print("平均成绩:", average_score)
print("最高分:", max_score)
```
代码中,首先定义了一个 `calculate_scores` 函数,该函数接收一个列表参数 `scores`,并返回平均成绩和最高分。在函数中,使用 `sum` 函数求出所有成绩的总分,然后除以成绩的数量得到平均成绩。使用 `max` 函数求出最高分。最后,将平均成绩和最高分作为元组返回。
调用函数时,先定义一个学生成绩的列表 `scores`,然后将其作为参数传递给 `calculate_scores` 函数。最后,使用两个变量 `average_score` 和 `max_score` 分别接收函数返回的平均成绩和最高分,并打印输出。
相关问题
从键盘输入一批学生的成绩,计算平均成绩,最高分和最低分,当输入的学生成绩小于零时停止,所有结果保留2位小数。
下面是Python的代码实现:
```python
scores = []
while True:
score = float(input("请输入学生成绩(输入负数结束):"))
if score < 0:
break
scores.append(score)
count = len(scores)
if count == 0:
print("没有输入任何成绩!")
else:
avg_score = sum(scores) / count
max_score = max(scores)
min_score = min(scores)
print("平均成绩:{:.2f}".format(avg_score))
print("最高分:{:.2f}".format(max_score))
print("最低分:{:.2f}".format(min_score))
```
首先,我们定义一个空列表`scores`,用于存储输入的学生成绩。然后,我们通过一个`while`循环不断输入成绩,如果输入的成绩小于零,则跳出循环。注意,`input`函数返回的是字符串类型,需要使用`float`函数将其转换为浮点数。
接着,我们使用`len`函数计算学生人数,如果为零,则输出“没有输入任何成绩!”;否则,我们使用`sum`、`max`和`min`函数分别计算平均成绩、最高分和最低分,并使用`format`函数格式化输出结果,保留两位小数。
输入一批学生的成绩,求最高分?请采用for、while、do-while三种方式
当然可以。在Python中,我们通常不会直接使用`for`、`while`或`do-while`循环来求解这个问题,因为它们更适合处理迭代操作,而这里更适合使用列表解析或者内置函数。然而,为了演示如何用这三种循环结构实现,我会分别给出示例。假设有一个名为`scores`的学生分数列表:
1. **For循环**:
```python
scores = [85, 92, 78, 96, 89]
highest_score = scores[0] # 先假设第一个分数是最高的
for score in scores:
if score > highest_score:
highest_score = score
print("最高分:", highest_score)
```
2. **While循环**:
```python
scores = [85, 92, 78, 96, 89]
highest_score = scores[0]
index = 0
while index < len(scores):
if scores[index] > highest_score:
highest_score = scores[index]
index += 1
print("最高分:", highest_score)
```
3. **Do-while循环(虽然Python没有原生的do-while,我们可以模拟)**:
```python
scores = [85, 92, 78, 96, 89]
highest_score = scores[0]
index = 0
do:
if scores[index] > highest_score:
highest_score = scores[index]
index += 1
while index < len(scores)
print("最高分:", highest_score)
```
请注意,由于Python的特性,`do-while`并不是必需的,上述的`while`循环就能完成同样的任务。
阅读全文