Files

第 1-2 课:变量与数据类型

一、本课目标

完成本课后,你应该能够:

  1. 解释变量是什么,以及为什么程序需要变量;
  2. 使用赋值符号 = 创建变量;
  3. 区分字符串、整数、浮点数和布尔值;
  4. 使用 type() 查看数据类型;
  5. 遵守 Python 变量命名的基本规则;
  6. 使用变量进行简单计算和文字输出;
  7. 使用 int()float()str() 完成简单类型转换;
  8. 看懂变量重新赋值后发生的变化。

二、前置知识

开始本课前,你应该已经能够:

  • 使用 python 文件名.py 运行 Python 程序;
  • 使用 print() 输出文字;
  • 知道引号包围的内容是字符串;
  • 知道 # 开头的内容是注释。

三、变量是什么

变量Variable是程序中用于保存数据的名称。

可以把变量想象成一个贴有标签的盒子:

标签user_name
盒子中的数据:"Bruce"

在 Python 中可以这样写:

user_name = "Bruce"

这行代码表示:把字符串 "Bruce" 保存起来,并使用名称 user_name 指向它。

之后只要使用变量名,就能取得对应的数据:

print(user_name)

变量的价值在于:数据可以被保存、重复使用和修改,不必在每个地方重复写相同内容。

四、认识赋值符号

下面代码中的 = 称为赋值符号:

age = 18

赋值操作按照“先看右边,再交给左边”的方式理解:

  1. Python 先得到右边的整数 18
  2. 再让左边的变量名 age 指向这个数据。

这里的 = 暂时不要理解成数学中的“左右相等”。Python 中判断两个值是否相等会使用 ==,将在条件判断课程中学习。

五、四种基础数据类型

数据类型用于描述一个数据属于哪一类,以及它通常可以参与哪些操作。

5.1 字符串 str

字符串String类型名为 str)用于表示文字:

user_name = "Bruce"
learning_goal = "开发 LLM Agent"

字符串必须使用成对的单引号或双引号包围。

即使内容看起来像数字,只要有引号,它仍然是字符串:

phone_number = "13800000000"

电话号码通常不用于数学计算,因此使用字符串保存更合适。

5.2 整数 int

整数Integer类型名为 int)是不带小数部分的数字:

age = 18
course_count = 8
temperature = -2

整数不需要引号,可以参加加、减、乘、除等数学运算。

5.3 浮点数 float

浮点数Floating-point Number类型名为 float)通常用于表示带小数部分的数字:

height = 1.75
price = 19.9
progress = 0.25

“浮点数”是计算机领域的常用名称,初学阶段可以先把它理解为小数。

5.4 布尔值 bool

布尔值Boolean类型名为 bool)只有两个值:

is_learning = True
is_finished = False
  • True 表示真、是、成立;
  • False 表示假、否、不成立。

首字母必须大写,并且不能添加引号。"True" 是字符串,不是布尔值。

布尔值经常用于记录某个状态,例如:

  • 用户是否登录;
  • 任务是否完成;
  • 数据是否有效;
  • 接口调用是否成功。

六、使用 type() 查看数据类型

type() 可以告诉我们一个数据的类型:

user_name = "Bruce"
age = 18

print(type(user_name))
print(type(age))

输出结果:

<class 'str'>
<class 'int'>

目前只需要关注最后的 strintclass 与类的概念会在面向对象阶段详细学习。

type() 主要用于学习和排查问题。实际开发中,不需要为每一个变量都输出类型。

七、变量与字符串的区别

请比较:

user_name = "Bruce"

print(user_name)
print("user_name")

输出为:

Bruce
user_name

原因是:

  • user_name 没有引号Python 会把它当作变量名,并读取变量保存的数据;
  • "user_name" 有引号Python 会把它当作普通文字直接输出。

这是初学阶段非常重要的区别。

八、变量命名规则

8.1 必须遵守的规则

Python 变量名:

  1. 可以包含英文字母、数字和下划线;
  2. 不能以数字开头;
  3. 不能包含空格、连字符等符号;
  4. 区分英文字母大小写;
  5. 不能使用 Python 关键字。

正确示例:

user_name = "Bruce"
age2 = 18
course_count = 8

错误示意:

2age = 18            # 不能以数字开头
user name = "Bruce" # 不能包含空格
user-name = "Bruce" # 不能使用连字符连接单词

错误示意放在文本代码块中,是为了避免它们被误认为可运行的 Python 代码。

8.2 推荐的命名风格

Python 普通变量通常使用蛇形命名法snake_case

user_name = "Bruce"
learning_days = 1
is_course_finished = False

蛇形命名法使用小写英文单词,并用下划线连接多个单词。

