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])

 

posted @ 2025-08-30 14:18  tsembrace  阅读(4)  评论(0)    收藏  举报