py列表小练习:成绩统计程序&&一些数据容器的小练习
·
编程练习题:学生成绩统计系统
题目描述:
请编写一个学生成绩统计程序,实现以下功能:
- 循环接收用户输入的学生成绩(整数),输入
q时结束输入; - 输入过程中如果输入非数字(且不是
q),提示 “输入格式错误,请重新输入!”; - 输入结束后,统计并输出以下信息:
- 输入的所有成绩列表
- 总人数
- 平均成绩
- 最高分
- 最低分
- 合格人数(成绩≥60 分)
- 优秀人数(成绩≥85 分)
- 优秀率(优秀人数 / 总人数 ×100,保留 2 位小数)
输入要求
- 成绩为整数,范围不限(无需校验成绩是否在 0-100 之间);
- 结束输入的标识为小写字母
q(输入大写Q无需处理,按格式错误提示); - 输入时忽略首尾空格(例如输入
90视为有效输入,转换为 90)。
写好了吗?写好了再看哦~
#————————————成绩统计程序(列表小练习)——————————————————
print('请输入学生成绩,结束请输入‘q’: ')
scores=[ ]
while True:
use_input=input().strip()
if use_input=='q':
print('输入结束')
break
try:
score=int(use_input)
scores.append(score)
except ValueError:
print('输入格式错误,请重新输入!')
print('您输入的成绩是',scores)
#总人数
total=len(scores)
# 总人数最高分
max_score = max(scores)
# 最低分
min_score = min(scores)
pas=0 #记录合格人数
excl=0 #记录优秀人数
for score in scores:
if score>=60:
pas+=1
if score>=85:
excl+=1
# 优秀率
rate=excl/total*100
# 平均成绩
avg=sum(scores)/total
print(f'总人数为:{total}')
print(f'平均成绩:{avg}')
print('最高分是', max_score)
print('最低分是' , min_score)
print('合格人数:',pas)
print('优秀人数:',excl)
print('优秀率:',rate)
编程练习题:数据容器综合练习
练习一:水果价格统计
题目描述:
给定一个存储水果名称和单价的字典,实现以下功能:
- 遍历并打印所有水果的名称;
- 找出字典中单价最高的水果,并输出其名称和价格(保留 1 位小数)。
给定字典
fruits = {
'苹果': 4.5,
'香蕉': 3.2,
'西瓜': 5.8
}
输出示例
苹果
香蕉
西瓜
最贵的水果是:西瓜,它的价格是:5.8元一斤
解题提示
- 遍历字典默认获取键(水果名称);
- 使用
max(字典, key=字典.get)可根据值找到对应的键,是字典常用技巧。
练习二:学生成绩分析
题目描述:
给定一个嵌套字典的学生成绩列表,实现以下功能:
- 遍历每个学生,计算其语文、数学、英语三科的平均分(保留 1 位小数)并输出;
- 计算每个学生的总分,找出总分最高的学生(支持多人同分最高),输出其姓名列表和总分。
给定列表:
students = [
{
'name':'张三',
'scores':{'语文':88,'数学':92,'英语':95}
},
{
'name':'李四',
'scores':{'语文':75,'数学':83,'英语':80}
},
{
'name':'王五',
'scores':{'语文':92,'数学':95,'英语':88}
}
]
输出示例
张三的平均成绩是: 91.7
李四的平均成绩是: 79.3
王五的平均成绩是: 91.7
总分最高的学生是['张三', '王五'],他的总分是275
解题提示
- 嵌套字典取值:
stu['scores'].values()可获取某学生所有科目成绩; - 处理 “多人同分最高” 需用列表存储姓名,通过判断总分与当前最高分的关系更新列表。
练习三:评论内容处理
题目描述
给定一段评论字符串,完成以下 3 个需求:
- 统计字符串中 “好喝” 出现的次数并输出;
- 将字符串中的 “贵” 替换为 “略高”,输出替换后的完整评论;
- 判断字符串是否包含 “推荐” 二字,输出对应的提示信息。
给定字符串
comment = "这家奶茶真好喝,环境也不错,就是价格有点贵,好喝好喝好喝!强烈推荐!"
输出示例
4
这家奶茶真好喝,环境也不错,就是价格有点略高,好喝好喝好喝!强烈推荐!
该评论里有‘推荐’两个字
解题提示
- 字符串
count(子串)可统计子串出现次数; - 字符串
replace(旧子串, 新子串)可替换指定内容; - 判断是否包含子串也可直接用
if '推荐' in comment:,更简洁。
数据容器小练习代码答案(自己编写的,新手如果有冗余什么的,欢迎评论区指正):
————————————————————数据容器小练习——————————————
#练习一 买水果
fruits={
'苹果':4.5,
'香蕉':3.2,
'西瓜':5.8
}
for fruit in fruits:
print(fruit)
# 找最贵的水果
item=max(fruits,key=fruits.get) #字典取出键值的很重要的方法
print(f'最贵的水果是:{item},他的价格是:{fruits[item]}元一斤')
#练习二:学生成绩表
students =[
{
'name':'张三',
'scores':{'语文':88,'数学':92,'英语':95}
},
{
'name':'李四',
'scores':{'语文':75,'数学':83,'英语':80}
},
{
'name':'王五',
'scores':{'语文':92,'数学':95,'英语':88}
}]
#计算平均分
flag=-1 #记录最高分学生
list_a=[] # 用于接收相同的分数最高的学生
names=''
for stu in students:
score=stu['scores'].values()
avg=sum(score)/len(score)
print(f'{stu['name']}的平均成绩是: {avg: .1f}')
#找到总分最高的学生 根据scores 找到name
a=sum(score) #计算总分
if a>flag:
flag=a #找到总分最高的scores
list_a=[stu['name']]
elif a==flag:
list_a.append(stu['name'])
print(f'总分最高的学生是{list_a},他的总分是{flag}')
#练习三:评论内容
comment="这家奶茶真好喝,环境也不错,就是价格有点贵,好喝好喝好喝!强烈推荐!"
#需求1:统计“好喝”出现次数
print(comment.count('好喝'))
#需求2:将字符串中的“贵”替换为“略高”
print(comment.replace('贵','略高'))
#需求3:是否包含“推荐”两个字
if comment.count('推荐')==0:
print('该评论里没有‘推荐’两个字')
else:
print('该评论里有‘推荐’两个字')
🎊如果你已经完成这个小练习,恭喜你到达练气三阶!🎊
请宿主继续加油!
更多推荐

所有评论(0)