Python语言基础:14_条件控制
2026/7/27 7:09:50 网站建设 项目流程

Python3 条件控制 零基础超详细教程

条件控制,就是让程序拥有「判断能力」—— 根据条件是否成立,选择执行不同的代码。就像生活中:

  • 如果下雨 → 带伞出门
  • 如果考试及格 → 不用补考
  • 如果年龄满 18 岁 → 可以独立办理业务

Python 中用if/elif/else三个关键字实现条件控制,全程靠「缩进」区分代码块,语法非常简洁。


一、前置必记铁则(写错直接报错)

新手 90% 的条件语句报错都来自这几条,务必先记牢:

  1. 条件行尾必须加英文冒号:ifelifelse所在的行,末尾必须加冒号,少写直接触发语法错误。
  2. 靠缩进区分代码块(统一 4 个空格)满足条件才执行的代码,必须向右缩进 4 个空格(官方推荐标准);同一层级的代码缩进必须完全一致。 缩进的这部分代码叫做「代码块」,只有条件成立时才会运行。
  3. 条件的结果只能是布尔值条件表达式最终只有两种结果:True(成立 / 真)、False(不成立 / 假)。 通常由比较运算符(> < == != >= <=)、逻辑运算符(and or not)组成。
  4. ===绝对不能搞混
    • 单个=:赋值操作,把右边的值存进左边的变量
    • 两个==:相等判断,专门用来写条件

二、4 种条件结构,从简单到复杂

结构 1:单分支 if 语句

最简单的条件逻辑:条件成立就执行代码,不成立就直接跳过

语法格式
if 条件: 条件成立时执行的代码(必须缩进) 条件成立时执行的代码(必须缩进) # 没有缩进的代码,无论条件是否成立都会执行
生活例子:判断是否成年
age = 20 # 判断年龄是否大于等于18 if age >= 18: # 下面两行缩进了,只有条件成立才会运行 print("你已经成年了") print("可以独立办理业务") # 这行没有缩进,不管成不成立都会运行 print("程序结束")

运行结果:

你已经成年了 可以独立办理业务 程序结束
条件不成立的情况

把年龄改成 15,运行效果:

age = 15 if age >= 18: print("你已经成年了") print("程序结束")

运行结果:

程序结束

解释:条件不成立,缩进内的代码完全跳过,只执行外面的代码。


结构 2:双分支 if...else... 二选一

条件成立执行 if 里的代码,不成立就执行 else 里的代码,两段代码永远只会运行其中一段。

语法格式
if 条件: 条件成立执行的代码 else: 条件不成立执行的代码
例子 1:判断数字奇偶
num = int(input("请输入一个整数:")) # 数字除以2余数为0,就是偶数 if num % 2 == 0: print(f"{num} 是偶数") else: print(f"{num} 是奇数")

输入 7,运行结果:

请输入一个整数:7 7 是奇数
例子 2:简单密码验证
password = input("请输入密码:") if password == "123456": print("密码正确,登录成功") else: print("密码错误,登录失败")

💡 注意:else后面也要加冒号,而且else不能单独写,必须和if配对使用。


结构 3:多分支 if...elif...else... 多条件依次判断

适合有 3 种及以上情况的场景,从上往下依次判断,只要有一个条件成立,执行对应代码后直接结束整个判断;所有条件都不成立,才执行最后的 else。

语法格式
if 条件1: 条件1成立执行 elif 条件2: 条件2成立执行 elif 条件3: 条件3成立执行 else: 所有条件都不成立执行
经典例子:考试成绩评级

规则:90 分及以上优秀,80-89 良好,60-79 及格,60 以下不及格。

score = float(input("请输入考试分数:")) if score >= 90: print("成绩:优秀") elif score >= 80: print("成绩:良好") elif score >= 60: print("成绩:及格") else: print("成绩:不及格")

输入 85,运行结果:

请输入考试分数:85 成绩:良好
运行逻辑详解(以 85 分为例)
  1. 先判断85 >= 90?不成立 → 跳过
  2. 再判断85 >= 80?成立 → 打印「良好」,直接结束整个条件判断
  3. 后面的elifelse都不会再执行了

⚠️ 新手大坑:多分支的顺序非常重要 条件要按「从严格到宽松」的顺序写,如果反过来写会出现逻辑 bug。 错误示范:

score = 85 if score >= 60: print("及格") elif score >= 90: print("优秀")

85 分先满足>=60,直接输出及格,永远不会走到优秀的判断。

例子:判断月份所属季节
month = int(input("请输入月份(1-12):")) if month in [3,4,5]: print("春天") elif month in [6,7,8]: print("夏天") elif month in [9,10,11]: print("秋天") elif month in [12,1,2]: print("冬天") else: print("输入的月份不合法")

结构 4:嵌套 if(if 里面再写 if)

条件分层判断:先满足外层条件,再判断内层条件,一层套一层。每一层都要单独缩进。

