惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
量子位
大猫的无限游戏
大猫的无限游戏
雷峰网
雷峰网
B
Blog RSS Feed
宝玉的分享
宝玉的分享
Security Latest
Security Latest
小众软件
小众软件
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
博客园_首页
美团技术团队
T
Tailwind CSS Blog
The Cloudflare Blog
爱范儿
爱范儿
L
LINUX DO - 热门话题
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
V
Vulnerabilities – Threatpost
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
S
Securelist
阮一峰的网络日志
阮一峰的网络日志
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Schneier on Security
I
Intezer
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
腾讯CDC
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Scott Helme
Scott Helme
S
SegmentFault 最新的问题
Simon Willison's Weblog
Simon Willison's Weblog
人人都是产品经理
人人都是产品经理
Schneier on Security
Schneier on Security
Jina AI
Jina AI
N
News and Events Feed by Topic
C
Cisco Blogs
L
Lohrmann on Cybersecurity
V
V2EX
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cisco Talos Blog
Cisco Talos Blog
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
O
OpenAI News
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - tsembrace

Pandas数据分析教程,由浅入深讲解(五)Pandas IO操作 Pandas数据分析教程,由浅入深讲解(四) Pandas数据分析教程,由浅入深讲解(三) Pandas数据分析教程,由浅入深讲解(二) Pandas数据分析教程,由浅入深讲解(一) B站黑马Python+AI零基础入门(二)AI应用-实战 B站黑马Python+AI零基础入门(一)AI应用-基础 B站清华128小时Python高级教程一(C3深入类和对象) B站清华128小时Python高级教程一(C1、C2) B站python入门学习---第二阶段第二章数据库、SQL和MySQL B站python入门学习---第二阶段第一章类和对象 B站python入门学习---第一阶段第十章 数据可视化 B站python入门学习---第一阶段第八~九章 文件操作、异常、模块与包 B站python入门学习---第一阶段前七章回顾复习(一) Python入门学习(十)第十四章其他 Python入门学习(九)Python的高级语法与用法(四)装饰器 Python入门学习(九)Python的高级语法与用法(三)函数式编程 Python入门学习(九)Python的高级语法与用法(二)闭包 Python入门学习(九)Python的高级语法与用法(一)枚举 Python入门学习(八)JSON、反序列化、序列化 Python入门学习(七)高级部分:正则表达式(二) Python入门学习(七)高级部分:正则表达式 Python入门学习(六)高级部分:面向对象 Python入门学习(五)函数 Python入门学习(四)流程控制 包与模块
B站python入门学习---第一阶段前七章回顾复习(二)
tsembrace · 2025-08-30 · via 博客园 - tsembrace
"""
综合案例: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])