上一篇我们学会了 “变量与数据类型”—— 相当于掌握了编程的 “零件”;这一篇要学的 “if 条件判断” 和 “循环”,就是把零件组装成 “能做事的逻辑”:比如 “如果年龄够 18,就允许进入”(if 判断)、“重复打印 10 次‘你好’”(循环)。今天用生活案例讲透这两个核心语法,新手也能轻松上手。

一、if 条件判断:像 “做选择” 一样写代码

生活中我们每天都在做选择:“如果下雨,就带伞;否则,不带伞”“如果考试满分,就奖励;如果及格,就鼓励;否则,要补习”——if 条件判断就是用代码实现这种 “根据不同情况做不同事” 的逻辑。

1. 最基础的 if:满足条件才做事

语法格式(注意缩进!):

if 条件表达式:  # 条件成立(结果为True)时,执行下面缩进的代码

    代码块  # 必须缩进(推荐4个空格),否则Python不认这是if的内容

👉 关键:Python 靠 “缩进” 区分代码块,缩进不一致会报错!

生活案例:判断是否成年

比如输入年龄,判断是否满 18 岁(成年):

age = 19  # 定义年龄变量

if age >= 18:  # 条件:年龄大于等于18

    print("你已成年,可独立办理业务")  # 条件成立时执行

    print("请出示身份证")  # 同一缩进,也会执行

# 没有缩进的代码,不管if条件是否成立,都会执行

print("业务办理结束")

运行结果:

你已成年,可独立办理业务

请出示身份证

业务办理结束

如果把age改成 17,if 条件不成立,缩进内的代码会跳过,只输出 “业务办理结束”。

2. if-else:二选一,满足条件做 A,不满足做 B

生活中 “二选一” 的场景:“如果带了钥匙,就开门;否则,打电话找家人”—— 用if-else实现,else不用写条件,对应 “所有不满足 if 条件” 的情况。

语法格式:

