aoi学院

Aisaka's Blog, School of Aoi, Aisaka University

Python-第6篇《代码的乐高:函数》

📖 开篇语

还记得你第一次用Excel的 SUM 函数吗?

“哇,原来不用手工相加,一个公式就能自动计算!”

后来你又学会了 VLOOKUPIFROUND……每个函数就像一个“魔法盒子”,输入数据,唰地得到结果。

今天,我们要学习Python的“魔法盒子”——函数。更酷的是,你不仅能使用别人做好的盒子,还能自己创造全新的魔法盒子!就像玩乐高积木一样,用一个个小函数搭建出强大的工具。


🎯 今日学习目标

  • 理解什么是函数(用Excel公式来类比)
  • 学会创建自己的计算函数(打造专属工具)
  • 制作个人所得税计算器

🧩 函数:Python的“魔法盒子”

从Excel函数理解Python函数

Excel中的函数:

1
2
3
=SUM(A1:A10)          '求和
=VLOOKUP(值,区域,列) '查找
=IF(条件,真值,假值) '判断

Python中的函数:

1
2
3
sum([1,2,3,4,5])                    # 求和
max([85, 92, 78, 95, 88]) # 找最大值
round(3.14159, 2) # 四舍五入

看,是不是一模一样?都是:输入数据 → 得到结果

函数的神奇之处

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 没有函数的时候(别这么写!)
工资1 = 8000
个税1 = 工资1 * 0.03 - 0
工资2 = 15000
个税2 = 工资2 * 0.1 - 210
工资3 = 25000
个税3 = 工资3 * 0.2 - 1410
# ... 要写100遍?

# 有函数的时候(推荐!)
def 计算个税(工资):
if 工资 <= 5000:
return 0
elif 工资 <= 8000:
return 工资 * 0.03 - 0
elif 工资 <= 17000:
return 工资 * 0.1 - 210
else:
return 工资 * 0.2 - 1410

# 现在计算100个人的个税只需要一行代码!
员工列表 = [8000, 15000, 25000, 12000, 30000]
for 工资 in 员工列表:
print(f"工资{工资}元,个税{计算个税(工资)}元")

函数 = 把重复代码变成可重用的“乐高积木”!


🏗️ 创建自己的函数:打造专属财务工具

函数的基本结构

1
2
3
4
def 函数名(参数1, 参数2, ...):
"""函数的说明文档"""
# 函数体(具体做什么)
return 返回值

举个简单的例子🌰:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建计算年终奖的函数
def 计算年终奖(月工资, 工作月数):
"""根据月工资和工作月数计算年终奖"""
if 工作月数 >= 12:
年终奖 = 月工资 * 3 # 满一年发3个月工资
elif 工作月数 >= 6:
年终奖 = 月工资 * 2 # 满半年发2个月工资
else:
年终奖 = 月工资 * 0.5 # 不满半年发0.5个月工资

return 年终奖

# 使用函数
print(f"张三年终奖:{计算年终奖(8000, 15)}元")
print(f"李四年终奖:{计算年终奖(12000, 8)}元")
print(f"王五年终奖:{计算年终奖(10000, 3)}元")

财务常用函数实战

函数1:计算复利
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def 计算复利(本金, 年利率, 年数, 每年存入=0):
"""
计算复利收益

参数:
本金:初始投资金额
年利率:年化收益率(如0.05表示5%)
年数:投资年限
每年存入:每年追加投资金额(默认0)

返回:
最终金额
"""
总金额 = 本金

forin range(年数):
总金额 = 总金额 * (1 + 年利率) + 每年存入

return 总金额

# 使用函数
结果 = 计算复利(10000, 0.05, 10, 5000)
print(f"10万元本金,年收益5%,每年追加5万,10年后:{结果:.2f}元")

# 比较不同方案
方案1 = 计算复利(50000, 0.04, 5)
方案2 = 计算复利(30000, 0.06, 5, 10000)
print(f"方案1结果:{方案1:.2f}元")
print(f"方案2结果:{方案2:.2f}元")
函数2:计算折旧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def 计算折旧(原值, 残值率, 使用年限, 方法="直线法"):
"""
计算固定资产折旧

参数:
原值:固定资产原值
残值率:预计净残值率(如0.05表示5%)
使用年限:预计使用年限
方法:折旧方法(直线法/年数总和法)

返回:
每年折旧额的列表
"""
残值 = 原值 * 残值率
应折旧金额 = 原值 - 残值

