用python 编写程序:要求键入课程名称及成绩,用空格分割,每门课程一行,遇空行按Enter键结束录入,最后显示最高分和最低分,平均分
时间: 2023-07-29 08:14:33 浏览: 114
以下是一个可能的实现:
```python
scores = []
while True:
line = input()
if not line:
break
name, score = line.split()
score = float(score)
scores.append((name, score))
if not scores:
print("No scores entered")
else:
max_score = max(scores, key=lambda x: x[1])[1]
min_score = min(scores, key=lambda x: x[1])[1]
avg_score = sum(x[1] for x in scores) / len(scores)
print("Max score:", max_score)
print("Min score:", min_score)
print("Avg score:", avg_score)
```
使用时,每输入一行格式为`课程名称 成绩`,以空格分隔。当输入空行时,程序会停止录入,并输出最高分、最低分和平均分。如果没有输入任何分数,则会输出`No scores entered`。
相关问题
请用python键盘输入学习的课程名称及考分等信息,屏幕输出得分最高的课程及成绩,得分最低的课程及成绩,以及平均分(保留2位小数)。 输入格式: 键盘输入学习的课程名称及考分等信息,信息间采用空格分隔,每个课程一行,空行回车结束录入。 输出格式: 屏幕输出得分最高的课程及成绩,得分最低的课程及成绩,以及平均分(保留2位小数)。 输入样例: 示例格式如下: 数学 90 语文 95 英语 86 物理 84 生物 87 输出样例: 最高分课程是语文95, 最低分课程是物理84, 平均分是88.40
以下是 Python 代码实现:
```python
scores = []
while True:
input_str = input()
if input_str == "":
break
course, score = input_str.split()
scores.append((course, int(score)))
sorted_scores = sorted(scores, key=lambda x: x[1], reverse=True)
highest_course, highest_score = sorted_scores[0]
lowest_course, lowest_score = sorted_scores[-1]
total_score = sum(score for _, score in scores)
average_score = total_score / len(scores)
print("最高分课程是{}{}, 最低分课程是{}{}, 平均分是{:.2f}".format(highest_course, highest_score, lowest_course, lowest_score, average_score))
```
首先,使用一个循环读取键盘输入的课程名称及考分等信息,每行一个课程,直到读入一个空行为止。将每个课程的名称和分数转换为一个元组,然后将所有元组放入一个列表 `scores` 中。
然后,使用 `sorted()` 函数对 `scores` 列表进行排序,按照分数从高到低排序。取出排序后的列表中的第一个元组,即为得分最高的课程及成绩;取出排序后的列表中的最后一个元组,即为得分最低的课程及成绩。
计算所有课程的总分和平均分,最后输出结果。
例如:
输入:
```
数学 90
语文 95
英语 86
物理 84
生物 87
```
输出:
```
最高分课程是语文95, 最低分课程是物理84, 平均分是88.40
```
编写Python代码,以实现如下功能:键盘输入小明学习的课程名称及考分等信息,信息间采用空格分隔,每个课程一行,空行回车结束录入,示例格式如下: 数学 90 语文 95 英语 86 物理 84 生物 87 屏幕输出得分最高的课程及成绩,得分最低的课程及成绩,以及平均分(保留2位小数)。 注意,其中逗号为英文逗号,格式如下: 最高分课程是语文95,最低分课程是物理84,平均分是88.40
以下是实现该功能的Python代码:
```python
scores = {}
total_score = 0
count = 0
while True:
input_str = input()
if not input_str:
break
course, score = input_str.split()
score = int(score)
scores[course] = score
total_score += score
count += 1
max_course, max_score = max(scores.items(), key=lambda x: x[1])
min_course, min_score = min(scores.items(), key=lambda x: x[1])
average_score = total_score / count
print("最高分课程是{}{},最低分课程是{}{},平均分是{:.2f}".format(max_course, max_score, min_course, min_score, average_score))
```
代码解释:
首先定义一个空字典 `scores`,用于存储每门课程的成绩。同时定义变量 `total_score` 和 `count` 分别表示总分和课程数,用于计算平均分。
接下来进入一个无限循环,每次循环读入一行输入字符串 `input_str`,如果输入字符串为空则跳出循环。
将输入字符串按空格分隔为课程和成绩两个字符串,将成绩字符串转换为整数,并将课程和成绩分别存入字典 `scores` 中。同时将成绩加入总分中,课程数加 1。
循环结束后,使用 `max()` 和 `min()` 函数从字典 `scores` 中找到最高分和最低分对应的课程和成绩,使用格式化字符串输出结果。平均分计算公式为总分除以课程数,使用 `format()` 函数将结果保留两位小数并输出。
阅读全文