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('该评论里有‘推荐’两个字')🎊如果你已经完成这个小练习,恭喜你到达练气三阶!🎊
请宿主继续加油!