if 方法 == "直线法":
年折旧额 = 应折旧金额 / 使用年限
return [年折旧额] * 使用年限

elif 方法 == "年数总和法":
折旧列表 = []
年数总和 = sum(range(1, 使用年限 + 1))

forin range(1, 使用年限 + 1):
当年折旧率 = (使用年限 - 年 + 1) / 年数总和
当年折旧额 = 应折旧金额 * 当年折旧率
折旧列表.append(当年折旧额)

return 折旧列表

# 使用函数
设备折旧 = 计算折旧(100000, 0.05, 5, "直线法")
print("直线法折旧:")
for i, 折旧 in enumerate(设备折旧, 1):
print(f"第{i}年折旧:{折旧:.2f}元")

设备折旧加速 = 计算折旧(100000, 0.05, 5, "年数总和法")
print("\n年数总和法折旧:")
for i, 折旧 in enumerate(设备折旧加速, 1):
print(f"第{i}年折旧:{折旧:.2f}元")
函数3:计算贷款月供
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
def 计算月供(贷款金额, 年利率, 贷款年限, 还款方式="等额本息"):
"""
计算贷款月供金额

参数:
贷款金额:贷款总额
年利率:年化利率(如0.045表示4.5%)
贷款年限:贷款期限(年)
还款方式:等额本息或等额本金

返回:
月供金额(等额本息)或首月+末月月供(等额本金)
"""
月利率 = 年利率 / 12
还款月数 = 贷款年限 * 12

if 还款方式 == "等额本息":
# 等额本息公式:月供 = 本金×月利率×(1+月利率)^还款月数 ÷ [(1+月利率)^还款月数-1]
月供 = 贷款金额 * 月利率 * (1 + 月利率) ** 还款月数 / ((1 + 月利率) ** 还款月数 - 1)
return 月供

elif 还款方式 == "等额本金":
# 等额本金:每月本金相同,利息逐月递减
每月本金 = 贷款金额 / 还款月数
首月利息 = 贷款金额 * 月利率
首月月供 = 每月本金 + 首月利息

# 最后一个月利息
剩余本金 = 每月本金 # 最后一个月只剩一期本金
末月利息 = 剩余本金 * 月利率
末月月供 = 每月本金 + 末月利息

return 首月月供, 末月月供

# 使用函数
商贷月供 = 计算月供(1000000, 0.045, 30, "等额本息")
print(f"100万商贷,4.5%利率,30年等额本息:月供{商贷月供:.2f}元")

公积金月供 = 计算月供(600000, 0.0325, 30, "等额本息")
print(f"60万公积金,3.25%利率,30年等额本息:月供{公积金月供:.2f}元")

首月月供, 末月月供 = 计算月供(1000000, 0.045, 30, "等额本金")
print(f"100万商贷,4.5%利率,30年等额本金:")
print(f"首月月供:{首月月供:.2f}元")
print(f"末月月供:{末月月供:.2f}元")

💰 实战项目:个人所得税计算器

版本1.0:基础版个税计算器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 个人所得税计算器 - 基础版
print("=== 个人所得税计算器 ===")

def 计算个税(月收入, 专项扣除=0, 专项附加扣除=0):
"""
计算个人所得税(2019年新版)

参数:
月收入:税前月收入
专项扣除:五险一金等
专项附加扣除:子女教育、房贷利息等

返回:
应缴个税金额
"""
# 起征点5000元
起征点 = 5000

# 应纳税所得额
应纳税所得额 = 月收入 - 起征点 - 专项扣除 - 专项附加扣除

if 应纳税所得额 <= 0:
return 0

# 个税税率表(综合所得适用)
税率表 = [
(0, 3000, 0.03, 0),
(3000, 12000, 0.1, 210),
(12000, 25000, 0.2, 1410),
(25000, 35000, 0.25, 2660),
(35000, 55000, 0.3, 4410),
(55000, 80000, 0.35, 7160),
(80000, float('inf'), 0.45, 15160)
]

