第 0 步 · 环境准备(三选一,5 分钟)
不用纠结,选 1 就行。三种方式都能完成本教程全部练习:
- 方式 A · 在线运行(最快,零安装):打开 pythonanywhere.com 免费注册,点 Consoles → Bash,输入
python3回车,出现>>>就是进入了 Python。 - 方式 B · 本机安装(推荐长期用):到 python.org/downloads 下载安装。装完打开终端,依次试
python --version与python3 --version;不同操作系统的命令名可能不同,看到 3.x 版本号即成功。 - 方式 C · 已有开发环境:如果你的服务器、云电脑或课程环境已安装 Python,可先在终端输入
python3或python验证。不要把尚未测试、含密钥或会改写数据的脚本直接部署到生产环境。
验证是否成功:输入
print("hello") 回车,看到 hello 输出即成功。安全起点:在线 IDE、聊天窗口和公开仓库都不应粘贴 API 密钥、密码、身份证明或真实客户数据。练习先使用虚构数据;密钥只放入本地环境变量或专门的密钥管理工具。
第 1 步 · 第一个程序
新建文件 hello.py,敲入:
print("你好,Python")
运行后输出:
你好,Python
逐词拆解(这一行就是一个完整程序)
print是一个函数——Python 预置的"打印机",把括号里的东西显示到屏幕上。"你好,Python"是一个字符串(文本),用引号包住。引号是边界,不是内容。- 整行 = 语句。Python 按行执行,从上到下。
动手:把下面两行放进文件运行
print("3 + 5 =", 3 + 5)
print("程序跑完了")
3 + 5 = 8
程序跑完了
注意:
3 + 5 没有引号——它是计算;有引号是文本。"3+5" 会原样打印,不计算。第 2 步 · 变量与类型
变量 = 给数据起个名字,以后用名字访问它。Python 里不需要声明类型,但每个值都有类型。
name = "Riemann" # 字符串 str:文本
age = 30 # 整数 int
height = 1.75 # 浮点数 float:小数
is_studying = True # 布尔 bool:只有 True/False
print(name, age, height, is_studying)
必做小实验:查看类型
print(type(age)) # → <class 'int'>
print(type(name)) # → <class 'str'>
print(type("30")) # → <class 'str'>(带引号就是文本!)
核心心智模型:「变量是标签,不是盒子」。把
a = 1 改成 a = 2,不是"把 1 改成 2",而是"把标签 a 从 1 上撕下来贴到 2 上"。学列表时这个理解能救命。命名规则
- 只能含字母、数字、下划线,不能以数字开头:
age_1✅1age❌ - 不能用保留字(
if/for/while/def/class…)当变量名 - 惯例:小写 + 下划线(
my_age,snake_case)
第 3 步 · 运算
算术运算符
a, b = 17, 5
print(a + b) # 22 加
print(a - b) # 12 减
print(a * b) # 85 乘
print(a / b) # 3.4 除(永远是浮点数)
print(a // b) # 3 整除(商,丢掉小数)
print(a % b) # 2 取余(除不尽的零头)
print(a ** 2) # 289 幂
// 和 % 是一对:17 = 5 × 3 + 2。判断奇偶、取末位、分钟转小时全用它们。比较运算符(结果永远是 True/False)
print(17 > 5) # True
print(17 == 5) # False(== 是"相等",= 是"赋值",别混!)
print(17 != 5) # True
逻辑运算符
score = 85
print(score > 60 and score < 90) # True 两个都成立
print(score < 60 or score > 80) # True 至少一个成立
print(not score == 100) # True 取反
字符串拼接 vs 数字相加:
"3" + "5" 结果是 "35"(拼接),不是 8。类型不匹配时 Python 报错。第 4 步 · 控制流
4.1 分支:if / elif / else
score = int(input("输入成绩:")) # input 拿到的是文本,int() 转成数字
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")
缩进就是语法!Python 用"缩进 4 个空格"表示代码块。
if 行末尾有冒号 :,忘了缩进或冒号会报 IndentationError / SyntaxError——新手报错第一名。4.2 条件循环:while
count = 1
while count <= 5:
print("第", count, "次")
count = count + 1 # 忘记这行 → 死循环!
读
while 的方式:「只要条件为真,就一直执行缩进块,每执行一次就回来重新检查条件」。循环体里必须有语句让条件最终变假(Ctrl+C 可中断)。4.3 计数循环:for + range
for i in range(5): # range(5) = 0,1,2,3,4
print(i, i * i) # 0~4 和它们的平方
for i in range(1, 10, 2): # 从 1 到 9(不含 10),步长 2
print(i) # 1 3 5 7 9
range(开始, 结束, 步长):含头不含尾。range(5) 默认从 0 开始。九九乘法表、累加器都是 for 的经典练习。4.4 手把手:用 for 写累加器(1 加到 100)
total = 0
for n in range(1, 101):
total = total + n
print(total) # 5050
拆解:total = 0 是"蓄水池";每轮把 n 加进去(读作"把 total 的新值设为旧值加 n");循环 100 次后打印。这个"累积"模式后面处处用。
第 5 步 · 输入与格式化输出
name = input("你叫什么名字?") # input 返回的一定是字符串
age = input("几岁?")
age = int(age) # 字符串 → 整数,才能做算术
print(f"你好,{name}!明年你就 {age + 1} 岁了。") # f-string:大括号里放变量/表达式
你叫什么名字?Riemann
几岁?30
你好,Riemann!明年你就 31 岁了。
f"..."是 f-string:大括号{}里的内容被替换成值。最推荐的输出方式。int()/float()/str()是类型转换。input 永远是文本,要算数先转数字。
常见报错:
TypeError: can only concatenate str (not "int") to str —— 想拼接数字和文本但忘了转类型。修法:str(age) 或直接上 f-string。第 6 步 · 实战项目 ①:温度转换器
需求:用户输入摄氏度,输出华氏度(华氏 = 摄氏 × 9/5 + 32)。支持反复转换,输入 q 退出。
Step 1:先写核心一行(跑通再包壳)
c = float(input("摄氏温度:"))
f = c * 9 / 5 + 32
print(f"{c}°C = {f}°F")
Step 2:加循环(允许反复输入)
while True: # 无限循环,靠 break 退出
raw = input("摄氏温度(q 退出):")
if raw == "q":
break # 跳出循环
c = float(raw)
f = c * 9 / 5 + 32
print(f"{c}°C = {f}°F")
Step 3:加防呆(用户输非数字不崩溃)
while True:
raw = input("摄氏温度(q 退出):")
if raw == "q":
break
try:
c = float(raw)
except ValueError: # 转不了数字就提醒,而不是崩溃
print("请输入数字,或 q 退出")
continue # 回到循环开头
print(f"{c}°C = {c * 9 / 5 + 32}°F")
这就是"健壮性"的入门:程序不因用户乱输入而崩溃。将来给服务器写脚本,面对的一定是"不听话的输入"。
第 7 步 · 实战项目 ②:猜数字游戏
需求:程序随机 1-100 一个数,用户猜,提示"大了/小了",猜中显示次数。
Step 1:随机数 + 首次输入
import random # 导入标准库(下个节点会系统学)
secret = random.randint(1, 100)
guess = int(input("猜 1-100:"))
Step 2:加判断与循环(核心逻辑)
secret = random.randint(1, 100)
tries = 0
while True:
guess = int(input("猜 1-100:"))
tries = tries + 1
if guess > secret:
print("大了")
elif guess < secret:
print("小了")
else:
print(f"猜中了!用了 {tries} 次")
break
Step 3:复盘这段代码用了哪些知识点
import random→ 节点 ③「模块」的预告while True + break→ 第 4 步的循环if/elif/else→ 第 4 步的分支tries = tries + 1→ 累加器模式f"..."→ 第 5 步的格式化
如果你能不看答案写出这个游戏(含防呆),节点 ① 的核心目标就达成了。扩展题(选做):限制 7 次猜完,猜不完判输。
第 8 步 · 报错手册
1. SyntaxError: invalid syntax ——
if x > 5 忘了冒号、括号不配对、引号没闭合。修法:看报错指向的行,缺 :、缺 )、引号没成对。2. IndentationError —— if 下的行没缩进,或缩进忽多忽少。修法:统一 4 个空格,别混用 Tab 和空格。
3. NameError: name 'x' is not defined —— 用了没赋值的变量或拼错名(
Age vs age)。修法:检查拼写大小写,先赋值后使用。4. TypeError ——
"3" + 5、len(123)。修法:先 type(变量) 看类型再决定转不转。黄金三问(遇错先问):① 报错指向哪一行?② 那一行我写了什么?③ 它期望什么?——80% 的错自己就能解。
节点自测清单
- 能说出
int / float / str / bool四种类型,并各举一例 - 徒手写出:判断一个数奇偶的程序(提示:
% 2) - 徒手写出:
for循环算 1+2+…+100 - 徒手写出:猜数字游戏(含防呆,不限次数)
- 能向别人讲清
if/elif/else和while/for各自什么时候用 - 遇到
TypeError / NameError / IndentationError能不查资料修复 - 用 f-string 输出一个对齐的小表格(名字 + 分数)
全勾 → 节点 ① 完成,进入节点 ②(数据结构与字符串)。未勾 → 回看对应步骤,别急着往前走。