feat: 初始化 Python 零基础教学课程

This commit is contained in:
zhiye.sun
2026-07-22 16:42:56 +08:00
commit 84d96caa6e
18 changed files with 3156 additions and 0 deletions

View File

@@ -0,0 +1,472 @@
# 第 1-2 课:变量与数据类型
## 一、本课目标
完成本课后,你应该能够:
1. 解释变量是什么,以及为什么程序需要变量;
2. 使用赋值符号 `=` 创建变量;
3. 区分字符串、整数、浮点数和布尔值;
4. 使用 `type()` 查看数据类型;
5. 遵守 Python 变量命名的基本规则;
6. 使用变量进行简单计算和文字输出;
7. 使用 `int()``float()``str()` 完成简单类型转换;
8. 看懂变量重新赋值后发生的变化。
## 二、前置知识
开始本课前,你应该已经能够:
- 使用 `python 文件名.py` 运行 Python 程序;
- 使用 `print()` 输出文字;
- 知道引号包围的内容是字符串;
- 知道 `#` 开头的内容是注释。
## 三、变量是什么
变量Variable是程序中用于保存数据的名称。
可以把变量想象成一个贴有标签的盒子:
```text
标签user_name
盒子中的数据:"Bruce"
```
在 Python 中可以这样写:
```python
user_name = "Bruce"
```
这行代码表示:把字符串 `"Bruce"` 保存起来,并使用名称 `user_name` 指向它。
之后只要使用变量名,就能取得对应的数据:
```python
print(user_name)
```
变量的价值在于:数据可以被保存、重复使用和修改,不必在每个地方重复写相同内容。
## 四、认识赋值符号
下面代码中的 `=` 称为赋值符号:
```python
age = 18
```
赋值操作按照“先看右边,再交给左边”的方式理解:
1. Python 先得到右边的整数 `18`
2. 再让左边的变量名 `age` 指向这个数据。
这里的 `=` 暂时不要理解成数学中的“左右相等”。Python 中判断两个值是否相等会使用 `==`,将在条件判断课程中学习。
## 五、四种基础数据类型
数据类型用于描述一个数据属于哪一类,以及它通常可以参与哪些操作。
### 5.1 字符串 `str`
字符串String类型名为 `str`)用于表示文字:
```python
user_name = "Bruce"
learning_goal = "开发 LLM Agent"
```
字符串必须使用成对的单引号或双引号包围。
即使内容看起来像数字,只要有引号,它仍然是字符串:
```python
phone_number = "13800000000"
```
电话号码通常不用于数学计算,因此使用字符串保存更合适。
### 5.2 整数 `int`
整数Integer类型名为 `int`)是不带小数部分的数字:
```python
age = 18
course_count = 8
temperature = -2
```
整数不需要引号,可以参加加、减、乘、除等数学运算。
### 5.3 浮点数 `float`
浮点数Floating-point Number类型名为 `float`)通常用于表示带小数部分的数字:
```python
height = 1.75
price = 19.9
progress = 0.25
```
“浮点数”是计算机领域的常用名称,初学阶段可以先把它理解为小数。
### 5.4 布尔值 `bool`
布尔值Boolean类型名为 `bool`)只有两个值:
```python
is_learning = True
is_finished = False
```
- `True` 表示真、是、成立;
- `False` 表示假、否、不成立。
首字母必须大写,并且不能添加引号。`"True"` 是字符串,不是布尔值。
布尔值经常用于记录某个状态,例如:
- 用户是否登录;
- 任务是否完成;
- 数据是否有效;
- 接口调用是否成功。
## 六、使用 `type()` 查看数据类型
`type()` 可以告诉我们一个数据的类型:
```python
user_name = "Bruce"
age = 18
print(type(user_name))
print(type(age))
```
输出结果:
```text
<class 'str'>
<class 'int'>
```
目前只需要关注最后的 `str``int``class` 与类的概念会在面向对象阶段详细学习。
`type()` 主要用于学习和排查问题。实际开发中,不需要为每一个变量都输出类型。
## 七、变量与字符串的区别
请比较:
```python
user_name = "Bruce"
print(user_name)
print("user_name")
```
输出为:
```text
Bruce
user_name
```
原因是:
- `user_name` 没有引号Python 会把它当作变量名,并读取变量保存的数据;
- `"user_name"` 有引号Python 会把它当作普通文字直接输出。
这是初学阶段非常重要的区别。
## 八、变量命名规则
### 8.1 必须遵守的规则
Python 变量名:
1. 可以包含英文字母、数字和下划线;
2. 不能以数字开头;
3. 不能包含空格、连字符等符号;
4. 区分英文字母大小写;
5. 不能使用 Python 关键字。
正确示例:
```python
user_name = "Bruce"
age2 = 18
course_count = 8
```
错误示意:
```text
2age = 18 # 不能以数字开头
user name = "Bruce" # 不能包含空格
user-name = "Bruce" # 不能使用连字符连接单词
```
错误示意放在文本代码块中,是为了避免它们被误认为可运行的 Python 代码。
### 8.2 推荐的命名风格
Python 普通变量通常使用蛇形命名法snake_case
```python
user_name = "Bruce"
learning_days = 1
is_course_finished = False
```
蛇形命名法使用小写英文单词,并用下划线连接多个单词。
变量名应该能说明数据的含义。推荐使用 `learning_days`,不推荐使用 `a``x1` 这类难以理解的名称。
代码标识符使用英文,注释和教学文档使用中文。这样既符合常见开发习惯,也便于与第三方库和团队代码协作。
## 九、使用变量进行计算
整数和浮点数可以参与计算:
```python
completed_lessons = 1
new_lessons = 1
total_lessons = completed_lessons + new_lessons
print(total_lessons)
```
输出:
```text
2
```
代码执行过程是:
1. `completed_lessons` 保存整数 `1`
2. `new_lessons` 保存整数 `1`
3. Python 读取两个变量中的整数并相加;
4. 计算结果 `2` 保存到 `total_lessons`
5. `print()` 输出结果。
## 十、变量可以重新赋值
变量保存的数据可以改变:
```python
learning_days = 1
print(learning_days)
learning_days = 2
print(learning_days)
```
输出:
```text
1
2
```
第二次赋值后,再使用 `learning_days` 时得到的是新数据 `2`
Python 变量甚至可以在运行过程中指向不同类型的数据:
```python
value = 10
value = ""
```
这种能力称为动态类型。它很灵活,但随意改变变量的数据类型容易让代码难以理解,所以实际开发中应让同一个变量尽量保持含义和类型稳定。
## 十一、简单的类型转换
有时需要把一种类型的数据转换成另一种类型。
### 11.1 字符串转换为整数
```python
age_text = "18"
age = int(age_text)
print(age)
print(type(age))
```
`int()` 会尝试把合适的内容转换为整数。
### 11.2 字符串转换为浮点数
```python
price_text = "19.9"
price = float(price_text)
```
### 11.3 数字转换为字符串
```python
course_count = 8
course_count_text = str(course_count)
```
### 11.4 转换并不总能成功
下面的转换会报错:
```text
int("十八")
```
因为 Python 不知道应该怎样把中文文字“十八”直接转换成整数。遇到无法转换的数据时,会产生错误。异常处理会在后续课程学习。
## 十二、使用格式化字符串输出变量
如果想把固定文字和变量数据组合起来,可以使用格式化字符串,简称 f-string
```python
user_name = "Bruce"
learning_days = 2
print(f"{user_name} 已经学习 Python {learning_days} 天。")
```
输出:
```text
Bruce 已经学习 Python 2 天。
```
使用方法:
1. 在字符串开始引号前写小写字母 `f`
2. 在字符串中使用花括号 `{}` 包围变量名;
3. Python 会把花括号中的变量替换成变量保存的数据。
f-string 是现代 Python 中非常常用、易读的字符串格式化方式。
## 十三、当前电脑上有两个 Python 解释器
第一课练习结果显示:
```text
PowerShellPython 3.13.5
PyCharmPython 3.11.15
```
这说明电脑上安装了不止一个 Python 解释器。它们就像同一种工具的两个版本。
目前的基础代码可以在两个版本中运行,因此不影响学习。以后安装第三方库时,需要注意“库安装到了哪个解释器”,否则可能出现已经安装但代码仍提示找不到的情况。
现阶段请记住:
- 在 PowerShell 中,本项目默认使用 `python` 命令;
- 在 PyCharm 中,运行按钮会使用项目设置中选择的解释器;
- 看到不同 Python 版本不必紧张,但提问错误时应保留完整的运行命令和解释器路径。
虚拟环境和依赖管理将在 Python 进阶阶段系统学习。
## 十四、运行本课示例
在 PowerShell 中执行:
```powershell
cd D:\Code\Python\01_python基础\1_2_变量与数据类型
python variables_and_types.py
```
运行时请对照代码和输出,重点观察:
- 变量名与字符串的区别;
- 四种数据类型的 `type()` 结果;
- 变量重新赋值前后的变化;
- f-string 如何把变量放入一句话中。
## 十五、常见错误
### 15.1 使用了不存在的变量
```text
NameError: name 'user_name' is not defined
```
常见原因:
- 变量还没有赋值就被使用;
- 变量名拼写错误;
- 大小写不一致。
### 15.2 忘记给字符串加引号
```python
user_name = Bruce
```
Python 会把 `Bruce` 当成变量名,而不是文字。如果这个变量不存在,就会产生 `NameError`
正确写法:
```python
user_name = "Bruce"
```
### 15.3 把赋值方向写反
```text
18 = age
```
变量名应写在赋值符号左边,数据或计算表达式写在右边。
### 15.4 类型不同导致操作失败
```text
"18" + 1
```
`"18"` 是字符串,`1` 是整数。两种不同含义的数据不能直接进行这个加法操作。需要先确认业务目的,再进行合适的类型转换。
## 十六、课堂练习
打开 `practice.py`,按照中文注释完成练习。你将创建一组描述自己学习情况的变量,并输出一段学习档案。
运行命令:
```powershell
python practice.py
```
本课仍然不提前提供答案。完成后告诉我,我会读取并运行你的代码进行验收。
## 十七、思考题
1. `age = 18``age = "18"` 有什么区别?
2. 为什么 `print(user_name)``print("user_name")` 的结果不同?
3. `True``"True"` 是同一种数据类型吗?
4. 为什么推荐使用 `learning_days`,而不是 `a`
5. 如果先执行 `score = 10`,再执行 `score = 20`,最后输出的值是什么?
## 十八、本课小结
- 变量是程序中保存和引用数据的名称;
- `=` 用于把右边的数据赋给左边的变量;
- `str` 表示字符串,`int` 表示整数,`float` 表示浮点数,`bool` 表示布尔值;
- `type()` 可以查看数据类型;
- 变量名与带引号的字符串含义不同;
- 变量名应清晰,并优先使用蛇形命名法;
- 变量可以用于计算,也可以被重新赋值;
- `int()``float()``str()` 可以进行基础类型转换;
- f-string 可以清晰地组合固定文字和变量数据。
## 十九、验收标准
- [ ] 能解释变量和赋值的含义;
- [ ] 能创建字符串、整数、浮点数和布尔值变量;
- [ ] 能使用 `type()` 查看变量类型;
- [ ] 能判断一个变量名是否符合基本规则;
- [ ] 能使用变量完成简单计算;
- [ ] 能使用 f-string 输出包含变量的句子;
- [ ] 能完成并运行 `practice.py`
- [ ] 能回答五道思考题。

