📖 开篇语
还记得你第一次用Excel做表格时的情景吗?你可能会在A列输入姓名(文字),B列输入年龄(数字),C列输入是否已婚(是/否)。Excel很聪明,它知道文字和数字要区别对待——比如你不会对“张三”这个姓名求和,也不会把年龄25岁当成文字来处理。
Python也一样,它有不同的“数据类型”来存放不同类型的信息。今天,我们就来认识Python中的各种“储物盒”,看看它们和Excel的单元格有什么相似之处。
🎯 今日学习目标
- 认识三种基本数据类型:数字、字符串、布尔值
- 用Excel的思维理解不同数据类型的用途
- 动手制作一个个人收支记录器
📦 Python的三种基本“储物盒”
数字型(Number)- 装各种数字的盒子
就像Excel中的“数值格式”单元格,专门放各种数字。
1 2 3 4 5 6 7 8 9
| 年龄 = 25 工作年限 = 3 家庭成员数 = 4
身高 = 1.68 体重 = 55.5 工资 = 8500.50
|
字符串型(String)- 装文字的盒子
就像Excel中的“文本格式”单元格,专门放文字信息。
1 2 3 4 5 6 7 8 9
| 姓名 = "李小美" 职业 = "会计师" 邮箱 = "lixiaomei@email.com" 家庭地址 = "北京市朝阳区建国路88号"
性别 = '女' 座右铭 = "生活就像一盒巧克力"
|
布尔型(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(年龄) print(f"我今年{年龄_str}岁")
工资_text = "8500" 工资_num = int(工资_text) print(f"月工资:{工资_num + 500}")
价格 = "19.99" 价格_float = float(价格) print(f"打折后价格:{价格_float * 0.8}")
|
📊 用Excel思维理解数据类型
Excel中的数据类型 vs Python中的数据类型
| Excel单元格格式 | Python数据类型 | 例子 | 用途 |
|---|
| 数值 | int/float | 100, 3.14 | 计算、统计 |
| 文本 | str | “张三”, “北京” | 名称、描述 |
| 是/否 | bool | True, False | 判断、条件 |
| 日期 | datetime | 2024-01-26 | 时间相关计算 |
实际场景举例🌰
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 员工姓名 = "王小明" 年龄 = 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
| 神秘变量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 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 💻 内容经葵葵🌻审核与修改