Files
PythonLearn/01_python基础/1_2_变量与数据类型/README.md
2026-07-22 16:42:56 +08:00

473 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第 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`
- [ ] 能回答五道思考题。