变量名应该能说明数据的含义。推荐使用 learning_days,不推荐使用 ax1 这类难以理解的名称。

代码标识符使用英文,注释和教学文档使用中文。这样既符合常见开发习惯,也便于与第三方库和团队代码协作。

九、使用变量进行计算

整数和浮点数可以参与计算:

completed_lessons = 1
new_lessons = 1
total_lessons = completed_lessons + new_lessons

print(total_lessons)

输出:

2

代码执行过程是:

  1. completed_lessons 保存整数 1
  2. new_lessons 保存整数 1
  3. Python 读取两个变量中的整数并相加;
  4. 计算结果 2 保存到 total_lessons
  5. print() 输出结果。

十、变量可以重新赋值

变量保存的数据可以改变:

learning_days = 1
print(learning_days)

learning_days = 2
print(learning_days)

输出:

1
2

第二次赋值后,再使用 learning_days 时得到的是新数据 2

Python 变量甚至可以在运行过程中指向不同类型的数据:

value = 10
value = "十"

这种能力称为动态类型。它很灵活,但随意改变变量的数据类型容易让代码难以理解,所以实际开发中应让同一个变量尽量保持含义和类型稳定。

十一、简单的类型转换

有时需要把一种类型的数据转换成另一种类型。

11.1 字符串转换为整数

age_text = "18"
age = int(age_text)

print(age)
print(type(age))

int() 会尝试把合适的内容转换为整数。

11.2 字符串转换为浮点数

price_text = "19.9"
price = float(price_text)

11.3 数字转换为字符串

course_count = 8
course_count_text = str(course_count)

11.4 转换并不总能成功

下面的转换会报错:

int("十八")

因为 Python 不知道应该怎样把中文文字“十八”直接转换成整数。遇到无法转换的数据时,会产生错误。异常处理会在后续课程学习。

十二、使用格式化字符串输出变量

如果想把固定文字和变量数据组合起来,可以使用格式化字符串,简称 f-string

user_name = "Bruce"
learning_days = 2

print(f"{user_name} 已经学习 Python {learning_days} 天。")

输出:

Bruce 已经学习 Python 2 天。

使用方法:

  1. 在字符串开始引号前写小写字母 f
  2. 在字符串中使用花括号 {} 包围变量名;
  3. Python 会把花括号中的变量替换成变量保存的数据。

f-string 是现代 Python 中非常常用、易读的字符串格式化方式。

十三、当前电脑上有两个 Python 解释器

第一课练习结果显示:

PowerShellPython 3.13.5
PyCharmPython 3.11.15

这说明电脑上安装了不止一个 Python 解释器。它们就像同一种工具的两个版本。

目前的基础代码可以在两个版本中运行,因此不影响学习。以后安装第三方库时,需要注意“库安装到了哪个解释器”,否则可能出现已经安装但代码仍提示找不到的情况。

现阶段请记住:

  • 在 PowerShell 中,本项目默认使用 python 命令;
  • 在 PyCharm 中,运行按钮会使用项目设置中选择的解释器;
  • 看到不同 Python 版本不必紧张,但提问错误时应保留完整的运行命令和解释器路径。

虚拟环境和依赖管理将在 Python 进阶阶段系统学习。

十四、运行本课示例

在 PowerShell 中执行:

cd D:\Code\Python\01_python基础\1_2_变量与数据类型
python variables_and_types.py

运行时请对照代码和输出,重点观察:

  • 变量名与字符串的区别;
  • 四种数据类型的 type() 结果;
  • 变量重新赋值前后的变化;
  • f-string 如何把变量放入一句话中。

十五、常见错误

15.1 使用了不存在的变量

NameError: name 'user_name' is not defined

常见原因:

  • 变量还没有赋值就被使用;
  • 变量名拼写错误;
  • 大小写不一致。

15.2 忘记给字符串加引号

user_name = Bruce

Python 会把 Bruce 当成变量名,而不是文字。如果这个变量不存在,就会产生 NameError

正确写法:

user_name = "Bruce"

15.3 把赋值方向写反

18 = age

变量名应写在赋值符号左边,数据或计算表达式写在右边。

15.4 类型不同导致操作失败

"18" + 1

"18" 是字符串,1 是整数。两种不同含义的数据不能直接进行这个加法操作。需要先确认业务目的,再进行合适的类型转换。

十六、课堂练习

打开 practice.py,按照中文注释完成练习。你将创建一组描述自己学习情况的变量,并输出一段学习档案。

运行命令:

python practice.py

本课仍然不提前提供答案。完成后告诉我,我会读取并运行你的代码进行验收。

十七、思考题

  1. age = 18age = "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
  • 能回答五道思考题。