# 找到适用税率
for 下限, 上限, 税率, 速算扣除数 in 税率表:
if 下限 < 应纳税所得额 <= 上限:
个税 = 应纳税所得额 * 税率 - 速算扣除数
return 个税

return 0

# 使用个税计算器
测试收入 = [3000, 8000, 15000, 25000, 40000, 60000, 100000]
print("\n个税计算示例:")
for 收入 in 测试收入:
个税金额 = 计算个税(收入)
税后收入 = 收入 - 个税金额
print(f"税前收入:{收入:6,}元,个税:{个税金额:6.2f}元,税后:{税后收入:6.2f}元")
版本2.0:增强版(含专项扣除)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# 个人所得税计算器 - 增强版
print("=== 个人所得税计算器(增强版) ===")

def 计算专项扣除(月收入, 公积金比例=0.12, 社保比例=0.105):
"""
计算五险一金扣除
默认:公积金12%,社保10.5%
"""
return 月收入 * (公积金比例 + 社保比例)

def 计算专项附加扣除(子女教育=0, 继续教育=0, 住房贷款利息=0,
住房租金=0, 赡养老人=0, 大病医疗=0):
"""
计算专项附加扣除
各项扣除标准(每月):
子女教育:1000元/个
继续教育:400元
住房贷款利息:1000元
住房租金:1500元(直辖市)
赡养老人:2000元
大病医疗:据实扣除(年度)
"""
月度附加扣除 = (子女教育 * 1000 + 继续教育 * 400 +
住房贷款利息 * 1000 + 住房租金 * 1500 +
赡养老人 * 2000)
return 月度附加扣除

def 计算个税详细(月收入, 公积金比例=0.12, 社保比例=0.105, **附加扣除):
"""
详细版个税计算

参数:
月收入:税前月收入
公积金比例:公积金缴纳比例
社保比例:社保缴纳比例
**附加扣除:专项附加扣除项目
"""
# 计算专项扣除
专项扣除 = 计算专项扣除(月收入, 公积金比例, 社保比例)

# 计算专项附加扣除
专项附加扣除 = 计算专项附加扣除(**附加扣除)

# 调用基础版函数计算个税
个税 = 计算个税(月收入, 专项扣除, 专项附加扣除)

return {
"税前收入": 月收入,
"五险一金": 专项扣除,
"专项附加扣除": 专项附加扣除,
"应纳税所得额": 月收入 - 5000 - 专项扣除 - 专项附加扣除,
"个税": 个税,
"税后收入": 月收入 - 个税
}

# 使用增强版计算器
print("\n详细个税计算示例:")

# 案例1:单身白领
结果1 = 计算个税详细(15000, 子女教育=0, 住房贷款利息=1, 住房租金=0)
print("案例1 - 单身白领(有房贷):")
for 项目, 金额 in 结果1.items():
if isinstance(金额, float):
print(f" {项目}{金额:,.2f}元")
else:
print(f" {项目}{金额}")

print()

# 案例2:有娃家庭
结果2 = 计算个税详细(25000, 子女教育=2, 赡养老人=1, 住房贷款利息=1)
print("案例2 - 二孩家庭(有房贷,赡养老人):")
for 项目, 金额 in 结果2.items():
if isinstance(金额, float):
print(f" {项目}{金额:,.2f}元")
else:
print(f" {项目}{金额}")

# 比较两个案例
print(f"\n💡 节税效果对比:")
print(f"案例1个税:{结果1['个税']:.2f}元")
print(f"案例2个税:{结果2['个税']:.2f}元")
print(f"专项附加扣除让案例2每月少缴税:{结果1['个税'] - 结果2['个税']:.2f}元")
print(f"一年节税:{(结果1['个税'] - 结果2['个税']) * 12:.2f}元")
版本3.0:专业版(年终奖+年度汇算)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# 个人所得税计算器 - 专业版
print("=== 个人所得税计算器(专业版) ===")

def 计算年终奖个税(年终奖金额, 当月工资=5000):
"""
计算年终奖个税(单独计税)
年终奖 ÷ 12,按月度税率表计算
"""
if 年终奖金额 <= 0:
return 0

