教程建议 35 分钟学习等级 1/8

PYTHON LESSON 003

数字与文字的类型密码

分清 int、float、str 三种常用类型,熟练使用算术运算。

00 · 学习目标

这一课要解决什么?

先想一想2.5 和 2 在计算机眼里有什么不一样?
完成任务文具店收银小助手
学习顺序定义 → 语法 → 最小实例 → 独立练习

学完后,你应该能够

  • int 整数与 float 小数
  • + - * / 算术运算
  • type() 查看数据类型

01 · 核心概念

数据类型与算术运算

数据类型规定一类值的表示方式和可执行操作。表达式由值、变量和运算符组成,求值后产生结果;int、float、str、bool 的可用运算并不相同。

本课术语数据类型表达式求值算术运算符布尔值
考级对应GESP Python 1 级 · 基本数据类型GESP Python 1 级 · 基本运算
学习边界

一级只要求数字、字符串和布尔类型的基础使用;容器类型留到后续等级系统学习。

02 · 语法与规则

先记住这 3 条,再开始写程序

01int 整数与 float 小数

先准确读出这条写法的结构与作用。

02+ - * / 算术运算

换一组最小数据,手工推演一次结果。

03type() 查看数据类型

再用边界值或反例确认它的适用条件。

03 · 完整实例

代码、运行结果和解释放在一起看

numbers-and-types.pyPYTHON 3.12
# 文具店收银小助手
pencil = 2.5      # 一支铅笔 2.5 元(float 小数)
notebook = 6      # 一本笔记本 6 元(int 整数)

pencil_count = 3
notebook_count = 2

total = pencil * pencil_count + notebook * notebook_count

print("铅笔:", pencil_count, "支,共", pencil * pencil_count, "元")
print("笔记本:", notebook_count, "本,共", notebook * notebook_count, "元")
print("合计:", total, "元")
print("付 20 元,应找回:", 20 - total, "元")
运行结果OUTPUT
铅笔: 3 支,共 7.5 元
笔记本: 2 本,共 12 元
合计: 19.5 元
付 20 元,应找回: 0.5 元

整数与小数混合运算时,结果自动变成小数(float)。

在新标签运行和修改这个实例已装入本课代码 · 可自定义输入 · 可提交判题

04 · 逐步理解

每一步只解决一个问题

  1. 01

    数字两兄弟 int 和 float

    int 是没有小数点的整数,float 是带小数点的数。价格、身高、体重常用 float;个数、次数、年龄常用 int。str 是文字,即使长得像数字也不能直接计算。

    PYTHON
    price = 2.5
    count = 3
  2. 02

    算术运算四件套

    + 加、- 减、* 乘、/ 除。注意乘号用星号、除号用斜杠。/ 的结果总是小数,哪怕正好除尽:10 / 2 得到 5.0。

    PYTHON
    print(7 + 3, 7 - 3, 7 * 3, 7 / 3)
  3. 03

    给商品贴价格标签

    用变量给每种商品定价:铅笔 2.5 元是 float,笔记本 6 元是 int。变量名用英文单词,看到 pencil 就知道是铅笔,比 a、b、c 清楚得多。

    PYTHON
    pencil = 2.5
    notebook = 6
  4. 04

    算出每样商品小计

    单价乘数量就是小计。pencil * 3 是 7.5(小数乘整数得小数),notebook * 2 是 12。先心算一遍,再和程序对答案。

    PYTHON
    print(pencil * pencil_count)
  5. 05

    合计与找零

    两个小计相加得合计 19.5,20 元减合计得找零 0.5。算式里可以混合使用变量和数字,运算顺序和数学课一样:先乘除后加减。

    PYTHON
    total = pencil * pencil_count + notebook * notebook_count
  6. 06

    用 type() 当侦探

    想知道一个变量是什么类型?type() 会告诉你答案。分别查看 pencil、notebook、total,想一想:为什么合计变成了 float?

    PYTHON
    print(type(pencil))
    print(type(notebook))

05 · 练习与检验

自己写出来,才算真正学会

本课实作步骤
  1. 1运行收银程序并核对账单
  2. 2修改商品单价和数量
  3. 3用 type() 查看每个变量的类型
  4. 4再加一种商品重新结账
打开本课编程实验室编辑、运行、测试、判题都在一个页面完成

06 · 完整知识

继续理解定义、规则和适用边界

第一次学习先完成上面的六个步骤;需要查定义、核对规则、分析误区或理解“为什么”时,再展开对应知识章。

Python 基础程序执行、输入输出、变量与数据类型从一条语句怎样执行开始,系统掌握 print、input、变量、对象、类型与显式转换。

正式定义

Python 程序由语句和表达式组成,通常按从上到下的顺序执行。变量名通过赋值绑定到对象;对象有类型和值。input() 始终返回 str,是否转换成 int 或 float 必须由题意决定。

