aoi学院

Aisaka's Blog, School of Aoi, Aisaka University

Python-第3篇《数据的盒子:变量和数据类型》

📖 开篇语

还记得你第一次用Excel做表格时的情景吗?你可能会在A列输入姓名(文字),B列输入年龄(数字),C列输入是否已婚(是/否)。Excel很聪明,它知道文字和数字要区别对待——比如你不会对“张三”这个姓名求和,也不会把年龄25岁当成文字来处理。

Python也一样,它有不同的“数据类型”来存放不同类型的信息。今天,我们就来认识Python中的各种“储物盒”,看看它们和Excel的单元格有什么相似之处。


🎯 今日学习目标

  • 认识三种基本数据类型:数字、字符串、布尔值
  • 用Excel的思维理解不同数据类型的用途
  • 动手制作一个个人收支记录器

📦 Python的三种基本“储物盒”

  1. 数字型(Number)- 装各种数字的盒子

    就像Excel中的“数值格式”单元格,专门放各种数字。

1
2
3
4
5
6
7
8
9
# 整数(int)- 没有小数点的数字
年龄 = 25
工作年限 = 3
家庭成员数 = 4

# 浮点数(float)- 有小数点的数字
身高 = 1.68
体重 = 55.5
工资 = 8500.50
  1. 字符串型(String)- 装文字的盒子

    就像Excel中的“文本格式”单元格,专门放文字信息。

1
2
3
4
5
6
7
8
9
# 用引号括起来的都是字符串
姓名 = "李小美"
职业 = "会计师"
邮箱 = "lixiaomei@email.com"
家庭地址 = "北京市朝阳区建国路88号"

# 单引号和双引号都可以
性别 = '女'
座右铭 = "生活就像一盒巧克力"
  1. 布尔型(Boolean)- 装“是/否”的盒子

    就像Excel中的“是/否”类型,只有两个值:True(真)或False(假)。

1
2
3
4
是否已婚 = True
是否有房 = False
是否通过考试 = True
是否完成目标 = False

🔄 数据类型转换:盒子的“变形术”

有时候我们需要在不同类型的盒子之间转换数据,就像Excel中的“文本转列”功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 数字转字符串(给数字加上引号)
年龄 = 25
年龄_str = str(年龄) # 变成"25"
print(f"我今年{年龄_str}岁")

# 字符串转数字(去掉引号)
工资_text = "8500"
工资_num = int(工资_text) # 变成8500
print(f"月工资:{工资_num + 500}") # 现在可以做加法了

# 字符串转浮点数
价格 = "19.99"
价格_float = float(价格) # 变成19.99
print(f"打折后价格:{价格_float * 0.8}")

📊 用Excel思维理解数据类型

Excel中的数据类型 vs Python中的数据类型

Excel单元格格式Python数据类型例子用途
数值int/float100, 3.14计算、统计
文本str“张三”, “北京”名称、描述
是/否boolTrue, False判断、条件
日期datetime2024-01-26时间相关计算

实际场景举例🌰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 员工信息表(就像Excel的一行数据)
员工姓名 = "王小明"
年龄 = 28
部门 = "财务部"
工资 = 8500.00
是否正式员工 = True
入职日期 = "2022-03-15"

# 计算年终奖(正式员工有年终奖)
if 是否正式员工:
年终奖 = 工资 * 3
print(f"{员工姓名}的年终奖是:{年终奖}元")
else:
print(f"{员工姓名}是试用期员工,暂无年终奖")

💰 实战项目:个人收支记录器

版本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
# 个人收支记录器 - 基础版
print("=== 个人收支记录器 ===")

# 输入收入信息
print("\n📈 记录收入:")
工资收入 = float(input("本月工资收入:"))
兼职收入 = float(input("兼职收入:"))
其他收入 = float(input("其他收入:"))

# 输入支出信息
print("\n📉 记录支出:")
房租支出 = float(input("房租:"))
餐饮支出 = float(input("餐饮:"))
交通支出 = float(input("交通:"))
娱乐支出 = float(input("娱乐:"))
其他支出 = float(input("其他:"))