# 年终奖除以12找税率
月平均奖金 = 年终奖金额 / 12

# 使用基础税率表(和工资一样,但没有速算扣除数×12)
税率表 = [
(0, 3000, 0.03, 0),
(3000, 12000, 0.1, 210),
(12000, 25000, 0.2, 1410),
(25000, 35000, 0.25, 2660),
(35000, 55000, 0.3, 4410),
(55000, 80000, 0.35, 7160),
(80000, float('inf'), 0.45, 15160)
]

for 下限, 上限, 税率, 速算扣除数 in 税率表:
if 下限 < 月平均奖金 <= 上限:
年终奖个税 = 年终奖金额 * 税率 - 速算扣除数
return 年终奖个税

return 0

def 年度汇算清缴(月度收入列表, 年度奖金=0, 年度专项扣除=0, 年度附加扣除=0):
"""
年度个人所得税汇算清缴

参数:
月度收入列表:12个月的税前收入
年度奖金:年终奖
年度专项扣除:全年五险一金
年度附加扣除:全年专项附加扣除

返回:
汇算结果,包括应补或应退税额
"""
# 计算年度综合所得
年度综合所得 = sum(月度收入列表)
年度总收入 = 年度综合所得 + 年度奖金

# 计算年度应纳税所得额
年度起征点 = 5000 * 12 # 6万元
年度应纳税所得额 = 年度综合所得 - 年度起征点 - 年度专项扣除 - 年度附加扣除

if 年度应纳税所得额 <= 0:
年度应纳税额 = 0
else:
# 年度税率表(和月度一样,但按全年算)
年度税率表 = [
(0, 36000, 0.03, 0),
(36000, 144000, 0.1, 2520),
(144000, 300000, 0.2, 16920),
(300000, 420000, 0.25, 31920),
(420000, 660000, 0.3, 52920),
(660000, 960000, 0.35, 85920),
(960000, float('inf'), 0.45, 181920)
]

for 下限, 上限, 税率, 速算扣除数 in 年度税率表:
if 下限 < 年度应纳税所得额 <= 上限:
年度应纳税额 = 年度应纳税所得额 * 税率 - 速算扣除数
break

# 计算年终奖税额
年终奖税额 = 计算年终奖个税(年度奖金)

# 年度总税额
年度总税额 = 年度应纳税额 + 年终奖税额

# 计算已预缴税额(按月计算)
已预缴税额 = 0
for 月收入 in 月度收入列表:
月个税 = 计算个税(月收入, 年度专项扣除/12, 年度附加扣除/12)
已预缴税额 += 月个税

# 汇算结果
应补退税额 = 年度总税额 - 已预缴税额

return {
"年度综合所得": 年度综合所得,
"年度奖金": 年度奖金,
"年度应纳税所得额": max(0, 年度应纳税所得额),
"年度应纳税额": 年度应纳税额,
"年终奖税额": 年终奖税额,
"年度总税额": 年度总税额,
"已预缴税额": 已预缴税额,
"应补退税额": 应补退税额
}

# 使用专业版计算器
print("\n=== 年度个税汇算清缴示例 ===")

# 模拟一年的收入数据
月度工资 = [15000] * 12 # 每月15000元
年终奖 = 30000
年度五险一金 = 28000 # 全年
年度附加扣除 = 36000 # 全年(子女教育+房贷利息等)

# 计算年度汇算
汇算结果 = 年度汇算清缴(月度工资, 年终奖, 年度五险一金, 年度附加扣除)

print("\n📊 年度汇算清缴结果:")
for 项目, 金额 in 汇算结果.items():
if isinstance(金额, float):
print(f" {项目}{金额:,.2f}元")
else:
print(f" {项目}{金额}")

print(f"\n💰 汇算结论:")
if 汇算结果["应补退税额"] > 0:
print(f"需要补税:{汇算结果['应补退税额']:.2f}元")
print("请在次年3月1日-6月30日通过个税APP办理")
elif 汇算结果["应补退税额"] < 0:
print(f"可以申请退税:{abs(汇算结果['应补退税额']):.2f}元")
print("建议及时办理退税,记得提供银行卡信息")
else:
print("无需补税或退税,完美!")