必须掌握

  • print(*objects, sep=' ', end='\n') 可以控制对象之间的分隔符和末尾字符。
  • input(prompt) 读取一行并去掉行末换行符,返回值一定是字符串。
  • 赋值符号 = 建立或更新名字与对象的绑定;== 才是相等比较。
  • 核心标量类型包括 int、float、bool、str 和 NoneType;bool 是 int 的子类,但语义上应当用于真假判断。
  • int、float、str、bool 可做显式类型转换;转换可能失败,不能把任意文本直接当数字。
  • 注释以 # 开始;规范的变量名应表达含义,不能使用关键字。

常见误区

  • 把 input() 的结果直接与整数相加
  • 混淆 = 与 ==
  • 用 float 表示必须精确的十进制金额却不考虑误差
  • 变量名覆盖 print、list 等内置名称

适用边界

  • 课程先讲同步的文本输入输出;文件、网络、图形界面和异步输入分别在对应章节说明。
  • Python 的变量没有固定类型,但对象有类型;这不等于程序可以随意混用类型。
打开本章完整示例与独立阅读页 →
Python 基础运算符、表达式与优先级完整区分算术、比较、逻辑、成员、身份和位运算,并用优先级表消除歧义。

正式定义

表达式求值得到一个值。运算符规定如何组合操作数;当一个表达式含多个运算符时,优先级和结合方向决定求值顺序,括号可以明确改变顺序。

必须掌握

  • / 总是得到浮点结果;// 是向负无穷方向取整的整除;% 与 // 满足 a == (a // b) * b + a % b。
  • 比较可以链式书写,如 0 <= x < 10;and/or 会短路并返回最后求值的操作数,不一定返回 bool。
  • == 比较值是否相等,is 比较是否为同一个对象;判断 None 应写 is None。
  • in/not in 做成员测试;对 dict 测试的是键。
  • 位运算作用于整数的二进制位;负整数按无限长二进制补码语义理解。
  • 复杂表达式即使能靠优先级正确运行,也应使用括号表达意图。

常见误区

  • 把 // 当成简单截断
  • 用 is 比较数字或字符串的值
  • 忘记 and 的优先级高于 or
  • 连续位移、比较和逻辑运算却不加括号

适用边界

  • 浮点数比较受二进制表示误差影响,需要按问题选择容差。
  • 运算符可由自定义类重载,因此相同符号对不同类型可能有不同语义。
打开本章完整示例与独立阅读页 →
程序组织类、对象、属性与方法理解对象模型和封装边界,用类表达有状态的实体,而不是把所有程序都强行改成类。

正式定义

类描述一类对象的数据与行为;实例是类创建的具体对象。实例方法的第一个参数通常命名为 self,用来访问当前实例;__init__ 在实例创建后负责初始化状态。

必须掌握

  • 实例属性通常在 __init__ 中通过 self.name = value 建立。
  • 实例方法通过 object.method() 调用;Python 会自动把实例绑定给 self。
  • 类属性由实例共享,实例属性属于单个对象;同名实例属性会遮蔽类属性。
  • __repr__ 面向开发与调试,__str__ 面向用户显示;特殊方法应遵守其协议。
  • 继承表达“是一种”关系,组合表达“拥有一个”关系;能用组合清晰表达时不要滥用继承。
  • 对象相等默认仍是身份比较;需要按内容相等时要定义相应协议。

常见误区

  • 在方法中漏写 self
  • 把每个实例独有的可变数据写成类属性
  • 只为包装几个无状态函数而建类
  • 继承层次过深导致行为难以追踪

适用边界

  • 课程使用普通类解释对象模型;dataclass、property、抽象基类和元类是后续工程工具。
  • 算法题常用函数和基本容器更直接,不要求为了“面向对象”而增加结构。
打开本章完整示例与独立阅读页 →
完整速查Python 关键字、内置名称与语法速查集中查阅 Python 3.12 的 35 个硬关键字、4 个软关键字和课程常用内置函数,避免知识碎片化。

正式定义

关键字是 Python 语法保留的词,不能作为普通标识符;软关键字只在特定语法位置有特殊含义。内置名称由 builtins 模块提供,可以直接使用,但仍可能被同名变量遮蔽。

必须掌握

  • Python 3.12 有 35 个硬关键字;False、None、True 首字母大写。
  • match、case、_、type 是软关键字,只在对应模式匹配或类型参数语法环境中特殊。
  • 内置函数无需 import,但不要把变量命名为 list、str、sum、max、input 等。
  • help(name) 查看运行时帮助,dir(object) 查看可用名称,type(object) 查看类型。
  • 内置异常类也是内置名称;捕获异常时应使用具体异常类型。
  • 本站课程运行基线是 Python 3.12,跨版本新增语法必须先核对目标运行环境。

常见误区

  • 把内置名称误称为关键字
  • 用 list = [] 遮蔽 list()
  • 照搬其他 Python 版本的关键字表
  • 见到陌生函数名就假定无需导入

适用边界

  • 本页完整列出语言关键字,并列出课程实际依赖的内置函数;Python 的全部内置异常类和对象协议应按具体错误与主题查阅。
  • 第三方库 API 不属于 Python 语言本身,也不属于内置名称。
打开本章完整示例与独立阅读页 →

完成检查

确认自己会解释、会编写、会验证