View File

@@ -0,0 +1,41 @@
# 第 1-2 课课堂练习:创建个人 Python 学习档案
#
# 完成要求:
# 1. 根据每道题的注释,在指定位置编写代码。
# 2. 变量名使用有意义的英文蛇形命名法。
# 3. 字符串、整数、浮点数和布尔值的数据类型必须正确。
# 4. 不要删除题目注释。
# 5. 完成后运行python practice.py
# 练习一:创建一个字符串变量 user_name保存你的名字或称呼。
# 练习二:创建一个整数变量 learning_days表示你已经学习 Python 的天数。
# 练习三:创建一个浮点数变量 daily_learning_hours表示你计划每天学习的小时数。
# 例如每天学习一个半小时,可以保存为 1.5。
# 练习四:创建一个布尔值变量 is_first_lesson_finished表示你是否完成了第一课。
# 练习五:分别使用 type() 输出以上四个变量的数据类型。
# 运行后应能看到 str、int、float 和 bool。
# 练习六:创建整数变量 completed_lessons保存已经完成的课程数 1。
# 再创建整数变量 current_lessons保存当前正在学习的课程数 1。
# 将两者相加,并把结果保存到变量 total_lessons 中。
# 最后输出 total_lessons。
# 练习七:使用 f-string 输出一段完整的学习档案。
# 句子中至少包含 user_name、learning_days 和 daily_learning_hours 三个变量。
# 预期形式类似Bruce 已学习 Python 2 天,计划每天学习 1.5 小时。
# 练习八:创建字符串变量 lesson_count_text保存字符串 "2"。
# 使用 int() 将它转换为整数,并把结果保存到 lesson_count 变量中。
# 分别输出 lesson_count 的值和数据类型。
# 完成全部练习后,请检查:
# 1. 程序能否从头到尾运行且没有错误;
# 2. 四种基础数据类型是否选择正确;
# 3. 变量名是否能清楚表达数据的含义;
# 4. f-string 中的花括号是否使用了正确的变量名。

