题目:上次写的一个模拟数据库,根据名字查询成绩,这次使用字典实现,要求如下:

自己定义一个字典,内容为 名字-成绩形式

实现通过名字查询成绩,判断指定名字成绩是否存在

增加,删除,修改指定名字的成绩

计算平均成绩(使用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 所有。

商业转载请联系作者获得授权,非商业转载请注明出处。

python字典程序题_Python学习之字典实现成绩管理程序相关推荐

  1. python字典程序题_Python练习:字典

    题目1 点击这里,下载数据文件 0016_1.txt 到本机上. 这个是一个数据文件,格式如下 薛蟠 4560 42 薛蝌 4460 25 薛宝钗 5776 43 薛宝琴 4346 42 王夫人 33 ...

  2. python读取字典元素笔记_Python 学习笔记 - 字典

    Python 字典 字典是一种无序的.可修改的.可索引的容器. 字典使用花括号声明,具有键和值. mydic = { 'name':'孙悟空', 'origin':'猴子' } print(mydic ...

  3. python字典程序题_python字典练习题

    python字典练习题 写代码:有如下字典 按照要求实现每一个功能 dict = {"k1":"v1","k2":"v2" ...

  4. python字典数据类型笔记_Python学习笔记整理(六)Python中的字典

    一.字典介绍 字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合.两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通 ...

  5. python字典题_python列表、字典相关练习题

    1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名.年龄.成绩(单科).电话.性别(男.女.不明) student={'name':'张三','age':'23','score':88,'te ...

  6. python是什么语言编写的程序称为_Python 学习(一)【Python语言简介-Python是什么】...

    Python是一种编程语言,它的名字来源于一个喜剧.也许最初设计Python这种语言的人并没有想到今天Python会在工业和科研上获得如此广泛的使用. Python是什么(转载自Primus) 著名的 ...

  7. python的基本数据结构_Python学习笔记——基本数据结构

    列表list List是python的一个内置动态数组对象,它的基本使用方式如下: shoplist = ['apple', 'mango', 'carrot', 'banana'] print 'I ...

  8. python从入门到_Python学习路线从入门到上手,如何快速Python学习?

    因为清晰易读的风格,广泛的适用性,Python已经成为最受欢迎的编程语言之一.在TIOBE 排行榜中位居第四,是名副其实的人工智能第一语言. 风靡的另一个原因是,Python有非常多的第三方库.比如用 ...

  9. python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象...

    在基础数据类型中可能遇到的坑: 元组: tuple1=(1) 的数据类型是int , tuple2=('alex')的数据类型是str 等 tuple1=(1,) 和 tuple2的数据类型是 tup ...

最新文章

  1. LabVIEW图像灰度分析与变换(基础篇—4)
  2. 黯然微信小程序杂记(一):从服务器获取数据 后端语言php
  3. 太酷炫了,我用 Python 画出了北上广深的地铁路线动态图
  4. openshift scc解析
  5. Android 实训日志:基于外部存储的音乐播放器V03
  6. C+ 轮融资发布会抽奖名单公布,还有 20 万礼物正在路上
  7. python argpare 模块的简单用法
  8. alsa 测试 linux_Linux低延迟服务器系统调优
  9. 【机器学习基础】一文搞懂机器学习里的L1与L2正则化
  10. redis的学习使用,第一章
  11. 道康宁有机硅助力动力电池发展
  12. ubuntu环境下使用cat命令合并代码
  13. 遇上DG挖矿病毒的处理记录
  14. Zxing 扫描码的ios简化版搭建过程
  15. SparkStreaming自定义Receiver
  16. 头的各个部位示意图_人体头部结构图解剖图 人体头部结构及功能
  17. 湖南成考新生如何查询学籍信息
  18. 6-9 字符串匹配 - C/C++ 数组及字符串c语言c++
  19. 天文学家发现“超级地球”
  20. 科大讯飞实现了APP用自己的声音听故事

热门文章

  1. 如何使用12tool二维码合成器将多张二维码图片生成一张动态GIF图?
  2. 最小公倍数和最大公约数的求法——最快的:辗转相除法
  3. 服务器向虚拟机迁移,windows物理机服务器迁移到虚拟机
  4. 如何使用python快速完成批量导入一个文件夹下多个excel文件
  5. YYLabel 点击富文本中的文字
  6. 搭建公司wiki系统Confluence
  7. 台达PLC与台达VFD变频器modbus 通讯案例 完成PLC与变频器的modbus RTU通讯,实现触摸屏上控制变频器启停,设置频率
  8. iOS 逆向之ARM汇编
  9. 微波雷达技术发展,微波雷达感应应用方案
  10. Otsu(大津法,最大类间方差法)