# 计算收支情况
总收入 = 工资收入 + 兼职收入 + 其他收入
总支出 = 房租支出 + 餐饮支出 + 交通支出 + 娱乐支出 + 其他支出
结余 = 总收入 - 总支出

# 输出结果
print(f"\n📊 本月财务报告:")
print(f"总收入:{总收入:.2f}元")
print(f"总支出:{总支出:.2f}元")
print(f"结余:{结余:.2f}元")

if 结余 > 0:
print("✅ 本月有结余,存钱小能手!")
elif 结余 == 0:
print("⚠️ 收支平衡,要注意节约哦!")
else:
print("❌ 本月超支,要控制消费了!")
版本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
# 个人收支记录器 - 增强版
print("=== 个人收支记录器增强版 ===")

# 定义支出类别
支出类别 = ["房租", "餐饮", "交通", "娱乐", "购物", "其他"]

# 收集收入数据
print("\n📈 记录收入:")
工资收入 = float(input("本月工资:"))
奖金收入 = float(input("奖金收入:"))
投资收益 = float(input("投资收益:"))
其他收入 = float(input("其他收入:"))

# 收集支出数据
print("\n📉 记录各类支出:")
支出明细 = {}
for 类别 in 支出类别:
金额 = float(input(f"{类别}支出:"))
支出明细[类别] = 金额

# 计算统计数据
总收入 = 工资收入 + 奖金收入 + 投资收益 + 其他收入
总支出 = sum(支出明细.values())
结余 = 总收入 - 总支出

# 找出最大支出项
最大支出类别 = max(支出明细, key=支出明细.get)
最大支出金额 = 支出明细[最大支出类别]

# 输出详细报告
print(f"\n📊 本月财务分析报告:")
print(f"总收入:{总收入:.2f}元")
print(f"总支出:{总支出:.2f}元")
print(f"结余:{结余:.2f}元")
print(f"储蓄率:{(结余/总收入*100):.1f}%")

print(f"\n📝 支出明细:")
for 类别, 金额 in 支出明细.items():
百分比 = 金额 / 总支出 * 100
print(f"{类别}{金额:.2f}元({百分比:.1f}%)")

print(f"\n💡 财务建议:")
print(f"最大支出是{最大支出类别},占总支出的{最大支出金额/总支出*100:.1f}%")
if 结余 > 0:
print("建议将结余资金的50%用于投资,50%作为应急储备")
else:
print("建议减少非必要支出,特别是控制娱乐和购物消费")
版本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
# 个人收支记录器 - 专业版
print("=== 个人收支记录器专业版 ===")

# 设置预算(可以修改这些值)
预算设置 = {
"房租预算": 3000,
"餐饮预算": 1500,
"交通预算": 500,
"娱乐预算": 800,
"购物预算": 1000,
"其他预算": 500
}

# 收集实际支出
print("\n📉 记录本月实际支出:")
实际支出 = {}
for 预算项目 in 预算设置:
类别 = 预算项目.replace("预算", "")
金额 = float(input(f"{类别}支出:"))
实际支出[类别] = 金额

# 计算预算执行情况
print(f"\n📊 预算执行情况分析:")
print(f"{'项目':<10} {'预算':<10} {'实际':<10} {'差异':<10} {'状态'}")
print("-" * 50)

总预算 = 0
总实际 = 0

for 预算项目, 预算金额 in 预算设置.items():
类别 = 预算项目.replace("预算", "")
实际金额 = 实际支出.get(类别, 0)
差异 = 预算金额 - 实际金额
总预算 += 预算金额
总实际 += 实际金额

if 差异 > 0:
状态 = "✅ 节约"
elif 差异 == 0:
状态 = "⚠️ 刚好"
else:
状态 = "❌ 超支"

print(f"{类别:<10} {预算金额:<10.0f} {实际金额:<10.0f} {差异:<10.0f} {状态}")

print("-" * 50)
print(f"{'合计':<10} {总预算:<10.0f} {总实际:<10.0f} {总预算-总实际:<10.0f}")

# 整体评价
节约比例 = (总预算 - 总实际) / 总预算 * 100
if 节约比例 > 10:
print(f"\n🎉 太棒了!本月节约了{节约比例:.1f}%的预算!")
elif 节约比例 > 0:
print(f"\n👍 不错!本月节约了{节约比例:.1f}%的预算")
else:
print(f"\n😅 本月超支了{abs(节约比例):.1f}%,下月要注意控制哦!")