🏃‍♀️ 进阶小挑战

挑战1:企业成本分析函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 企业成本分析工具包
print("=== 企业成本分析工具包 ===")

def 计算盈亏平衡点(固定成本, 单价, 单位变动成本):
"""
计算盈亏平衡点(保本销量)

参数:
固定成本:不随销量变化的成本
单价:产品售价
单位变动成本:每单位产品的变动成本

返回:
盈亏平衡点的销量
"""
if 单价 <= 单位变动成本:
return None # 售价低于成本,永远亏损

盈亏平衡点 = 固定成本 / (单价 - 单位变动成本)
return 盈亏平衡点

def 计算安全边际(实际销量, 盈亏平衡销量):
"""
计算安全边际

返回:
安全边际量和安全边际率
"""
安全边际量 = 实际销量 - 盈亏平衡销量
安全边际率 = 安全边际量 / 实际销量 * 100

return 安全边际量, 安全边际率

def 目标利润分析(目标利润, 固定成本, 单价, 单位变动成本):
"""
计算实现目标利润所需的销量
"""
目标销量 = (固定成本 + 目标利润) / (单价 - 单位变动成本)
return 目标销量

# 使用成本分析函数
print("\n📊 成本分析示例:")

# 案例:某产品分析
固定成本 = 50000 # 月固定成本
单价 = 200 # 产品售价
单位变动成本 = 120 # 单位变动成本
当前月销量 = 1000 # 当前月销量

# 计算盈亏平衡点
保本销量 = 计算盈亏平衡点(固定成本, 单价, 单位变动成本)
print(f"盈亏平衡点:{保本销量:.0f}件/月")

# 计算安全边际
安全边际量, 安全边际率 = 计算安全边际(当前月销量, 保本销量)
print(f"安全边际:{安全边际量:.0f}件")
print(f"安全边际率:{安全边际率:.1f}%")

# 风险评价
if 安全边际率 > 30:
风险等级 = "安全"
elif 安全边际率 > 10:
风险等级 = "一般"
else:
风险等级 = "危险"

print(f"经营风险:{风险等级}")

# 目标利润分析
目标利润 = 30000 # 月目标利润
目标销量 = 目标利润分析(目标利润, 固定成本, 单价, 单位变动成本)
print(f"实现月利润{目标利润}元需要销量:{目标销量:.0f}件")

# 敏感性分析
print(f"\n📈 价格敏感性分析:")
价格列表 = [180, 190, 200, 210, 220]
for 价格 in 价格列表:
新保本点 = 计算盈亏平衡点(固定成本, 价格, 单位变动成本)
print(f"售价{价格}元时,盈亏平衡点:{新保本点:.0f}件")
挑战2:投资组合分析函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# 投资组合分析工具
print("=== 投资组合分析工具 ===")

import math

def 计算收益率(初始价值, 最终价值):
"""计算投资收益率"""
return (最终价值 - 初始价值) / 初始价值

def 计算年化收益率(初始价值, 最终价值, 年数):
"""计算年化收益率"""
总收益率 = 计算收益率(初始价值, 最终价值)
年化收益率 = (1 + 总收益率) ** (1/年数) - 1
return 年化收益率

def 计算波动率(收益率列表):
"""
计算收益率波动率(标准差)

参数:
收益率列表:各期收益率的列表

返回:
波动率(标准差)
"""
if len(收益率列表) < 2:
return 0

平均收益率 = sum(收益率列表) / len(收益率列表)

方差 = 0
for 收益率 in 收益率列表:
方差 += (收益率 - 平均收益率) ** 2

方差 = 方差 / (len(收益率列表) - 1)
波动率 = math.sqrt(方差)

return 波动率

def 计算夏普比率(投资组合收益率, 无风险收益率, 波动率):
"""
计算夏普比率

参数:
投资组合收益率:投资组合的年化收益率
无风险收益率:通常用国债收益率
波动率:投资组合的波动率

返回:
夏普比率
"""
if 波动率 == 0:
return 0

夏普比率 = (投资组合收益率 - 无风险收益率) / 波动率
return 夏普比率

