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

PYTHON LESSON 002

会变魔术的变量

学会用变量存数据,用 input() 和 int() 做出会互动的小程序。

00 · 学习目标

这一课要解决什么?

先想一想计算机怎么记住你的名字,还能算出你出生在哪一年?
完成任务出生年份计算器
学习顺序定义 → 语法 → 最小实例 → 独立练习

学完后,你应该能够

  • 变量名 = 值 创建变量
  • input("提示") 读入一句话
  • int() 把文字变成整数

01 · 核心概念

变量、input 与类型转换

变量是程序中引用对象的名称,赋值语句把右侧表达式的结果绑定到左侧变量名。input() 的返回值始终是 str;需要数值运算时必须进行明确的类型转换。

本课术语标识符变量赋值字符串类型转换
考级对应GESP Python 1 级 · 变量GESP Python 1 级 · 基本数据类型
学习边界

变量的正式含义是“名称与对象的绑定”;“盒子”只是入门类比,不能代替准确概念。

02 · 语法与规则

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

01变量名 = 值 创建变量

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

02input("提示") 读入一句话

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

03int() 把文字变成整数

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

03 · 完整实例

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

magic-variables.pyPYTHON 3.12
# 出生年份计算器
name = input("你叫什么名字?")
age = int(input("你今年几岁?"))

year = 2025
born = year - age

print("———— 计算结果 ————")
print(name + ",你好!")
print("你大约出生在", born, "年")
print("到 2035 年,你就", age + 10, "岁啦!")
运行结果OUTPUT
你叫什么名字?小明
你今年几岁?10
———— 计算结果 ————
小明,你好!
你大约出生在 2015 年
到 2035 年,你就 20 岁啦!

假设输入:小明、10(input 读到的内容会显示在提示语后面)。

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

04 · 逐步理解

每一步只解决一个问题

  1. 01

    变量是会贴标签的盒子

    变量就像一个贴了名字的盒子,等号把右边的值装进左边的名字里。之后只要喊这个名字,计算机就知道你指的是盒子里的东西。名字用字母或下划线开头,见名知意最好。

    PYTHON
    year = 2025
  2. 02

    让程序开口提问

    input() 会让程序停下来,等用户敲一句话再按回车。括号里是提示语,读到的内容可以装进变量。注意:input 读到的一定是“文字”,哪怕你敲的是数字。

    PYTHON
    name = input("你叫什么名字?")
  3. 03

    把文字变成数字

    文字 "10" 和数字 10 在计算机眼里完全不同:文字不能算减法。int() 像一台转换机,把数字模样的文字变成真正的整数,才能参与计算。

    PYTHON
    age = int(input("你今年几岁?"))
  4. 04

    做一道减法

    有了年份和年龄两个数字变量,一道减法就能算出出生年份,结果继续装进新变量 born。变量可以在算式里直接使用,计算机自动取出盒子里的值。

    PYTHON
    born = year - age
  5. 05

    把结果讲出来

    print 可以混合输出文字和变量,用逗号隔开。字符串还能用 + 拼接:name + ",你好!" 把名字和问候连成一句话。

    PYTHON
    print("你大约出生在", born, "年")
  6. 06

    换个人再算一次

    重新运行,输入同桌的名字和年龄,结果立刻不同。这就是变量的魔力:程序不变,数据在变。试着去掉 int() 运行一次,观察报错信息,读懂它你就赢了。

05 · 练习与检验

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

本课实作步骤
  1. 1运行程序,输入自己的名字和年龄
  2. 2把 year 改成今年再算一次
  3. 3试试去掉 int() 会发生什么
  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 的变量没有固定类型,但对象有类型;这不等于程序可以随意混用类型。
打开本章完整示例与独立阅读页 →
编码与文本字符串、转义、切片与格式化从不可变字符序列到检索、拆分、拼接、格式化和常用判断方法。

正式定义

str 是不可变的 Unicode 字符序列。下标访问单个字符,切片生成新字符串;任何看似“修改字符串”的方法都会返回新对象。

必须掌握

  • 下标从 0 开始,负下标从末尾开始;切片 s[start:stop:step] 不包含 stop,step 不能为 0。
  • 转义序列用于在字面量中表示换行、制表、引号、反斜杠或码点;原始字符串仍有末尾反斜杠限制。
  • find 找不到返回 -1,index 找不到抛 ValueError;count 统计不重叠出现次数。
  • split 把字符串拆成列表,join 用一个字符串连接可迭代对象中的字符串,strip 只删除两端字符。
  • f-string 的格式说明可控制宽度、对齐、精度、进制和百分比;格式化不改变原值。
  • isalpha/isdigit 等按 Unicode 定义,不只识别英文字母和 ASCII 数字。

常见误区

  • 尝试 s[0] = 'A' 原地修改字符串
  • 把 strip('ab') 误解为删除完整子串 'ab'
  • find 返回 -1 后直接拿去当有效下标
  • 把字节长度与字符长度混为一谈

适用边界

  • 正则表达式不在低等级字符串必修范围,但复杂模式匹配时应使用 re,而不是堆叠大量 split/find。
  • 面向用户的字符计数还可能涉及组合字符和字素簇,len 统计的是 Unicode 码点序列长度。
打开本章完整示例与独立阅读页 →
工程能力异常、文件、测试与调试读懂报错、缩小问题、设计测试,并安全地打开、读取和关闭文本文件。

正式定义

异常是在运行期间表示错误或特殊情况的对象。调试是用可复现输入和证据定位实际行为与预期行为差异的过程;文件对象连接程序与持久化字节数据。

必须掌握

  • 先读 traceback 最后一行的异常类型与消息,再从最靠近自己代码的栈帧向上追踪。
  • try 只包可能失败的最小代码;except 捕获具体异常;else 处理成功路径;finally 做必需清理。
  • raise 主动报告不满足的前置条件;assert 用于开发期内部假设,不用于校验不可信用户输入。
  • with open(...) as file 会在退出代码块时可靠关闭文件。文本模式必须明确编码,本站统一推荐 encoding='utf-8'。
  • 测试至少包含正常值、边界值、空数据、极端值和反例;每个测试只应有明确目的。
  • 定位错误时一次只改一个假设,保留能稳定复现问题的最小输入。

常见误区

  • 使用 except: 吞掉所有错误
  • 只测题目样例就认为程序正确
  • 文本文件不写 encoding
  • 修复报错表象却不验证根因

适用边界

  • 在线判题的学生代码由独立 Worker 执行;文件系统、网络和资源权限必须受平台限制。
  • 二进制文件、JSON/CSV 和数据库各有专门格式与错误处理方式,不能按普通文本随意拆分。
打开本章完整示例与独立阅读页 →
程序组织类、对象、属性与方法理解对象模型和封装边界,用类表达有状态的实体,而不是把所有程序都强行改成类。

正式定义

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

必须掌握

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

常见误区

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

适用边界

  • 课程使用普通类解释对象模型;dataclass、property、抽象基类和元类是后续工程工具。
  • 算法题常用函数和基本容器更直接,不要求为了“面向对象”而增加结构。
打开本章完整示例与独立阅读页 →

完成检查

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