语法格式
if 外层条件: 外层成立才执行的代码 if 内层条件: 内层成立才执行的代码 else: 内层不成立执行的代码 else: 外层不成立执行的代码
生活例子:网吧上网判断

先判断年龄是否满 18,年龄达标了,再判断有没有带身份证。

age = int(input("请输入你的年龄:")) has_id = input("有没有带身份证?(有/没有):") if age >= 18: print("年龄达标") # 内层判断:只有年龄达标了才会走到这里 if has_id == "有": print("可以正常上网") else: print("没带身份证,不能上网") else: print("未成年,禁止进入网吧")

输入年龄 20、身份证没有,运行结果:

请输入你的年龄:20 有没有带身份证?(有/没有):没有 年龄达标 没带身份证,不能上网

💡 新手建议:嵌套层数尽量不要超过 3 层,太多层会让代码很难读懂,尽量简化逻辑。


三、多条件组合:and /or/not

复杂判断需要同时满足多个条件,或者满足任意一个条件即可,就要用逻辑运算符组合条件。

1. and:并且,全部成立才成立

两边条件都为 True,整体才是 True;有一个不成立,整体就不成立。

例子:判断年龄是否在 18 到 60 岁之间(招工年龄要求)

age = 25 if age >= 18 and age <= 60: print("符合招工年龄要求") else: print("不符合招工年龄")

2. or:或者,一个成立就成立

两边条件任意一个为 True,整体就是 True;全不成立才是 False。

例子:有驾照或者有临时通行证,就能开车上路

has_license = False has_temp_pass = True if has_license or has_temp_pass: print("可以开车上路") else: print("不能开车")

3. not:取反,真变假,假变真

把条件的结果反过来。

例子:如果不是周末,就要上班

is_weekend = False if not is_weekend: print("工作日,需要上班")

优先级与写法建议

三个逻辑运算符的优先级:not>and>or拿不准的时候,加小括号()最稳妥,永远不会出错。

# 不加括号,先算and再算or print(True or False and False) # True # 加括号,先算or再算and print((True or False) and False) # False

四、简写:三元表达式(一行写完 if-else)

如果只是简单的二选一赋值,可以用三元表达式简写,一行写完,代码更简洁。

语法格式

条件成立的结果 if 条件 else 条件不成立的结果

例子 1:判断成年 / 未成年

普通写法(4 行):

age = 17 if age >= 18: status = "成年" else: status = "未成年"

三元表达式写法(1 行):

age = 17 status = "成年" if age >= 18 else "未成年" print(status) # 未成年

例子 2:求两个数的最大值

a = 10 b = 20 max_num = a if a > b else b print(max_num) # 20

💡 新手建议:复杂逻辑不要用三元表达式,会降低可读性;只有简单的二选一赋值再使用。


五、pass 空语句(占位专用)

pass是一个空语句,什么都不做,只是占个语法位置。 写代码框架的时候,如果某个分支暂时没想好写什么,直接空着会触发语法报错,用pass占位就可以正常运行。

例子

age = 15 if age >= 18: # 暂时没想好成年分支的逻辑,用pass占位 pass else: print("未成年")

如果没有 pass,if 下面是空的,Python 会直接报语法错误。


六、综合实战案例

案例 1:简单登录系统

需求:用户名是admin,密码是123456则登录成功;用户名对但密码错,提示密码错误;用户名不对,提示用户不存在。

username = input("请输入用户名:") password = input("请输入密码:") if username == "admin": if password == "123456": print("登录成功,欢迎回来!") else: print("密码错误,请重试") else: print("用户名不存在")

案例 2:判断闰年

闰年规则:能被 4 整除但不能被 100 整除,或者能被 400 整除。

year = int(input("请输入年份:")) if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): print(f"{year}年是闰年") else: print(f"{year}年是平年")

案例 3:快递运费计算

需求:省内首重 1 公斤 6 元,省外首重 1 公斤 8 元;超过 1 公斤的部分,每公斤续重 2 元。

weight = float(input("请输入快递重量(公斤):")) address = input("请输入收货类型(省内/省外):") if address == "省内": if weight <= 1: fee = 6 else: fee = 6 + (weight - 1) * 2 else: if weight <= 1: fee = 8 else: fee = 8 + (weight - 1) * 2 print(f"快递运费为:{fee} 元")

七、新手高频易错点总结

  1. 漏掉冒号ifelifelse行尾必须加英文冒号,漏写直接SyntaxError
  2. 缩进混乱:同一代码块缩进必须一致,不能有的 2 格有的 4 格;该缩进的不缩进,不该缩进的乱缩进
  3. ===搞混:判断相等必须用两个等号==,单个等号是赋值,写在 if 条件里直接报错
  4. 多分支顺序错误:条件要从严格到宽松,否则前面的条件会把后面的完全挡住
  5. 字符串判断大小写敏感"Admin""admin"不相等,判断时注意大小写匹配
  6. 逻辑运算符优先级不清:复杂条件一定要加括号,不要靠记忆优先级
  7. else 单独使用:else 必须和 if 配对,不能独立出现

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询