View File

@@ -0,0 +1,75 @@
# 第 1-2 课示例:变量与数据类型
#
# 建议先阅读本课 README.md再从上到下阅读和运行本文件。
# 每一段示例只演示一个主要知识点,便于对照终端输出进行理解。
# 一、创建变量并输出变量保存的数据
# 赋值符号右边的字符串 "Bruce" 会交给左边的变量 user_name。
user_name = "Bruce"
print(user_name)
# 二、变量名与字符串不是同一个概念
# 第一行读取变量中的数据,因此输出 Bruce。
# 第二行直接输出引号中的文字,因此输出 user_name。
print(user_name)
print("user_name")
# 三、创建四种基础数据类型
# str字符串用于表示文字。
learning_goal = "开发 LLM Agent"
# int整数用于表示没有小数部分的数字。
completed_lessons = 1
# float浮点数初学阶段可以把它理解为小数。
daily_learning_hours = 1.5
# bool布尔值用于表示真或假、是或否。
is_first_lesson_finished = True
# 四、使用 type() 查看每个变量的数据类型
print(type(learning_goal))
print(type(completed_lessons))
print(type(daily_learning_hours))
print(type(is_first_lesson_finished))
# 五、使用变量进行简单计算
# 两个整数相加后,计算结果会保存到 total_lessons 中。
new_lessons = 1
total_lessons = completed_lessons + new_lessons
print(total_lessons)
# 六、重新给变量赋值
# learning_days 最初保存 1第二次赋值后改为保存 2。
learning_days = 1
print(learning_days)
learning_days = 2
print(learning_days)
# 七、进行基础类型转换
# age_text 是字符串,使用 int() 后得到整数 18。
age_text = "18"
age = int(age_text)
print(age)
print(type(age))
# course_count 是整数,使用 str() 后得到字符串 "8"。
course_count = 8
course_count_text = str(course_count)
print(course_count_text)
print(type(course_count_text))
# 八、使用 f-string 组合固定文字与变量
# 字符串前的 f 表示这是格式化字符串。
# 花括号中的变量会被替换成变量当前保存的数据。
print(f"{user_name} 已经学习 Python {learning_days} 天。")
print(f"当前目标:{learning_goal}")