Day 002 — 变量与数据类型:完成清单 ✅
逐项检查,确保完全掌握今日内容
📋 概念理解
- [ ] 我能说清楚 Python 变量本质是"标签"而不是"容器"
- [ ] 我理解动态类型和静态类型的区别
- [ ] 我知道 Python 选择动态类型设计的原因
- [ ] 我能列出 5 种基本数据类型(int, float, str, bool, NoneType)
- [ ] 我理解字符串不可变性的意义
- [ ] 我理解浮点数精度问题产生的原因
- [ ] 我理解小整数驻留(Interning)机制
🔧 实操技能
- [ ] 我能正确命名变量(snake_case、不覆盖关键字)
- [ ] 我能使用
type()检查变量的类型 - [ ] 我能使用
id()查看对象的内存地址 - [ ] 我能进行显式类型转换(int()、float()、str()、bool())
- [ ] 我能区分
is和==的适用场景 - [ ] 我能正确处理浮点数比较(使用 epsilon)
- [ ] 我能正确使用增强赋值运算符
🧪 代码验证
- [ ]
01-variables-and-types.py已运行通过 - [ ]
02-profile-card.py已运行通过(交互和非交互模式) - [ ] 我已理解代码中的所有注释
✍️ 练习题
练习 1:变量交换
不使用第三个变量,交换两个变量的值。
python
a = 10
b = 20
# 请在这里写你的代码,使得 a=20, b=10
# 验证
print(f"a = {a}, b = {b}") # 应输出 a = 20, b = 10
提示:Python 特有的元组解包方式是什么?
练习 2:类型侦探
写一个程序,给定任意输入,判断并输出它属于哪种类型:
python
# 给以下每个值打印出它的类型
items = [42, 3.14, "3.14", True, None, "True", 0, "", 0.0, 2**100]
# 对每个 item,输出 item, type(item).__name__
# 额外挑战:说出哪些值在 bool() 转换后为 False
练习 3:格式化输出练习
创建一个程序,定义以下变量并使用 f-string 输出格式化的自我介绍:
python
name = "你的名字" # 替换为你的名字
age = 你的年龄 # 替换为你的年龄
dream_job = "你的理想职业" # 替换为你的理想职业
# 用 f-string 输出: "大家好,我是[name],今年[age]岁,我的梦想是成为一名[dream_job]。"
# 要求:年龄后面的"岁"字也是变量拼进去的
# 输出示例: "大家好,我是张三,今年25岁,我的梦想是成为一名宇航员。"
练习 4:is 与 == 的实验
写一段代码来验证以下内容:
python
# 1. 找出两个不同的变量,使得 a is b 为 True 但 a == b 也为 True
# 2. 找出两个不同的变量,使得 a is b 为 False 但 a == b 为 True
# 3. 找出两个不同的变量,使得 a is b 为 False 且 a == b 也为 False
挑战:解释为什么第二点会发生。
练习 5:个人信息收集器升级版
在 02-profile-card.py 的基础上添加:
- 电话号码:用户输入手机号,程序判断是否是 11 位数字
- 邮箱验证:用户输入邮箱,程序判断是否包含
@符号 - 多项爱好:用户输入多个爱好(逗号分隔),程序将其拆分为列表
输出格式要求:
姓名 : 李明
年龄 : 28 岁
电话 : 138****5678 (部分隐藏)
邮箱 : 有 @ 符号 ✅
爱好列表: ['阅读', '编程', '跑步']
📊 自我评估
| 等级 | 标准 | 我的评价 |
|---|---|---|
| 🟢 完成 | 全部概念理解,代码运行无误 | |
| 🟡 良好 | 大部分理解,少量需要复习 | |
| 🔴 重学 | 需要再看一遍 README |
📝 学习笔记:
在这里写下你的疑问、发现、或任何想记录的内容:
__________________________________________________
__________________________________________________
__________________________________________________