if 条件表达式:

    条件成立时执行的代码块(A

else:  # 注意else后面有冒号,且和if对齐

    条件不成立时执行的代码块(B

生活案例:判断考试是否及格

满分 100,60 分及格,根据分数输出结果:

score = 58  # 考试分数

if score >= 60:

    print(f"分数:{score},及格啦!")  # f-string:把变量插入字符串(上一篇提过)

else:

    print(f"分数:{score},不及格,需要补考哦~")

运行结果:

分数:58,不及格,需要补考哦~

👉 小技巧:f-string(格式字符串)在打印时超好用,写法是f"内容{变量}",能直接把变量值嵌入文字。

3. if-elif-else:多选一,多个条件依次判断

生活中 “多选一” 的场景:“成绩 90 + 是优秀,80-89 是良好,60-79 是及格,低于 60 是不及格”—— 用elif(else if 的缩写)实现,可加多个elif,最后用else兜底(可选)。

语法格式:

if 条件1:

    执行代码1

elif 条件2:  # 只有条件1不成立时,才判断条件2

    执行代码2

elif 条件3:  # 只有条件12都不成立时,才判断条件3

    执行代码3

else:  # 所有条件都不成立时执行(可选,可省略)

    执行代码4

生活案例:成绩评级

根据分数给评级,覆盖所有分数段:

score = 85

if score >= 90:

    grade = "优秀"

elif score >= 80:  # 隐含条件:score < 90(因为上面条件不成立)

    grade = "良好"

elif score >= 60:  # 隐含条件:score < 80

    grade = "及格"

else:  # 隐含条件:score < 60

    grade = "不及格"

print(f"你的成绩评级是:{grade}")

运行结果:

你的成绩评级是:良好

👉 注意:elif是 “依次判断”,只要有一个条件成立,后面的条件就不再判断了,所以不用写 “80<=score<90” 这种复杂条件。

4. 嵌套 if:条件里套条件(复杂选择)

生活中 “多层选择” 的场景:“如果是学生,再判断是否是大学生;如果是上班族,再判断是否是程序员”—— 用 “嵌套 if” 实现,即在 if/else 的代码块里再写 if 判断。

生活案例:判断身份及权限

identity = "学生"  # 身份:学生/上班族

is_college = True  # 是否是大学生(仅学生时判断)

if identity == "学生":

    print("身份:学生")

    # 嵌套if:学生身份下,再判断是否是大学生

    if is_college:

        print("权限:可进入大学校园")

    else:

        print("权限:需家长陪同进入校园")

else:  # 上班族

    print("身份:上班族")

    # 嵌套if:上班族身份下,再判断是否是程序员

    if identity == "程序员":  # 这里只是示例,实际identity是上班族,所以不会执行

        print("权限:可进入技术部")

    else:

        print("权限:可进入办公区")

运行结果:

身份:学生

权限:可进入大学校园

👉 嵌套别太多:最多嵌套 2-3 层,否则代码会很乱,新手容易出错。

二、for 循环:重复做某事(遍历序列)

生活中 “重复做事” 的场景:“逐个念出班级同学的名字”“把购物清单上的物品逐个买完”——for 循环专门用来 “遍历序列”(比如字符串、列表、range 范围),即 “逐个取出序列里的元素,重复执行代码”。

1. 基础 for 循环:遍历序列(字符串 / 列表)

语法格式:

for 变量名 in 序列:  # 变量名:每次从序列里取出的元素,自己起(见名知意)

    每次循环执行的代码块(缩进)

案例 1:遍历字符串(逐个打印字符)

比如打印 “Python” 的每个字母:

word = "Python"

for char in word:  # char:每次取出的字符(可自定义,比如c

    print(f"当前字符:{char}")

运行结果:

当前字符:P

当前字符:y

当前字符:t

当前字符:h

当前字符:o

当前字符:n

案例 2:遍历列表(逐个处理元素)

比如遍历购物清单,打印每个要购买的物品:

shopping_list = ["苹果", "牛奶", "面包", "鸡蛋"]  # 列表(后续会详细讲,先简单用)

for item in shopping_list:  # item:每次取出的物品

    print(f"购物清单:{item}")

运行结果:

购物清单:苹果

购物清单:牛奶

购物清单:面包

购物清单:鸡蛋

2. for + range ():按 “范围” 重复(指定次数)

如果想 “重复执行 5 次代码”“遍历 1 到 10 的数字”,用range()函数生成一个 “数字范围”,搭配 for 循环超方便。

range () 函数的 3 种用法:

用法

说明

示例

生成的数字

range(n)

从 0 到 n-1(左闭右开)

range(5)

0,1,2,3,4

range(a,b)

从 a 到 b-1

range(2,6)

2,3,4,5

range(a,b,step)

从 a 到 b-1,步长为 step(每次加 step)

range(1,10,2)

1,3,5,7,9

案例 1:重复执行 5 次(打印 “你好”)

# range(5)生成0-4,共5个数字,循环5

for i in range(5):

    print(f"{i+1}次:你好")  # i0开始,所以+1变成1-5

运行结果:

1次:你好

2次:你好

3次:你好

4次:你好

5次:你好

案例 2:计算 1 到 10 的总和

total = 0  # 用来存总和,初始为0

for num in range(1, 11):  # 110range(1,11)生成1-10

    total = total + num  # 每次把num加到total里(total += num 简写)

print(f"110的总和:{total}")

运行结果:

110的总和:55

3. for 循环里的 break 和 continue:控制循环

有时候不需要遍历完所有元素,比如 “找到列表里的‘牛奶’就停止”“跳过列表里的‘面包’不处理”—— 用break(终止循环)和continue(跳过当前次循环,继续下一次)。

案例 1:break 终止循环(找到目标就停)

遍历购物清单,找到 “牛奶” 就打印并停止:

shopping_list = ["苹果", "牛奶", "面包", "鸡蛋"]

for item in shopping_list:

    if item == "牛奶":

        print(f"找到目标物品:{item},停止查找")

        break  # 终止整个for循环,后面的元素不再遍历

    print(f"当前检查:{item}(不是目标)")

运行结果:

当前检查:苹果(不是目标)

找到目标物品:牛奶,停止查找

👉 注意:break会直接结束整个循环,“面包” 和 “鸡蛋” 不会再检查。

案例 2:continue 跳过当前次(不处理某个元素)

遍历购物清单,跳过 “面包”,其他物品正常打印:

shopping_list = ["苹果", "牛奶", "面包", "鸡蛋"]

for item in shopping_list:

    if item == "面包":

        print(f"跳过物品:{item}")

        continue  # 跳过当前次循环的剩余代码,直接开始下一次

    print(f"需要购买:{item}")

运行结果:

需要购买:苹果

需要购买:牛奶

跳过物品:面包

需要购买:鸡蛋

👉 注意:continue只跳过 “当前次”,下一次循环会正常执行(比如 “鸡蛋” 会打印)。

三、while 循环:满足条件就一直做(条件循环)

如果想 “只要条件成立,就一直重复做事”—— 比如 “只要用户没输入正确密码,就一直让他输入”“只要杯子没满,就一直加水”,用 while 循环(“当… 时,就…”)。

1. 基础 while 循环:条件成立就循环

语法格式:

初始变量  # 比如计数变量i=0

while 条件表达式:  # 条件成立(True)时,执行缩进代码

    循环代码块(缩进)

    更新变量  # 必须更新!否则会无限循环

👉 致命坑:如果忘记 “更新变量”,条件会一直成立,循环永远停不下来(无限循环),只能强制关闭程序(Ctrl+C)。

案例 1:打印 1 到 5(用 while 实现)

i = 1  # 初始变量:从1开始

while i <= 5:  # 条件:i小于等于5时循环

    print(f"当前数字:{i}")

    i = i + 1  # 更新变量:i每次加1(否则i一直是1,无限循环)

运行结果:

当前数字:1

当前数字:2

当前数字:3

当前数字:4

当前数字:5

案例 2:计算 1 到 100 的总和(while 版)

total = 0  # 总和初始为0

num = 1    # 1开始加

while num <= 100:

    total += num  # 简写:total = total + num

    num += 1      # 更新:num1

print(f"1100的总和:{total}")

运行结果:

1100的总和:5050

2. while True + break:无限循环里的 “可控终止”

如果不知道循环要执行多少次(比如 “直到用户输入‘退出’才停止”),用while True(无限循环)配合break(满足条件时终止),这是实际开发中最常用的写法。

案例:用户输入直到正确

让用户输入 “密码”,直到输入 “123456” 才提示正确,否则一直让输入:

while True:  # 无限循环(永远True

    password = input("请输入密码:")  # input():获取用户输入(后续会详细讲)

    if password == "123456":

        print("密码正确,欢迎进入!")

        break  # 满足条件,终止无限循环

    else:

        print("密码错误,请重新输入!")

运行效果(模拟):

请输入密码:123

密码错误,请重新输入!

请输入密码:456

密码错误,请重新输入!

请输入密码:123456

密码正确,欢迎进入!

3. while 循环里的 continue:跳过当前次

和 for 循环的continue用法一样,跳过当前次循环的剩余代码,继续下一次。

案例:打印 1 到 10,跳过偶数

i = 1

while i <= 10:

    if i % 2 == 0:  # 判断是否为偶数(%是取余,余数0就是偶数)

        i += 1  # 必须先更新i!否则会无限循环(i一直是2

        continue

    print(f"当前奇数:{i}")

    i += 1

运行结果:

当前奇数:1

当前奇数:3

当前奇数:5

当前奇数:7

当前奇数:9

👉 注意:while 循环里用continue,一定要先 “更新变量”,否则会卡在当前值(比如 i=2 时,continue 前没更新,i 一直是 2,无限循环)。

四、循环嵌套:循环里套循环(复杂重复)

生活中 “多层重复” 的场景:“打印 3 行,每行 5 个星号”“给每个班级的学生打分”—— 用 “循环嵌套” 实现,即一个循环的代码块里再写另一个循环(外层循环控制 “行”,内层循环控制 “列”)。

案例 1:打印 3 行 5 列的星号(for 嵌套)

# 外层循环:控制行数(3行)

for row in range(3):

    # 内层循环:控制每行的星号数(5个)

    for col in range(5):

        print("★", end="")  # end="":不换行(默认print()会换行)

    print()  # 每行结束后换行(内层循环完,外层循环执行一次)

运行结果:

★★★★★

★★★★★

★★★★★

案例 2:打印九九乘法表(while 嵌套)

i = 1  # 外层循环:控制行数(19

while i <= 9:

    j = 1  # 内层循环:控制每行的列数(1i

    while j <= i:

        # 打印乘法表达式,end="\t"(制表符,让格式对齐)

        print(f"{j}×{i}={i*j}", end="\t")

        j += 1  # 内层循环更新

    print()  # 换行

    i += 1  # 外层循环更新

运行结果:

1×1=1       

1×2=2        2×2=4       

1×3=3        2×3=6        3×3=9       

...(直到9×9=81

五、新手易错点总结

  1. 缩进错误(最常见)
    1. if / 循环的代码块必须缩进(4 个空格),不能混用空格和 Tab;
    2. 嵌套代码的缩进要一致(比如内层 if 比外层 if 多 4 个空格)。
  2. while 循环忘记更新变量

比如i=1,while i<=5: print (i),没写i+=1,会无限循环,只能 Ctrl+C 终止。

  1. if 条件里用 “=” instead of “==”

if age = 18: 会报错!“=” 是赋值,“==” 才是判断是否相等,正确写法是if age == 18:

  1. for 循环里修改列表(漏元素)

比如遍历列表时删除元素:list = [1,2,3],for x in list: list.remove (x),最后会漏删元素,正确做法是遍历列表副本:for x in list.copy():

  1. break/continue 的作用范围

break/continue 只作用于 “当前所在的循环”,比如内层 for 循环的 break,不会终止外层 while 循环。

六、练手小任务(动手巩固!)

  1. 任务 1:成绩判断升级

输入学生成绩(0-100),如果分数 > 100 或 <0,提示 “成绩无效”;否则用 if-elif-else 评级(90 + 优秀,80-89 良好,60-79 及格,<60 不及格)。

  1. 任务 2:用 for 循环打印 100 以内的质数

质数是只能被 1 和自身整除的大于 1 的整数,比如 2、3、5、7…(提示:用嵌套 for 循环,内层循环判断是否能被整除)。

  1. 任务 3:用 while 循环做 “猜数字游戏”

程序随机生成 1-100 的数字,用户每次输入猜测的数字,程序提示 “太大”“太小”,直到猜对,提示 “恭喜猜对!你猜了 n 次”(n 是猜测次数,需要计数)。

下一篇我们会讲 “Python 基础语法 3:输入输出与列表”,详细讲解input()获取用户输入、print()的高级用法,以及列表(存储多个数据的容器)的操作,为后续写更复杂的程序打基础。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