题目:上次写的一个模拟数据库,根据名字查询成绩,这次使用字典实现,要求如下:
- 自己定义一个字典,内容为 名字-成绩形式
- 实现通过名字查询成绩,判断指定名字成绩是否存在
- 增加,删除,修改指定名字的成绩
- 计算平均成绩(使用dict.values()和sum()方法)
- 查询最高成绩和最低成绩
- 遍历字典,打印所有人的成绩(可使用dict.keys(),dict.values()或者dict.items()这三个方法把字典转为可迭代的)
- 假设字典中有一样的成绩,请使用dict.values()方法,把所有成绩转换list类型,使用set()去重,输出不重复的所有成绩
代码如下:
datebase={'张三':75,'李四':80,'王五':80}
namerecord=['张三','李四','王五'] #储存操作记录
scorerecord=[75,80,85]
actionrecord=['增加','增加','增加']
while True:
print('-----------------------')
print(''' 成绩管理系统v2.0
1.添加学生及成绩
2.删除学生及成绩
3.修改学生成绩
4.查询学生成绩
5.查询平均成绩
6.打印所有学生成绩
7.查询最高分和最低分
8.输出所有不重复分数
9.显示操作记录
0.退出系统''')
print('-----------------------')
choice=input('请选择:')
#添加学生及成绩
if choice =='1':
name=input('请输入要添加的学生姓名:')
score=int(input('请输入{}的成绩:'.format(name))) #注意format用法,最好在{}中加变量名,如name,后面为 name=name
datebase[name]=score
namerecord.append(name)
scorerecord.append(score)
actionrecord.append('增加')
print('成功添加学生{},分数为{}。'.format(name,score))
#删除学生及成绩
elif choice =='2':
name=input('请输入要删除的学生姓名:')
namerecord.append(name)
scorerecord.append(datebase[name])
actionrecord.append('删除')
datebase.pop(name)
print('成功删除学生{}及其分数!'.format(name))
#修改学生成绩
elif choice =='3':
name=input('请输入要修改的学生姓名:')
score=int(input('请输入{}的成绩:'.format(name)))
datebase[name]=score
namerecord.append(name)
scorerecord.append(score)
actionrecord.append('修改')
print('成功修改学生{}的分数为{}。'.format(name,score))
#查询学生成绩
elif choice =='4':
name=input('请输入要查询的学生姓名:')
score=datebase.get(name,-1)
if score ==-1:
print('{}的成绩不存在!'.format(name))
else:
print('{}的成绩为{}!'.format(name,score))
#查询平均成绩
elif choice =='5':
averagescore=sum(datebase.values())/len(datebase)
print('平均分为{}。'.format(averagescore))
#打印所有学生成绩
elif choice =='6':
print('学生 成绩')
scoreprint=list(datebase.items())
scorenum=len(datebase)
for i in range(scorenum):
print('{} {}'.format(scoreprint[i][0],scoreprint[i][1])) #这里非常优秀
#查询最高分和最低分
elif choice =='7':
scoremax=max(datebase.values())
scoremin=min(datebase.values())
print('最高分为{},最低分为{}。'.format(scoremax,scoremin))
#输出所有不重复分数
elif choice =='8':
score=set(list(datebase.values()))
print('所有不重复分数为{}'.format(score))
#显示操作记录
elif choice =='9':
num=len(actionrecord)
print('序号 学生 成绩 操作')
for i in range(num):
print(' {} {} {} {}'.format(i+1,namerecord[i],scorerecord[i],actionrecord[i]))
#退出系统
elif choice =='0':
break
#其他输入
else:
print('请输入正确的序号!')
#谢谢群主!!!
"""
评价
这次跟上次那一版比,基本说过的问题都修复了,代码也优化了不少,且整体功能比要求更加丰富。
+1 对群主的感谢
+2 直观清晰的变量命名
+3 优秀的代码
+5 优秀且正确的逻辑
+5 对存在问题的强力修复
+10 list和dict魔鬼般的运用
-1 format的用法
"""
版权声明:本文为原创文章,版权归 Helo 所有。
本文链接:https://www.ishelo.com/archives/59/
商业转载请联系作者获得授权,非商业转载请注明出处。