网站建设综合案例,相亲网站怎么建设,网站显示内容不显示,网站开发费税率文章目录 7、学生管理系统8、函数递归9、lambda函数后记 7、学生管理系统
# 需求拆分:1.展示学生管理系统的功能有哪些,引导用户键入序号选择功能
2.获取用户键入的功能
3.分析具体要执行哪一项功能
4.执行功能
def print_all_option():用户功能界面展示
1.展示学生管理系统的功能有哪些,引导用户键入序号选择功能
2.获取用户键入的功能
3.分析具体要执行哪一项功能
4.执行功能
def print_all_option():用户功能界面展示print(- * 20)print(欢迎登录学员管理系统)print(1: 添加学员信息)print(2: 删除学员信息)print(3: 修改学员信息)print(4: 查询学员信息)print(5: 遍历输出所有学员信息)print(6: 退出系统)print(- * 20)def choose_option(num):分析要执行哪一项功能if num 1:# 添加学员函数add_student_info()elif num 2:# 删除学员函数delete_student_info()elif num 3:# 修改学员函数modify_student_info()elif num 4:# 查询学员函数search_student_info()elif num 5:# 展示所有学员函数show_students_info()elif num 6:# 退出程序函数exit_program()else:print(无此选项,请重新输入)def add_student_info():添加学员信息# 1.用户输入学员信息# 1.1当用户输入的id值已经存在时,则不让其继续输入,警告,该id已经存在stu_id input(请输入要添加学员的id:)# 获取students_list中所有学员的id值(推导式)students_id [i[id] for i in students_list]# 1.2 比对id是否存在,存在则不允许运行if stu_id in students_id:print(该id值已经存在,无法添加学员)else:name input(请输入要添加学员的姓名:)age input(请输入要添加学员的年龄:)mobile input(请输入要添加学员的手机号:)# 2.将学员信息添加到students_list当中students_list.append({id: stu_id, name: name, age: int(age), mobile: mobile})print(学员添加完成)def delete_student_info():删除学员信息# 1.获取要删除学员的id值stu_id input(请输入要删除学员的id:)# 2.判断该学员是否存在,如果存在则删除该学员,如果不存在,则提示该学员不存在for stu_info in students_list:# 判断是否是要删除的学员if stu_info[id] stu_id:# 删除学员并跳出函数students_list.remove(stu_info)print(该学员已删除)returnelse:# 执行该命令警告用户没有该学员print(该学员不存在,无法删除)def modify_student_info():修改学员信息# 1.输入要修改的学员的id值stu_id input(请输入您要修改学员的id:)# 2.如果学员存在就修改学员信息,如果不存在则进行提示,学员不存在for stu_info in students_list:if stu_info[id] stu_id:# 学员信息修改name input(请输入您要修改为的名字:)age input(请输入您要修改为的年龄)mobile input(请输入您要修改为的手机号:)stu_info[name] namestu_info[age] agestu_info[mobile] mobileprint(学员信息修改完成)returnelse:print(该学员不存在,修改失败)def search_student_info():查询学员信息# 1.输入要查询学员的id值stu_id input(请输入要查询学员的id:)# 2.判断id值是否存在,如果存在则展示,如果不存在,则警告学员不存在for stu_info in students_list:if stu_info[id] stu_id:print(f学员的学号是:{stu_info[id]}, 学员的姓名是:{stu_info[name]}, 学员的年龄是:{stu_info[age]}, 学员的手机号是:{stu_info[mobile]})returnelse:print(该学员不存在,查询失败)def show_students_info():展示所有学员信息for stu_info in students_list:print(f学员的学号是:{stu_info[id]}, 学员的姓名是:{stu_info[name]}, 学员的年龄是:{stu_info[age]}, 学员的手机号是:{stu_info[mobile]})# def exit_program():
# # import sys
# # # 退出当前程序,结束进程
# # sys.exit()
# exit()def exit_program():结束程序# 通过控制变量结束死循环global is_stop# 在修改之前需要进行声明 ,修改的变量为全局变量is_stop True# # 展示功能界面
# print_all_option()
#
# # 引导用户输入功能序号,并获取序号
# option input(请输入您要执行功能的序号:)
#
# # 根据获取的序号分析要执行哪些功能
# chose_option(option)# 思考:学生管理系统,是不是需要输入6 才能退出 不然就一直询问您要输入的选项
# 这中情况下建议使用 while True 构造死循环students_list [{id: 001, name: xiaoming, age: 18, mobile: 13833838338},{id: 002, name: xiaohong, age: 18, mobile: 13900000000}
]
is_stop Falsewhile not is_stop:# 展示功能界面print_all_option()# 引导用户输入功能序号,并获取序号option input(请输入您要执行功能的序号:)# 根据获取的序号分析要执行哪些功能choose_option(option)# 方便展示,显示所有学员信息,开发完成后删除# print(students_list)input()# 死循环的退出方式有哪些?
# break
# return
# exit()
# 控制变量
...8、函数递归
函数内部调用函数本身函数有明确的递归跳出条件不超出最大调用深度
# 函数递归的三个必备条件1/函数体内部,调用函数本身
2/递归够明确的跳出条件
3/不能超出最大调用深度
# 需求:func(1) 1
func(2) 1 2 func(1) 2
func(3) 1 2 3 func(2) 3
func(4) 1 2 3 4 func(3) 4
.....
func(n) 1 2 3 .... n func(n-1) n
# RecursionError: maximum recursion depth exceeded
# 这种方式无法跳出递归,所以在使用的时候就会无限递归下去
# def func(n):
# return func(n-1) n
func(1) 1
func(2) func(1) 2
func(3) func(2) 3
func(4) func(3) 4
.....
func(n) func(n-1) n
def func(n):if n 1:return 1return func(n-1) nprint(func(999))# Python中默认的最大调用深度,是1000 也就是在Python中函数最多嵌套1000层
# 最大调用深度是为了保证系统性能的,否则无限递归下去,一会内存就满了
# 最大调用深度可以调整,可以调整到非常大的数字只要系统性能跟得上
# RecursionError: maximum recursion depth exceeded in comparison# 注意事项:
# 在编程初期,尽量少使用递归,但是要理解递归的特性,别人写的递归函数也要能看懂9、lambda函数
匿名函数在函数定义时没有函数名可以用变量保存在变量之后添加括号即可调用
# lambda表达式,也叫匿名函数
# 格式: lambda 参数: 返回值# 需求: 根据传入的参数返回最大值 使用lambda函数书写
# 三目运算 : 条件成立时返回的代码 if 条件 else 条件不成立时返回的代码
max_num lambda a, b: a if a b else b
# 使用变量可以储存lambda函数
print(max_num(1, 2))
print(max_num(9, 2))print(type(max_num)) # class functiondef func():print(abc)print(type(func)) # class function
# 通过对数据类型的查看,我们发现lambda和普通函数本质上是一样的,只不过在使用时构造更为简单# 在使用lambda函数时可以不用变量接收
print((lambda a, b: a if a b else b)(3, 4)) # 4
# 但是不适用变量接收,lambda函数只能使用一次,使用后集被释放,无法再次使用# lambda缺点: 没有办法书写负责的函数,因为其没有函数体,只有返回值,所以返回值后边只能书写一个表达式,lambda可读性极差# 使用lambda完成递归(了解,一般不建议写复杂的代码)
func1 lambda n: func1(n - 1) n if n ! 1 else 1
# RecursionError: maximum recursion depth exceeded
# 超出最大调用深度,没有明确的递归跳出条件
print(func1(100))# lambda应用场景
# 可以用于一次性函数使用
# 可以作为函数的参数进行传递# list sort(key )
# lsit sort排序方法中的key所需要的参数就是一个函数,我们可以传入lambda表示list1 [{a: 1}, {b: 12}, {c: 10}]
# 排序规则:根据字典的第一个键所对应的值进行排序list1.sort(keylambda x:list(x.values())[0])
# 格式: 列表.sort(key lambda 每次传入的元素: 排序所依据的规则)
print(list1)后记
博客主页https://manor.blog.csdn.net
欢迎点赞 收藏 ⭐留言 如有错误敬请指正 本文由 Maynor 原创首发于 CSDN博客 不能老盯着手机屏幕要不时地抬起头看看老板的位置⭐ 专栏持续更新,欢迎订阅https://blog.csdn.net/xianyu120/category_11947788.html