文章目录
199_了解引用之不可变类型
引用
了解引用:在Python中,值是靠引用来传递的。
我们可以用id()来判断两个变量是否为同一个值的引用。我们可以将id值理解为那块内存的地址标识。
#可变 和 不可变数据类型
#1.不可变数据类型测试:int
#1.1 声明变量保存整型数据,把这个数据赋值到另一个变量:id()检测两个变量的id值(内存的十进制值)
a = 1
b = a
print(b)
#发现a和b的id值是相同的
print(id(a))
print(id(b))
#修改a的数据测试id值
a = 2
print(b)
#因为修改了a的数据,内存要开辟另外一份内存地址存储数据,导致此时id检测a和b的地址不同
print(id(a))
print(id(b))
运行结果:
200_了解引用之可变类型
可变数据类型的引用,代码实现如下所示:
#2.可变数据类型的测试:列表
aa = [10,20]
bb = aa
print(bb)
print(id(aa))
print(id(bb))
aa.append(30)
print(aa)
print(bb)
print(id(aa))
print(id(bb))
运行结果:
201_引用当做实参传入
#需求:引用是否可以单做实参
"""
1.定义函数:有形参
1.1 访问和打印形参,查看是否有数据
1.2 访问形参的id
1.3 改变形参的数据,查看这个形参并打印id,看id是否相同
2. 调用函数--把可变和不可变两种类型数据依次当做实参传入
"""
def test1(a):
print(a)
print(id(a))
a +=a
print(a)
print(id(a))
#int:计算前后id值不同
b = 100
test1(b)
#列表:计算前后id值相同
c = [11,22]
test1(c)
运行结果:
202_可变和不可变类型
所谓可变类型与不可变类型是指:数据是否能够直接进行修改,如果能直接进行修改就是可变数据类型,否则就是不可变数据类型。
- 可变数据类型如下所示:
- 列表
- 字典
- 集合
- 不可变数据类型如下所示:
- 整型
- 浮点型
- 字符串
- 元组
203_函数二总结
- 变量作用域名
- 全局:函数体内外都能生效
- 局部:当前函数体内部生效
- 函数多返回值写法
return 表达式1,表达式2… - 函数的参数
位置参数
* 形参和实参的个数和书写顺序必须一致
关键字参数
* 写法:key = value
* 特点:形参和实参的书写顺序可以不一致;关键字参数必须书写在位置参数的后面
缺省参数
* 缺省参数就是默认参数
* 写法:key = value
不定长位置参数
* 收集所有位置参数,返回一个元组
不定长关键字参数
* 收集所有关键字参数,返回一个字典
引用:Python中,数据的传递都是通过引用
204_函数加强简介
目标
- 应用:学员管理系统
- 递归
- lambda表达式
- 高阶函数
205_学员管理系统需求和步骤分析
1.1 系统简介
需求:进入系统显示系统功能界面,功能如下:
- 1.添加学员
- 2.删除学员
- 3.修改学员信息
- 4.查询学员信息
- 5.显示所有学员信息
- 6.退出系统
系统共有6个功能,用户根据自己需求选取。
1,2 步骤分析
-1.显示功能界面
2.用户输入功能序号
3.根据用户输入的功能序号,执行不同的功能(函数)
3.1 定义函数
3.2 调用函数
206_学员管理系统框架搭建
1.3 需求实现
1.3.1 显示功能界面
定义函数print_info,负责显示系统功能。
#定义功能界面函数
def info_print():
print('请选择功能------------')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员')
print('4.查询学员')
print('5.显示所有学员')
print('6.退出系统')
print('-'*20)
#系统功能需要循环使用,直到用户输入6,才退出系统
while True:
#1.显示功能界面
info_print()
#2.用户输入功能序号
user_num = int(input('请输入功能序号:'))
#3.按照用户输入的功能序号,执行不同的功能(函数)
#如果用户输入1.执行添加;如果用户输入2.执行删除。。。。。多重功能
if user_num ==1:
print('添加')
elif user_num == 2:
print('删除')
elif user_num == 3:
print('修改')
elif user_num == 4:
print('查询')
elif user_num == 5:
print('显示所有学员')
elif user_num == 6:
print('退出系统')
运行结果:
207_代码调优
工作中,需要根据实际需求调优代码。
1.用户选择系统功能的代码需要循环使用,直到用户主动退出系统。
2。如果用户输入1-6以外的数字,需要提示用户。
208_学员管理系统数据形式的分析
所有功能函数都是操作学员信息,所有存储所有学员信息应该是一个全局变量,数据类型为列表。
info = []
209_添加学员功能分析
1.3.4.1 添加学员
- 需求分析
- 1.接收用户输入学员信息,并保存
- 2.判断是否添加学员信息
2.1 如果学员姓名已经存在,则报错提示
2.2 如果学员姓名不存在,则准备空字典,将用户输入的数据追加到字典,然后在列表追加字典数据 - 3.对应的If条件成立的位置调用该函数
210_添加学员之用户输入
代码实现:
def add_info():
"""添加学员"""
#接收用户输入学员信息
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
# 声明info是全局变量
global info
#检测用户输入的姓名是否存在,若存在则报错显示
for i in info:
if new_name == i [''name]:
print('该用户已经存在!')
return
#如果用户输入的姓名不存在,则添加该学员信息
info_dict = {}
#将用户输入的数据追加到字典
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['name'] = new_tel
添加学员之用户输入,实现代码如下所示:
#定义功能界面函数
def info_print():
print('请选择功能------------')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员')
print('4.查询学员')
print('5.显示所有学员')
print('6.退出系统')
print('-'*20)
#等等待存储所有学员的信息
info = []
#添加学员信息的函数
def add_info():
"""添加学员函数"""
#1.用户输入:学号、姓名、手机号
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
#2.判断是否添加这个学员:如果学员姓名已经存在,则报错提示;如果姓名不存在,则添加新增数据。
#系统功能需要循环使用,直到用户输入6,才退出系统
while True:
#1.显示功能界面
info_print()
#2.用户输入功能序号
user_num = int(input('请输入功能序号:'))
#3.按照用户输入的功能序号,执行不同的功能(函数)
#如果用户输入1.执行添加;如果用户输入2.执行删除。。。。。多重功能
if user_num ==1:
#print('添加')
add_info()
elif user_num == 2:
print('删除')
elif user_num == 3:
print('修改')
elif user_num == 4:
print('查询')
elif user_num == 5:
print('显示所有学员')
elif user_num == 6:
print('退出系统')
else:
print('输入的功能序号有误')
运行结果:
211_添加学员之新增数据
#定义功能界面函数
def info_print():
print('请选择功能------------')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员')
print('4.查询学员')
print('5.显示所有学员')
print('6.退出系统')
print('-'*20)
#等等待存储所有学员的信息
info = []
#添加学员信息的函数
def add_info():
"""添加学员函数"""
#1.用户输入:学号、姓名、手机号
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
#2.判断是否添加这个学员:如果学员姓名已经存在,则报错提示;如果姓名不存在,则添加新增数据。
global info
#2.2 如果输入的姓名不存在,则添加数据;准备空字典,字典新增数据,然后在列表中追加字典
info_dict = {}
#字典新增数据
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['tel'] = new_tel
print(info_dict)
#列表追加字典
info.append(info_dict)
print(info)
#系统功能需要循环使用,直到用户输入6,才退出系统
while True:
#1.显示功能界面
info_print()
#2.用户输入功能序号
user_num = int(input('请输入功能序号:'))
#3.按照用户输入的功能序号,执行不同的功能(函数)
#如果用户输入1.执行添加;如果用户输入2.执行删除。。。。。多重功能
if user_num ==1:
#print('添加')
add_info()
elif user_num == 2:
print('删除')
elif user_num == 3:
print('修改')
elif user_num == 4:
print('查询')
elif user_num == 5:
print('显示所有学员')
elif user_num == 6:
print('退出系统')
else:
print('输入的功能序号有误')
运行结果:
212_添加学员之重名提示
添加学员之重名提示的情况,实现代码如下所示:
#定义功能界面函数
def info_print():
print('请选择功能------------')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员')
print('4.查询学员')
print('5.显示所有学员')
print('6.退出系统')
print('-'*20)
#等等待存储所有学员的信息
info = []
#添加学员信息的函数
def add_info():
"""添加学员函数"""
#1.用户输入:学号、姓名、手机号
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
#2.判断是否添加这个学员:如果学员姓名已经存在,则报错提示;如果姓名不存在,则添加新增数据。
global info
#2.1 不允许姓名重复:判断用户输入的姓名和列表里面字典的name对应的value值是否相等,如果相等,则提示用户输入数据已经存在。
for i in info:
if new_name == i['name']:
print('此用户已经存在')
#return作用:退出当前函数,后面添加信息的代码不执行
return
#2.2 如果输入的姓名不存在,则添加数据;准备空字典,字典新增数据,然后在列表中追加字典
info_dict = {}
#字典新增数据
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['tel'] = new_tel
print(info_dict)
#列表追加字典
info.append(info_dict)
print(info)
#系统功能需要循环使用,直到用户输入6,才退出系统
while True:
#1.显示功能界面
info_print()
#2.用户输入功能序号
user_num = int(input('请输入功能序号:'))
#3.按照用户输入的功能序号,执行不同的功能(函数)
#如果用户输入1.执行添加;如果用户输入2.执行删除。。。。。多重功能
if user_num ==1:
#print('添加')
add_info()
elif user_num == 2:
print('删除')
elif user_num == 3:
print('修改')
elif user_num == 4:
print('查询')
elif user_num == 5:
print('显示所有学员')
elif user_num == 6:
print('退出系统')
else:
print('输入的功能序号有误')
运行结果:
213_删除学员思路分析
1.3.4.2 删除学员
- 需求分析
按用户输入的学员姓名进行删除
1.用户输入目标学员姓名
2.检查这个学员是否存在
2.1 如果存在,则列表删除这个数据
2.2 如果不存在,则提示“该用户不存在”
3.对应的if条件成立的位置调用该函数
代码实现:
# 删除学员
def del_info():
"""删除学员"""
#1.用户输入要删除的学员的姓名
del_name = input('请输入要删除的学员的姓名:')
global info
#2.判断学员是否存在:如果输入的姓名存在则删除,否则报错提示
for i in info:
if del_name == i['name']:
info.remove(i)
break
else:
print('该学员不存在')
print(info)
214_删除学员代码实现
#定义功能界面函数
def info_print():
print('请选择功能------------')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员')
print('4.查询学员')
print('5.显示所有学员')
print('6.退出系统')
print('-'*20)
#等等待存储所有学员的信息
info = []
#添加学员信息的函数
def add_info():
"""添加学员函数"""
#1.用户输入:学号、姓名、手机号
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
#2.判断是否添加这个学员:如果学员姓名已经存在,则报错提示;如果姓名不存在,则添加新增数据。
global info
#2.1 不允许姓名重复:判断用户输入的姓名和列表里面字典的name对应的value值是否相等,如果相等,则提示用户输入数据已经存在。
for i in info:
if new_name == i['name']:
print('此用户已经存在')
#return作用:退出当前函数,后面添加信息的代码不执行
return
#2.2 如果输入的姓名不存在,则添加数据;准备空字典,字典新增数据,然后在列表中追加字典
info_dict = {}
#字典新增数据
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['tel'] = new_tel
print(info_dict)
#列表追加字典
info.append(info_dict)
print(info)
#删除学员
def del_info():
"""删除学员"""
#1.用户输入要删除的学员姓名
del_name = input('请输入要删除的学员的姓名:')
#2.判断学员是否存在:存在则删除,不存在则给出相应提示
#2.1 声明Info是全局变量
global info
#2.2 遍历列表
for i in info:
#2.3 判断学员是否存在:存在执行删除(列表里面的字典),break:这个系统不允许重名,删除了一个数据,后面的不需要在遍历;不存在则给出相应提示
if del_name ==i['name']:
#列表删除数据 --按数据删除remove
info.remove(i)
break
else:
print('该学员不存在')
print(info)
#系统功能需要循环使用,直到用户输入6,才退出系统
while True:
#1.显示功能界面
info_print()
#2.用户输入功能序号
user_num = int(input('请输入功能序号:'))
#3.按照用户输入的功能序号,执行不同的功能(函数)
#如果用户输入1.执行添加;如果用户输入2.执行删除。。。。。多重功能
if user_num ==1:
#print('添加')
add_info()
elif user_num == 2:
#print('删除')
del_info()
elif user_num == 3:
print('修改')
elif user_num == 4:
print('查询')
elif user_num == 5:
print('显示所有学员')
elif user_num == 6:
print('退出系统')
else:
运行结果:
215_修改学员思路分析
1.3.4.3. 修改学员信息
- 需求分析
1.用户输入目标学员姓名
检查这个学员是否存在
2.1 如果存在,则修改这位学员的信息,例如手机号
2.2 如果不存在,则报错
3.对应的if条件成立的位置调用该函数
代码实现:
#修改函数
def modify_info()
"""修改函数"""
#1.用户输入要修改的学院的姓名
modify_name = input('请输入要修改的学员的姓名:')
global info
#2.判断学员是否存在:如果输入的姓名存在,则修改手机号,否则报错提示
for i in info:
if modify_name == i['name']:
i['tel'] = input('请输入新的手机号:')
break
else:
print('该学员不存在')
print(info)
216_修改学员代码实现
#定义功能界面函数
def info_print():
print('请选择功能------------')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员')
print('4.查询学员')
print('5.显示所有学员')
print('6.退出系统')
print('-'*20)
#等等待存储所有学员的信息
info = []
#添加学员信息的函数
def add_info():
"""添加学员函数"""
#1.用户输入:学号、姓名、手机号
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
#2.判断是否添加这个学员:如果学员姓名已经存在,则报错提示;如果姓名不存在,则添加新增数据。
global info
#2.1 不允许姓名重复:判断用户输入的姓名和列表里面字典的name对应的value值是否相等,如果相等,则提示用户输入数据已经存在。
for i in info:
if new_name == i['name']:
print('此用户已经存在')
#return作用:退出当前函数,后面添加信息的代码不执行
return
#2.2 如果输入的姓名不存在,则添加数据;准备空字典,字典新增数据,然后在列表中追加字典
info_dict = {}
#字典新增数据
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['tel'] = new_tel
print(info_dict)
#列表追加字典
info.append(info_dict)
print(info)
#删除学员
def del_info():
"""删除学员"""
#1.用户输入要删除的学员姓名
del_name = input('请输入要删除的学员的姓名:')
#2.判断学员是否存在:存在则删除,不存在则给出相应提示
#2.1 声明Info是全局变量
global info
#2.2 遍历列表
for i in info:
#2.3 判断学员是否存在:存在执行删除(列表里面的字典),break:这个系统不允许重名,删除了一个数据,后面的不需要在遍历;不存在则给出相应提示
if del_name ==i['name']:
#列表删除数据 --按数据删除remove
info.remove(i)
break
else:
print('该学员不存在')
print(info)
#修改函数
def modify_info():
"""修改学员信息"""
#1.用户输入想要修改的学员的姓名
modify_name = input('请输入要修改的学员的姓名:')
#2.判断学员是否存在:存在则修改手机号;不存在则由系统给出相应提示
#2.1 声明info是全局变量
global info
#2.2 遍历列表,判断输入的姓名是否与列表中已有名字相同
for i in info:
if modify_name == i['name']:
#将tel这个key修改值,并终止此循环操作
i['tel'] = input('请输入新的手机号:')
break
else:
#学员不存在
print('该学员不存在')
#3.打印info
print(info)
#系统功能需要循环使用,直到用户输入6,才退出系统
while True:
#1.显示功能界面
info_print()
#2.用户输入功能序号
user_num = int(input('请输入功能序号:'))
#3.按照用户输入的功能序号,执行不同的功能(函数)
#如果用户输入1.执行添加;如果用户输入2.执行删除。。。。。多重功能
if user_num ==1:
#print('添加')
add_info()
elif user_num == 2:
#print('删除')
del_info()
elif user_num == 3:
#print('修改')
modify_info()
elif user_num == 4:
print('查询')
elif user_num == 5:
print('显示所有学员')
elif user_num == 6:
print('退出系统')
else:
print('输入的功能序号有误')
运行结果:
217_查询学员思路分析
1.3.4.4 查询学员信息
- 需求分析
- 用户输入目标学员姓名
- 检查学员是否存在
2.1 如果存在,则显示这个学员的信息
2.2 如果不存在,则报错显示
3.对应的if条件成立的位置调用该函数
代码实现:
# 查询学员
def search_info():
"""查询学员"""
#1.输入要查找的学员的姓名
search_name = input('请输入要查找的学员的姓名:')
global info
#2.判断学员是否存在:如果输入的姓名存在,则显示这位学员信息,否则报错提示
for i in info:
if search_name == i['name']
print('查找到的学员信息如下:--------------')
print(f"该学员的学号是{i['id']},姓名是{i['name']},手机号是{i['tel']}")
break
else:
print('该学员不存在')
218_查询学员代码实现
#定义功能界面函数
def info_print():
print('请选择功能------------')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员')
print('4.查询学员')
print('5.显示所有学员')
print('6.退出系统')
print('-'*20)
#等等待存储所有学员的信息
info = []
#添加学员信息的函数
def add_info():
"""添加学员函数"""
#1.用户输入:学号、姓名、手机号
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
#2.判断是否添加这个学员:如果学员姓名已经存在,则报错提示;如果姓名不存在,则添加新增数据。
global info
#2.1 不允许姓名重复:判断用户输入的姓名和列表里面字典的name对应的value值是否相等,如果相等,则提示用户输入数据已经存在。
for i in info:
if new_name == i['name']:
print('此用户已经存在')
#return作用:退出当前函数,后面添加信息的代码不执行
return
#2.2 如果输入的姓名不存在,则添加数据;准备空字典,字典新增数据,然后在列表中追加字典
info_dict = {}
#字典新增数据
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['tel'] = new_tel
print(info_dict)
#列表追加字典
info.append(info_dict)
print(info)
#删除学员
def del_info():
"""删除学员"""
#1.用户输入要删除的学员姓名
del_name = input('请输入要删除的学员的姓名:')
#2.判断学员是否存在:存在则删除,不存在则给出相应提示
#2.1 声明Info是全局变量
global info
#2.2 遍历列表
for i in info:
#2.3 判断学员是否存在:存在执行删除(列表里面的字典),break:这个系统不允许重名,删除了一个数据,后面的不需要在遍历;不存在则给出相应提示
if del_name ==i['name']:
#列表删除数据 --按数据删除remove
info.remove(i)
break
else:
print('该学员不存在')
print(info)
#修改函数
def modify_info():
"""修改学员信息"""
#1.用户输入想要修改的学员的姓名
modify_name = input('请输入要修改的学员的姓名:')
#2.判断学员是否存在:存在则修改手机号;不存在则由系统给出相应提示
#2.1 声明info是全局变量
global info
#2.2 遍历列表,判断输入的姓名是否与列表中已有名字相同
for i in info:
if modify_name == i['name']:
#将tel这个key修改值,并终止此循环操作
i['tel'] = input('请输入新的手机号:')
break
else:
#学员不存在
print('该学员不存在')
#3.打印info
print(info)
#查询学员信息函数
def search_info():
"""查询学员信息"""
#1.用户输入目标学员姓名
search_name = input('请输入要查询的学员的姓名:')
#2.检查学员是否存在:存在打印这个学员的信息,不存在系统则给出相应提示
#2.1 声明info为全局
global info
#2.2 遍历info, 判断输入的学员是否存在
for i in info:
if search_name == i['name']:
#学员存在:打印信息并终止循环
print('查询到的学员信息如下所示------------------')
print(f"学员的学号是{i['id']},姓名是{i['name']},手机号是{i['tel']}")
break
else:
#学员不存在的提示
print('查无此人-----')
#系统功能需要循环使用,直到用户输入6,才退出系统
while True:
#1.显示功能界面
info_print()
#2.用户输入功能序号
user_num = int(input('请输入功能序号:'))
#3.按照用户输入的功能序号,执行不同的功能(函数)
#如果用户输入1.执行添加;如果用户输入2.执行删除。。。。。多重功能
if user_num ==1:
#print('添加')
add_info()
elif user_num == 2:
#print('删除')
del_info()
elif user_num == 3:
#print('修改')
modify_info()
elif user_num == 4:
#print('查询')
search_info()
elif user_num == 5:
print('显示所有学员')
elif user_num == 6:
print('退出系统')
else:
print('输入的功能序号有误')
运行结果:
219_显示所有学员信息
1.3.4.5 显示所有学员信息
-需求分析:打印所有学员信息
代码实现:
#显示所有学员信息
def print_all():
"""显示所有学员信息"""
print('学号\t姓名\t手机号')
for i in info:
print(f'{i['id']}\t{i["name"}'\t{i["tel"]})
显示所有学员信息,实现代码如下所示:
#定义功能界面函数
def info_print():
print('请选择功能------------')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员')
print('4.查询学员')
print('5.显示所有学员')
print('6.退出系统')
print('-'*20)
#等等待存储所有学员的信息
info = []
#添加学员信息的函数
def add_info():
"""添加学员函数"""
#1.用户输入:学号、姓名、手机号
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
#2.判断是否添加这个学员:如果学员姓名已经存在,则报错提示;如果姓名不存在,则添加新增数据。
global info
#2.1 不允许姓名重复:判断用户输入的姓名和列表里面字典的name对应的value值是否相等,如果相等,则提示用户输入数据已经存在。
for i in info:
if new_name == i['name']:
print('此用户已经存在')
#return作用:退出当前函数,后面添加信息的代码不执行
return
#2.2 如果输入的姓名不存在,则添加数据;准备空字典,字典新增数据,然后在列表中追加字典
info_dict = {}
#字典新增数据
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['tel'] = new_tel
print(info_dict)
#列表追加字典
info.append(info_dict)
print(info)
#删除学员
def del_info():
"""删除学员"""
#1.用户输入要删除的学员姓名
del_name = input('请输入要删除的学员的姓名:')
#2.判断学员是否存在:存在则删除,不存在则给出相应提示
#2.1 声明Info是全局变量
global info
#2.2 遍历列表
for i in info:
#2.3 判断学员是否存在:存在执行删除(列表里面的字典),break:这个系统不允许重名,删除了一个数据,后面的不需要在遍历;不存在则给出相应提示
if del_name ==i['name']:
#列表删除数据 --按数据删除remove
info.remove(i)
break
else:
print('该学员不存在')
print(info)
#修改函数
def modify_info():
"""修改学员信息"""
#1.用户输入想要修改的学员的姓名
modify_name = input('请输入要修改的学员的姓名:')
#2.判断学员是否存在:存在则修改手机号;不存在则由系统给出相应提示
#2.1 声明info是全局变量
global info
#2.2 遍历列表,判断输入的姓名是否与列表中已有名字相同
for i in info:
if modify_name == i['name']:
#将tel这个key修改值,并终止此循环操作
i['tel'] = input('请输入新的手机号:')
break
else:
#学员不存在
print('该学员不存在')
#3.打印info
print(info)
#查询学员信息函数
def search_info():
"""查询学员信息"""
#1.用户输入目标学员姓名
search_name = input('请输入要查询的学员的姓名:')
#2.检查学员是否存在:存在打印这个学员的信息,不存在系统则给出相应提示
#2.1 声明info为全局
global info
#2.2 遍历info, 判断输入的学员是否存在
for i in info:
if search_name == i['name']:
#学员存在:打印信息并终止循环
print('查询到的学员信息如下所示------------------')
print(f"学员的学号是{i['id']},姓名是{i['name']},手机号是{i['tel']}")
break
else:
#学员不存在的提示
print('查无此人-----')
#显示所有学员信息
def print_all():
"""显示所有学员信息"""
#1.打印提示字
print('学号\t姓名\t手机号')
#2.打印所有学员的数据
for i in info:
print(f"{i['id']},{i['name']},{i['tel']}")
#系统功能需要循环使用,直到用户输入6,才退出系统
while True:
#1.显示功能界面
info_print()
#2.用户输入功能序号
user_num = int(input('请输入功能序号:'))
#3.按照用户输入的功能序号,执行不同的功能(函数)
#如果用户输入1.执行添加;如果用户输入2.执行删除。。。。。多重功能
if user_num ==1:
#print('添加')
add_info()
elif user_num == 2:
#print('删除')
del_info()
elif user_num == 3:
#print('修改')
modify_info()
elif user_num == 4:
#print('查询')
search_info()
elif user_num == 5:
#print('显示所有学员')
print_all()
elif user_num == 6:
print('退出系统')
else:
print('输入的功能序号有误')
运行结果:
220_退出系统
1.3.4.6 退出系统
在用户输入功能序号6的时候要退出系统,代码如下:
......
elif user_num == '6':
exit_flag = input('确定要退出吗?yes or no ')
if exit_flag == 'yes':
break
退出系统,实现代码如下所示:
#定义功能界面函数
def info_print():
print('请选择功能------------')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员')
print('4.查询学员')
print('5.显示所有学员')
print('6.退出系统')
print('-'*20)
#等等待存储所有学员的信息
info = []
#添加学员信息的函数
def add_info():
"""添加学员函数"""
#1.用户输入:学号、姓名、手机号
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
#2.判断是否添加这个学员:如果学员姓名已经存在,则报错提示;如果姓名不存在,则添加新增数据。
global info
#2.1 不允许姓名重复:判断用户输入的姓名和列表里面字典的name对应的value值是否相等,如果相等,则提示用户输入数据已经存在。
for i in info:
if new_name == i['name']:
print('此用户已经存在')
#return作用:退出当前函数,后面添加信息的代码不执行
return
#2.2 如果输入的姓名不存在,则添加数据;准备空字典,字典新增数据,然后在列表中追加字典
info_dict = {}
#字典新增数据
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['tel'] = new_tel
print(info_dict)
#列表追加字典
info.append(info_dict)
print(info)
#删除学员
def del_info():
"""删除学员"""
#1.用户输入要删除的学员姓名
del_name = input('请输入要删除的学员的姓名:')
#2.判断学员是否存在:存在则删除,不存在则给出相应提示
#2.1 声明Info是全局变量
global info
#2.2 遍历列表
for i in info:
#2.3 判断学员是否存在:存在执行删除(列表里面的字典),break:这个系统不允许重名,删除了一个数据,后面的不需要在遍历;不存在则给出相应提示
if del_name ==i['name']:
#列表删除数据 --按数据删除remove
info.remove(i)
break
else:
print('该学员不存在')
print(info)
#修改函数
def modify_info():
"""修改学员信息"""
#1.用户输入想要修改的学员的姓名
modify_name = input('请输入要修改的学员的姓名:')
#2.判断学员是否存在:存在则修改手机号;不存在则由系统给出相应提示
#2.1 声明info是全局变量
global info
#2.2 遍历列表,判断输入的姓名是否与列表中已有名字相同
for i in info:
if modify_name == i['name']:
#将tel这个key修改值,并终止此循环操作
i['tel'] = input('请输入新的手机号:')
break
else:
#学员不存在
print('该学员不存在')
#3.打印info
print(info)
#查询学员信息函数
def search_info():
"""查询学员信息"""
#1.用户输入目标学员姓名
search_name = input('请输入要查询的学员的姓名:')
#2.检查学员是否存在:存在打印这个学员的信息,不存在系统则给出相应提示
#2.1 声明info为全局
global info
#2.2 遍历info, 判断输入的学员是否存在
for i in info:
if search_name == i['name']:
#学员存在:打印信息并终止循环
print('查询到的学员信息如下所示------------------')
print(f"学员的学号是{i['id']},姓名是{i['name']},手机号是{i['tel']}")
break
else:
#学员不存在的提示
print('查无此人-----')
#显示所有学员信息
def print_all():
"""显示所有学员信息"""
#1.打印提示字
print('学号\t姓名\t手机号')
#2.打印所有学员的数据
for i in info:
print(f"{i['id']}\t{i['name']}\t{i['tel']}")
#系统功能需要循环使用,直到用户输入6,才退出系统
while True:
#1.显示功能界面
info_print()
#2.用户输入功能序号
user_num = int(input('请输入功能序号:'))
#3.按照用户输入的功能序号,执行不同的功能(函数)
#如果用户输入1.执行添加;如果用户输入2.执行删除。。。。。多重功能
if user_num ==1:
#print('添加')
add_info()
elif user_num == 2:
#print('删除')
del_info()
elif user_num == 3:
#print('修改')
modify_info()
elif user_num == 4:
#print('查询')
search_info()
elif user_num == 5:
#print('显示所有学员')
print_all()
elif user_num == 6:
#print('退出系统')
#程序要想结束,退出循环终止while True -- break
exit_flag = input('确定要退出吗?yes or no')
if exit_flag == 'yes':
break
else:
print('输入的功能序号有误')
运行结果: