Python语言基础:14_条件控制
Python3 条件控制 零基础超详细教程条件控制就是让程序拥有「判断能力」—— 根据条件是否成立选择执行不同的代码。就像生活中如果下雨 → 带伞出门如果考试及格 → 不用补考如果年龄满 18 岁 → 可以独立办理业务Python 中用if/elif/else三个关键字实现条件控制全程靠「缩进」区分代码块语法非常简洁。一、前置必记铁则写错直接报错新手 90% 的条件语句报错都来自这几条务必先记牢条件行尾必须加英文冒号:if、elif、else所在的行末尾必须加冒号少写直接触发语法错误。靠缩进区分代码块统一 4 个空格满足条件才执行的代码必须向右缩进 4 个空格官方推荐标准同一层级的代码缩进必须完全一致。 缩进的这部分代码叫做「代码块」只有条件成立时才会运行。条件的结果只能是布尔值条件表达式最终只有两种结果True成立 / 真、False不成立 / 假。 通常由比较运算符 ! 、逻辑运算符and or not组成。和绝对不能搞混单个赋值操作把右边的值存进左边的变量两个相等判断专门用来写条件二、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 分为例先判断85 90不成立 → 跳过再判断85 80成立 → 打印「良好」直接结束整个条件判断后面的elif和else都不会再执行了⚠️ 新手大坑多分支的顺序非常重要 条件要按「从严格到宽松」的顺序写如果反过来写会出现逻辑 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嵌套 ifif 里面再写 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(工作日需要上班)优先级与写法建议三个逻辑运算符的优先级notandor拿不准的时候加小括号()最稳妥永远不会出错。# 不加括号先算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(未成年)如果没有 passif 下面是空的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} 元)七、新手高频易错点总结漏掉冒号if、elif、else行尾必须加英文冒号漏写直接SyntaxError缩进混乱同一代码块缩进必须一致不能有的 2 格有的 4 格该缩进的不缩进不该缩进的乱缩进和搞混判断相等必须用两个等号单个等号是赋值写在 if 条件里直接报错多分支顺序错误条件要从严格到宽松否则前面的条件会把后面的完全挡住字符串判断大小写敏感Admin和admin不相等判断时注意大小写匹配逻辑运算符优先级不清复杂条件一定要加括号不要靠记忆优先级else 单独使用else 必须和 if 配对不能独立出现