B站python入门学习---第一阶段前七章回顾复习(二)
""" 综合案例:ATM 1、定义一个全局变量money,记录银行卡余额,默认初始值5000 2、定义一个全局变量name,记录客户姓名(启动程序时输入) 3、定义如下函数:查询余额、存款、取款、主菜单 要求: *程序启动后输入客户姓名 *查询余额、存款、取款后都会返回主菜单 *存款、取款后都要显示一下当前余额 *客户选择退出或者输入错误程序会退出,否则一直运行 """ money = 5000 name = input("请输入您的姓名") def show_mainmenu(): print(f"欢迎您,{name}!") print("查询余额请输入1") print("存款请输入2") print("取款请输入3") print("退出请输入4") def chaxun(): global money print(f"您的存款余额为{money}") show_mainmenu() def cunkuan(): global money cash = int(input("请输入您要存款的金额")) money = money + cash print(f"您的存款余额为{money}") show_mainmenu() def qukuan(): global money cash = int(input("请输入您要取款的金额")) money = money - cash print(f"您的存款余额为{money}") show_mainmenu() def main_operation(): show_mainmenu() n = int(input("请选择:")) while n in [1, 2, 3]: if n == 1: chaxun() if n == 2: cunkuan() if n == 3: qukuan() n = int(input("请选择:")) print("谢谢您的使用,欢迎再次光临。") main_operation()
main_opertation函数中也可以通过字典选项的方式实现:
def main_operation(): show_mainmenu() n_options = {"1" : chaxun, "2" : cunkuan, "3" : qukuan} #这里需要注意值必须设为函数名,而不是直接写出函数形式,否则会直接执行 n = input("请选择:") while n in ["1", "2", "3"]: n_options.get(n)() n = input("请选择:") print("谢谢您的使用,欢迎再次光临。")
此外,python3.10中也增加了新的match功能,类似于之前的switch语句:
""" python3.10开始新增了match模式 """ def main_operation(): show_mainmenu() n = input("请选择:") while n in ["1", "2", "3"]: match n: case "1": chaxun() case "2": cunkuan() case "3": qukuan() #默认模式: case _: break n = input("请选择:") print("谢谢您的使用,欢迎再次光临。")
*函数的多返回值
def test_return(): return 1, 22, 333 x, y, z = test_return() print(x, y, z) print(type(test_return())) #返回值实质就是一个元组 print(test_return()[2]) #获取返回值的第三个值
#函数的参数:
一、默认参数和关键字参数的区别
''' 关键字参数和默认参数,其实可以认为是类似的概念,但理解上一定要清楚其区别: 1、阶段不同:默认参数是函数定义阶段,关键字参数是调用阶段 2、目的不同:默认参数是定义时候解决提供默认值的问题,调用时候可不显式传参,而关键字参数的目的是为了 在使用时候更明确的知道某个参数的含义。 ''' def func(a, b = 2, c = 3): print(f"a={a}") print(f"b={b}") print(f"c={c}") print(f"a+b+c={a+b+c}") func(1) func(1, c = 5) func(2, 8, 12) func(100, 50) func(10, c = 12, b = 8) func(a = 8, b = 9, c = 10) #关键字参数可以覆盖位置参数 #func(10, b = 20, 30) #这句会报错,关键字参数应放位置参数后面
二、几种参数的演示
''' 演示多种传参的形式 ''' def info(name, age, gender = "male"): print(f"姓名是{name},年龄是{age}岁,性别是{gender}。") #位置参数 - 默认使用形式 info("Mike", 18, "male") #关键字参数 info("Jenny", age = 22, gender = "Female") info(age = 23, name = "Tony", gender = "male") #缺省参数(默认值) info("Henry", age = 19) info(name = "Tack", age = 21) #不定长--位置不定长 def mysum(*args): sum = 0 for a in args: sum = sum + a return sum print(mysum(1 ,2 ,3 ,4, 5, 6)) l_a = [10, 12, 14, 16] print(mysum(*l_a)) #不定长——关键字不定长 def student_info(**kwargs): print(type(kwargs)) for key, value in kwargs.items(): print(f"{key}的年龄是 {value}岁。") student_info(Mike = 23, Jack = 18, Jenny = 21, Tony = 27, Harison = 28) student_info_dict = {"Mike" : 23, "Jack" : 18, "Jenny" : 21} student_info(**student_info_dict)
三、匿名函数
1、函数作为参数
def test_function(func_name, *args): func_name(*args) def plus(*args): sum = 0 for x in args: sum = sum + x print(sum) def multi(*args): answer = 1 for x in args: answer = answer * x print(answer) test_function(plus, 1, 2, 3) test_function(multi, *[2, 5, 8, 9] )
2、lambda函数
def test_function(func_name, *args): print(func_name(*args)) test_function(lambda *args: reduce(lambda x, y: x + y, args), *[3, 15, 7, 12])