def 投资组合分析(投资记录, 无风险收益率=0.03):
"""
综合分析投资组合

参数:
投资记录:[(日期, 价值), ...] 的列表
无风险收益率:通常用3%国债收益率

返回:
综合分析结果字典
"""
if len(投资记录) < 2:
return {"错误": "数据不足"}

# 提取价值和日期
价值列表 = [记录[1] for 记录 in 投资记录]
日期列表 = [记录[0] for 记录 in 投资记录]

# 基本数据
初始价值 = 价值列表[0]
最终价值 = 价值列表[-1]
期数 = len(价值列表) - 1

# 计算各期收益率
收益率列表 = []
for i in range(1, len(价值列表)):
期收益率 = (价值列表[i] - 价值列表[i-1]) / 价值列表[i-1]
收益率列表.append(期收益率)

# 计算各种指标
总收益率 = 计算收益率(初始价值, 最终价值)
平均收益率 = sum(收益率列表) / len(收益率列表)

# 假设数据是按月的,计算年化数据
月数 = 期数
年数 = 月数 / 12
年化收益率 = 计算年化收益率(初始价值, 最终价值, 年数)
月波动率 = 计算波动率(收益率列表)
年波动率 = 月波动率 * math.sqrt(12) # 年化波动率

# 计算夏普比率
夏普比率 = 计算夏普比率(年化收益率, 无风险收益率, 年波动率)

return {
"初始价值": 初始价值,
"最终价值": 最终价值,
"总收益率": 总收益率,
"年化收益率": 年化收益率,
"平均月收益率": 平均收益率,
"月波动率": 月波动率,
"年波动率": 年波动率,
"夏普比率": 夏普比率
}

# 使用投资组合分析
print("\n📊 投资组合分析示例:")

# 模拟一个投资组合的历史数据
投资组合数据 = [
("2023-01", 100000),
("2023-02", 102000),
("2023-03", 98000),
("2023-04", 105000),
("2023-05", 108000),
("2023-06", 112000),
("2023-07", 110000),
("2023-08", 115000),
("2023-09", 118000),
("2023-10", 120000),
("2023-11", 123000),
("2023-12", 125000)
]

# 分析投资组合
分析结果 = 投资组合分析(投资组合数据)

print("\n📈 投资组合分析结果:")
for 项目, 数值 in 分析结果.items():
if isinstance(数值, float):
if "率" in 项目:
print(f" {项目}{数值:.2%}")
else:
print(f" {项目}{数值:.2f}")
else:
print(f" {项目}{数值}")

# 投资建议
print(f"\n💡 投资建议:")
if 分析结果["夏普比率"] > 1:
print("✅ 夏普比率大于1,风险调整后收益优秀")
elif 分析结果["夏普比率"] > 0.5:
print("👍 夏普比率良好,风险收益比较合理")
else:
print("⚠️ 夏普比率较低,建议优化投资组合")

if 分析结果["年波动率"] < 10:
print("✅ 波动率较低,投资组合相对稳定")
elif 分析结果["年波动率"] > 20:
print("⚠️ 波动率较高,注意风险控制")

💭 今日思考

通过今天的学习,我们发现:

  • 函数就像Excel的公式,是“可重用的魔法盒子”
  • 把重复代码封装成函数,能让程序更清晰、更易维护
  • 好的函数设计能让复杂的财务计算变得简单
  • 用函数搭建工具包,就像玩乐高积木一样有趣

📝 课后小结

  • ✅ 理解了函数的概念和作用
  • ✅ 学会了创建自己的函数
  • ✅ 掌握了函数的参数和返回值
  • ✅ 制作了专业版的个人所得税计算器

🎯 下节预告

下节我们将学习列表和字典:Python的数据表格,认识Python中的“Excel表格”,用它们来管理更复杂的数据,比如员工信息表、客户资料库、股票数据表等!


💡 小贴士

  • 函数名要有意义,看到名字就知道做什么
  • 复杂的函数要写文档说明,方便以后使用
  • 一个函数只做一件事,保持简单清晰
  • 多练习写函数,这是编程的核心技能

🤖 Powered by Kimi K2 0905 💻 内容经葵葵🌻审核与修改