# 4. 修改之前的学生信息管理程序,实现添加菜单和选择菜单操作功能:
# 菜单:
# +-----------------------------+
# | 1) 添加学生信息 |
# | 2) 查看所有学生信息 |
# | 3) 修改学生的成绩 |
# | 4) 删除学生信息 |
# | q) 退出 |
# +-----------------------------+
# 请选择: 1
# 请输入姓名:....
# 请选择: 3
# 请输入修改学生的姓名: ....
# (要求每个功能都对应一个函数) def input_student():
# 此函数获取学生信息,并返回学生信息的字典的列表
L = []
# d = {} # 此处所有学生将共用一个字典,会出错
while True:
name = input("请输入学生姓名: ")
if not name:
break
age = int(input("请输入学生年龄: "))
score = int(input("请输入学生成绩: "))
d = {} # 重新创建一个新的字典
d['name'] = name
d['age'] = age
d['score'] = score
L.append(d)
return L def output_student(L):
# 以表格形式再打印学生信息
print('+------------+------+-------+')
print('| name | age | score |')
print('+------------+------+-------+')
for d in L: # d绑定的是字典
t = (d['name'].center(12),
str(d['age']).center(6),
str(d['score']).center(7))
line = "|%s|%s|%s|" % t # t是元组
print(line)
print('+------------+------+-------+') # 写一个打印菜单的函数
def show_menu():
print('+-----------------------------+')
print('| 1) 添加学生信息 |')
print('| 2) 查看所有学生信息 |')
print('| 3) 修改学生的成绩 |')
print('| 4) 删除学生信息 |')
print('| q) 退出 |')
print('+-----------------------------+') # 此函数用来存改学生的信息
def modify_student_info(lst):
name = input("请输入要修改学生的姓名: ")
for d in lst:
if d['name'] == name:
score = int(input("请输入新的成绩: "))
d['score'] = score
print("修改", name, '的成绩为', score)
return
else:
print("没有找到名为:", name, '的学生信息') # 定义一个删除学生信息的函数
def delete_student_info(lst):
name = input("请输入要删除学生的姓名: ")
for i in range(len(lst)): # 从0开始把所有索引取出一遍
if lst[i]['name'] == name:
del lst[i]
print("已成功删除: ", name)
return True
else:
print("没有找到名为:", name, "的学生") # 定义一个主函数,用来获取键盘操作,实现选择的功能
def main():
docs = [] # 此列表用来存储所有学生的信息的字典
while True:
show_menu()
s = input("请选择: ")
if s == '':
docs += input_student()
elif s == '':
output_student(docs)
elif s == '': # 修改学生成绩
modify_student_info(docs)
elif s == '': # 删除学生成绩
delete_student_info(docs)
elif s == 'q':
return # 结束此函数执行,直接退出 main()

总结一下思路:学生的所有信息都是输入进变量里,然后将变量指向字典对应键的值,由此单个学生的信息都存入字典中,再将这些字典存在列表中,遍历列表遍历学生信息

Python实现学生系统的更多相关文章

  1. Python作业-选课系统

    目录 Python作业-选课系统 days6作业-选课系统: 1. 程序说明 2. 思路和程序限制 3. 选课系统程序目录结构 4. 测试帐户说明 5. 程序测试过程 title: Python作业- ...

  2. 转 让Python在Android系统上飞一会儿

    让Python在Android系统上飞一会儿 地址: http://blog.csdn.net/ccwwff/article/details/6208260

  3. Python在Win10系统的安装和使用配置

    Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等. 下载 ...

  4. python为什么叫胶水语言?python为什么是系统脚本?

    python为什么叫胶水语言?python为什么是系统脚本?   特点是什么? python现在最广为闻名的形容大概有这些: 他是很好的胶水语言.什么是胶水语言?反正当时的我不知道. 他是新一代的系统 ...

  5. python进行linux系统监控

      python进行linux系统监控 Linux系统下: 静态指标信息: 名称 描述 单位 所在文件 mem_total 内存总容量 KB /proc/meminfo disks 磁盘相关信息 - ...

  6. Python获取当前系统时间

    Python获取当前系统时间 import time #返回当前时间 def GetNowTime():     return time.strftime("%Y-%m-%d %H:%M:% ...

  7. 盲法介绍及python盲打练习系统

    目录 一:盲打简介与优点 二:如何练习 三:键盘字母排列顺序的口诀 四:python打字练习系统 一:盲打简介与优点   简介:盲打是指打字的时候不用看键盘或看稿打字时的视线不用来回于文稿和键盘之间的 ...

  8. Django入门到进阶-更适合Python小白的系统课程

    Django入门到进阶-更适合Python小白的系统课程 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身 ...

  9. 基于Python实现的系统SLA可用性统计

    基于Python实现的系统SLA可用性统计 1. 介绍 SLA是Service Level Agreement的英文缩写,也叫服务质量协议.根据SRE Google运维解密一书中的定义: SLA是服务 ...

随机推荐

  1. HTML5新增和废弃的标签

    一.废弃的标签 以下的 HTML 4.01 元素在HTML5中已经被删除,虽然浏览器为了兼容性考虑都还支持这些标签,但建议使用新的替代标签,矛盾的是老浏览器对新标签的支持度又不够,视项目的受众对象而定 ...

  2. BZOJ3667:Rabin-Miller算法(Pollard-Rho)

    Description Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一个数字,保证在64位长整形范围内,并且没有负数.你需要对于每个数字:第一,检验是否是质数,是质数就 ...

  3. 配置网卡绑卡 --RHEL7

    配置网卡绑卡 1)网卡绑定(team方式) # 创建组接口nmcli connection add type team ifname team0 con-name team0 config '{&qu ...

  4. Java并发编程 -- 文章汇总

    文章汇总 1.Thread和Runnable 2.synchronized 3.Lock 4.Executor框架 5.信号量和障碍器 6.Exchanger线程间交换数据 7.Java内存操作总结

  5. selenium+python unittest实践过程之问题杂集

    1.列表选择项后直接获取文本内容获取不到,应该获取选择后显示的button的值 2.取值后的值带有空格,可以使用.strip()删除前后空格,以便断言 3.取值后有些值需要对类型进行转换才能断言成功 ...

  6. 说说Javac

    Java语言有Java语言的规范,,这个规范详细描述了Java语言有哪些词法.语法,而Java虚拟机也有其Java虚拟机的规范,同样Java虚拟机的规范和Java语言规范并不一样,它们都有自己的词法和 ...

  7. C++矩阵库 Eigen 简介

    最近需要用 C++ 做一些数值计算,之前一直采用Matlab 混合编程的方式处理矩阵运算,非常麻烦,直到发现了 Eigen 库,简直相见恨晚,好用哭了. Eigen 是一个基于C++模板的线性代数库, ...

  8. USB耳机声卡-音频输入/输出控制器:DP108替代兼容CM108

    DP108是一款完全替代CM108的高度集成的单芯片USB音频解决方案芯片.方便的USB即插即用的兼容性,用户可以快速创建易用性,高质量和便携式USB音频产品基于高度集成的单芯片解决方案.所有重要的模 ...

  9. Mac OS X 命令行用户应当知道的八个终端工具

    原文链接:Eight Terminal Utilities Every OS X Command Line User Should Know OS X  的Terminal 终端开辟了强大的UNIX实 ...

  10. libmxml数据结构(源码分析)

    libmxml是一个开源.小巧的C语言xml库.这里简单分析一下它是用什么样的数据结构来保存分析过的xml文档. mxml关键的结构体mxml_node_t是这样的实现的: struct mxml_n ...