🔍 数据类型检查小技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 有时候我们不知道变量是什么类型,可以用type()函数检查
神秘变量1 = "123"
神秘变量2 = 123
神秘变量3 = True

print(f"神秘变量1的类型是:{type(神秘变量1)}")
print(f"神秘变量2的类型是:{type(神秘变量2)}")
print(f"神秘变量3的类型是:{type(神秘变量3)}")

# 类型检查在财务中的实际应用
用户输入 = input("请输入金额:")
print(f"用户输入的是:{type(用户输入)}")

# 如果需要计算,必须先转换成数字
if 用户输入.isdigit(): # 检查是否全是数字
金额 = float(用户输入)
含税金额 = 金额 * 1.13 # 加上13%的税
print(f"含税金额:{含税金额}")
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
# 个人资产负债表
print("=== 个人资产负债表 ===")

# 资产项目
现金 = float(input("现金:"))
银行存款 = float(input("银行存款:"))
股票市值 = float(input("股票市值:"))
基金市值 = float(input("基金市值:"))
房产市值 = float(input("房产市值:"))
其他资产 = float(input("其他资产:"))

# 负债项目
信用卡欠款 = float(input("信用卡欠款:"))
房贷余额 = float(input("房贷余额:"))
车贷余额 = float(input("车贷余额:"))
其他负债 = float(input("其他负债:"))

# 计算净资产
总资产 = 现金 + 银行存款 + 股票市值 + 基金市值 + 房产市值 + 其他资产
总负债 = 信用卡欠款 + 房贷余额 + 车贷余额 + 其他负债
净资产 = 总资产 - 总负债

print(f"\n📊 资产负债表:")
print(f"总资产:{总资产:.2f}元")
print(f"总负债:{总负债:.2f}元")
print(f"净资产:{净资产:.2f}元")
print(f"负债率:{总负债/总资产*100:.1f}%")

if 净资产 > 0:
print("✅ 财务状况健康!")
else:
print("⚠️ 资不抵债,需要调整财务结构")
挑战2:投资收益计算器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 投资收益计算器(考虑通胀)
print("=== 投资收益计算器 ===")

初始投资 = float(input("初始投资金额:"))
年收益率 = float(input("预期年收益率(%):")) / 100
通胀率 = float(input("预期通胀率(%):")) / 100
投资年限 = int(input("投资年限:"))

# 计算名义收益
名义最终价值 = 初始投资 * (1 + 年收益率) ** 投资年限
名义收益 = 名义最终价值 - 初始投资

# 计算实际收益(扣除通胀)
实际收益率 = (1 + 年收益率) / (1 + 通胀率) - 1
实际最终价值 = 初始投资 * (1 + 实际收益率) ** 投资年限
实际收益 = 实际最终价值 - 初始投资

print(f"\n📈 投资收益分析:")
print(f"名义最终价值:{名义最终价值:.2f}元")
print(f"名义收益:{名义收益:.2f}元")
print(f"实际最终价值:{实际最终价值:.2f}元")
print(f"实际收益:{实际收益:.2f}元")
print(f"购买力损失:{名义收益 - 实际收益:.2f}元")

💭 今日思考

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

  • Python的数据类型和Excel的单元格格式很相似
  • 不同的数据类型有不同的用途和操作方法
  • 合理选择数据类型能让程序更易读、更易维护

📝 课后小结

  • ✅ 认识了三种基本数据类型:数字、字符串、布尔值
  • ✅ 学会了用Excel思维理解数据类型
  • ✅ 掌握了数据类型转换的方法
  • ✅ 制作了三个版本的收支记录器

🎯 下节预告

下节我们将学习条件判断:让程序学会思考,让Python像财务人员一样做决策:如果收入大于支出,就建议投资;如果超支了,就发出警告。


💡 小贴士

  • 给变量起名时,最好能体现它的数据类型
  • 不确定用户输入什么类型时,先检查再转换
  • 财务计算中,金额一般用小数类型,避免整数除法的误差

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