Python 基础语法 2:if 条件判断 + for/while 循环
上一篇我们学会了 “变量与数据类型”—— 相当于掌握了编程的 “零件”;这一篇要学的 “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: # 只有条件1、2都不成立时,才判断条件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}次:你好") # i从0开始,所以+1变成1-5次 |
运行结果:
|
第1次:你好 第2次:你好 第3次:你好 第4次:你好 第5次:你好 |
案例 2:计算 1 到 10 的总和
|
total = 0 # 用来存总和,初始为0 for num in range(1, 11): # 1到10(range(1,11)生成1-10) total = total + num # 每次把num加到total里(total += num 简写) print(f"1到10的总和:{total}") |
运行结果:
|
1到10的总和: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 # 更新:num加1 print(f"1到100的总和:{total}") |
运行结果:
|
1到100的总和: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 # 外层循环:控制行数(1到9) while i <= 9: j = 1 # 内层循环:控制每行的列数(1到i) 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) |
五、新手易错点总结
- 缩进错误(最常见):
- if / 循环的代码块必须缩进(4 个空格),不能混用空格和 Tab;
- 嵌套代码的缩进要一致(比如内层 if 比外层 if 多 4 个空格)。
- while 循环忘记更新变量:
比如i=1,while i<=5: print (i),没写i+=1,会无限循环,只能 Ctrl+C 终止。
- if 条件里用 “=” instead of “==”:
if age = 18: 会报错!“=” 是赋值,“==” 才是判断是否相等,正确写法是if age == 18:。
- for 循环里修改列表(漏元素):
比如遍历列表时删除元素:list = [1,2,3],for x in list: list.remove (x),最后会漏删元素,正确做法是遍历列表副本:for x in list.copy():。
- break/continue 的作用范围:
break/continue 只作用于 “当前所在的循环”,比如内层 for 循环的 break,不会终止外层 while 循环。
六、练手小任务(动手巩固!)
- 任务 1:成绩判断升级
输入学生成绩(0-100),如果分数 > 100 或 <0,提示 “成绩无效”;否则用 if-elif-else 评级(90 + 优秀,80-89 良好,60-79 及格,<60 不及格)。
- 任务 2:用 for 循环打印 100 以内的质数
质数是只能被 1 和自身整除的大于 1 的整数,比如 2、3、5、7…(提示:用嵌套 for 循环,内层循环判断是否能被整除)。
- 任务 3:用 while 循环做 “猜数字游戏”
程序随机生成 1-100 的数字,用户每次输入猜测的数字,程序提示 “太大”“太小”,直到猜对,提示 “恭喜猜对!你猜了 n 次”(n 是猜测次数,需要计数)。
下一篇我们会讲 “Python 基础语法 3:输入输出与列表”,详细讲解input()获取用户输入、print()的高级用法,以及列表(存储多个数据的容器)的操作,为后续写更复杂的程序打基础。
更多推荐
所有评论(0)