当前位置: 首页 > news >正文

第七章:AI进阶之------条件语句(if-elif-else)(一)

课时 7:条件语句(if-elif-else)

请添加图片描述
在这里插入图片描述


文章目录

  • 课时 7:条件语句(if-elif-else)
    • 一、导入
    • 二、条件表达式基础
      • 2.1 比较运算符
      • 2.2 逻辑运算符
      • 2.3 条件表达式中的常见错误
    • 三、单分支结构(if)(5 分钟)
      • 3.1 单分支结构的语法
      • 3.2 单分支结构的常见错误
    • 四、双分支结构(if-else)
      • 4.1 双分支结构的语法
      • 4.2 双分支结构的应用场景
      • 4.3 双分支结构的常见错误


一、导入

欢迎来到 Python 条件语句的课程!在之前的课程中,我们已经学习了变量、数据类型和输入输出函数。今天,我们将学习如何根据不同的条件执行不同的代码块,这是编程中实现逻辑判断的基础。

条件语句是编程中的基本控制结构之一,它允许程序根据特定条件执行不同的代码块。在 Python 中,条件语句主要包括ifelif(else if 的缩写)和else。通过这些语句,我们可以编写具有决策能力的程序,使程序能够根据不同的输入或状态做出不同的反应。

本节课的学习目标

  1. 掌握条件表达式中的比较运算符和逻辑运算符的使用方法

  2. 理解单分支结构(if)的语法格式与执行逻辑

  3. 掌握双分支结构(if-else)的二选一场景应用

  4. 掌握多分支结构(if-elif-else)的多条件判断场景应用

  5. 识别并避免条件语句使用过程中的常见错误

现在,让我们开始今天的学习!

二、条件表达式基础

2.1 比较运算符

在条件语句中,我们通常需要比较不同的值或表达式。Python 提供了多种比较运算符,用于比较两个值的大小或是否相等。

常见的比较运算符

运算符说明示例
>大于3 > 2 → True
<小于3 < 2 → False
==等于3 == 2 → False
!=不等于3 != 2 → True
>=大于或等于3 >= 2 → True
<=小于或等于3 <= 2 → False

示例

# 比较两个数字
print(5 > 3)  # 输出:True
print(5 < 3)  # 输出:False# 比较两个字符串
print("apple" == "banana")  # 输出:False
print("apple" != "banana")  # 输出:True# 比较不同类型的值
print(5 == "5")  # 输出:False(类型不同,值也不同)

注意:在 Python 中,==用于比较两个值是否相等,而=用于赋值。混淆这两个运算符是初学者最常见的错误之一。

2.2 逻辑运算符

逻辑运算符用于组合多个条件,形成更复杂的条件表达式。Python 提供了三种逻辑运算符:and(与)、or(或)和not(非)。

逻辑运算符的规则

运算符说明示例
and所有条件为真时返回 TrueTrue and False → False
or至少一个条件为真时返回 TrueTrue or False → True
not反转条件的真假值not True → False

示例

# 使用and运算符
age = 20
is_student = True
if age >= 18 and is_student:print("你是成年学生")  # 输出:你是成年学生# 使用or运算符
temperature = 25
is_raining = False
if temperature > 30 or is_raining:print("天气炎热或下雨,建议带伞")
else:print("天气适宜")  # 输出:天气适宜# 使用not运算符
is_sunny = True
if not is_sunny:print("记得带伞")
else:print("享受阳光!")  # 输出:享受阳光!!

逻辑运算符的优先级

在 Python 中,逻辑运算符的优先级顺序为:not > and > or。这意味着在复杂的逻辑表达式中,not会优先计算,然后是and,最后是or。例如:

# 实际计算顺序:(not True) or (False and True)
print(not True or False and True)  # 输出:False

最佳实践:为了避免因优先级问题导致的逻辑错误,建议在复杂条件表达式中使用括号明确运算顺序:

# 使用括号明确优先级
print((not True) or (False and True))  # 输出:False

2.3 条件表达式中的常见错误

在使用条件表达式时,初学者容易犯以下几类错误:

错误 1:混淆赋值运算符和比较运算符

# 错误示例:使用=而不是==进行比较
age = 18
if age = 18:  # 错误:SyntaxError: invalid syntaxprint("你是成年人")

错误原因:在条件表达式中,=是赋值运算符,而==才是比较运算符。

解决方案:使用==进行比较:

# 正确示例
age = 18
if age == 18:print("你是成年人")  # 输出:你是成年人

错误 2:逻辑运算符优先级理解错误

# 错误示例:忽略逻辑运算符优先级
x = 5
y = 10
if x > 3 and y < 15 or y == 10:print("条件成立")  # 这可能不是预期的逻辑

错误原因:由于and的优先级高于or,表达式会先计算x > 3 and y < 15,然后再与y == 10进行or运算。

解决方案:使用括号明确优先级:

# 正确示例:使用括号明确优先级
x = 5
y = 10
if (x > 3 and y < 15) or (y == 10):print("条件成立")  # 明确的逻辑

错误 3:条件表达式中使用非布尔值

# 错误示例:在条件中使用非布尔值
x = 5
if x:print("x是真值")  # 这在Python中是合法的,但可能不是预期的逻辑

错误原因:在 Python 中,任何非零数值、非空字符串、非空列表等都被视为真值。虽然上述代码在语法上是正确的,但可能不符合预期的逻辑。

解决方案:明确写出比较条件:

# 正确示例:明确写出比较条件
x = 5
if x != 0:print("x不是零")

三、单分支结构(if)(5 分钟)

3.1 单分支结构的语法

单分支结构是条件语句中最简单的形式,它只有一个条件判断,如果条件为真,就执行相应的代码块;如果条件为假,就跳过该代码块。

单分支结构的语法格式

if 条件表达式:代码块

执行逻辑

当 Python 解释器遇到if语句时,首先评估条件表达式的真假值。如果条件为真,则执行缩进的代码块;如果条件为假,则跳过该代码块,继续执行后续代码。

示例

# 判断一个数是否为正数
number = 5
if number > 0:print(f"{number}是正数")  # 输出:5是正数# 判断一个数是否为零
number = 0
if number == 0:print("这个数是零")  # 输出:这个数是零

3.2 单分支结构的常见错误

错误 1:忘记在条件表达式后添加冒号

# 错误示例:条件表达式后缺少冒号
temperature = 30
if temperature > 25  # 错误:SyntaxError: invalid syntaxprint("天气炎热")

错误原因:在 Python 中,冒号:是条件语句语法的一部分,用于标识代码块的开始。

解决方案:在条件表达式后添加冒号:

# 正确示例
temperature = 30
if temperature > 25:print("天气炎热")  # 输出:天气炎热

错误 2:代码块缩进错误

# 错误示例:代码块缺少缩进
temperature = 30
if temperature > 25:
print("天气炎热")  # 错误:IndentationError: expected an indented block

错误原因:在 Python 中,缩进是语法的一部分,用于标识代码块的范围。缺少缩进会导致语法错误。

解决方案:正确缩进代码块(通常使用 4 个空格):

# 正确示例temperature = 30if temperature > 25:print("天气炎热")  # 正确缩进

错误 3:在条件表达式中使用赋值语句

# 错误示例:在条件表达式中使用=
x = 5
if x = 10:  # 错误:SyntaxError: invalid syntaxprint("x的值是10")

错误原因:在条件表达式中,=是赋值运算符,而==才是比较运算符。

解决方案:使用==进行比较:

# 正确示例
x = 5
if x == 10:print("x的值是10")
else:print(f"x的值不是10,而是{x}")  # 输出:x的值不是10,而是5

四、双分支结构(if-else)

4.1 双分支结构的语法

双分支结构允许程序在两个互斥的代码块中选择执行其中一个。如果条件为真,执行第一个代码块;如果条件为假,执行第二个代码块。

双分支结构的语法格式

if 条件表达式:代码块1
else:代码块2

执行逻辑

当 Python 解释器遇到if-else结构时,首先评估条件表达式的真假值。如果条件为真,执行if后的代码块 1;如果条件为假,执行else后的代码块 2。

示例

# 判断一个数是奇数还是偶数
number = 7
if number % 2 == 0:print(f"{number}是偶数")
else:print(f"{number}是奇数")  # 输出:7是奇数# 判断年龄是否成年
age = 17
if age >= 18:print("你是成年人")
else:print("你是未成年人")  # 输出:你是未成年人

4.2 双分支结构的应用场景

双分支结构适用于需要在两种可能性中做出选择的场景,例如:

  1. 判断用户权限:根据用户角色(如管理员或普通用户)显示不同的界面。
is_admin = False
if is_admin:print("显示管理界面")
else:print("显示普通用户界面")
  1. 判断登录状态:根据用户是否登录显示不同的提示信息。
is_logged_in = True
if is_logged_in:print("欢迎回来!")
else:print("请先登录")
  1. 简单的数学运算:根据条件执行不同的计算。
a = 5
b = 3
if a > b:print(f"{a}大于{b}")
else:print(f"{a}不大于{b}")  # 输出:5大于3

4.3 双分支结构的常见错误

错误 1:在 else 子句中添加条件表达式

# 错误示例:在else子句中添加条件
age = 20
if age >= 18:print("你是成年人")
else age < 18:  # 错误:SyntaxError: invalid syntaxprint("你是未成年人")

错误原因else子句本身不需要条件表达式,它只是在if条件为假时执行。

解决方案:移除else子句中的条件表达式:

# 正确示例
age = 20
if age >= 18:print("你是成年人")
else:print("你是未成年人")  # 输出:你是成年人

错误 2:忘记在 else 后添加冒号

# 错误示例:else后缺少冒号
age = 20
if age >= 18:print("你是成年人")
else  # 错误:SyntaxError: invalid syntaxprint("你是未成年人")

错误原因:在 Python 中,冒号:else子句语法的一部分,用于标识代码块的开始。

解决方案:在else后添加冒号:

# 正确示例
age = 20
if age >= 18:print("你是成年人")
else:print("你是未成年人")  # 输出:你是成年人

错误 3:在代码块中使用错误的缩进

# 错误示例:代码块缩进错误
age = 20
if age >= 18:
print("你是成年人")  # 错误:IndentationError: expected an indented block
else:print("你是未成年人")

错误原因:在 Python 中,缩进是语法的一部分,用于标识代码块的范围。缺少缩进会导致语法错误。

解决方案:正确缩进代码块:

# 正确示例
age = 20
if age >= 18:print("你是成年人")  # 正确缩进
else:print("你是未成年人")  # 正确缩进

在这里插入图片描述


文章转载自:

http://KAyMBKyn.Lmqfq.cn
http://ZaEwHidN.Lmqfq.cn
http://RJkuy261.Lmqfq.cn
http://zKFRkTtm.Lmqfq.cn
http://B60waWWg.Lmqfq.cn
http://2Vlm1F58.Lmqfq.cn
http://DEwZFekc.Lmqfq.cn
http://tKAcwNf5.Lmqfq.cn
http://KDIC2ccY.Lmqfq.cn
http://cWcADkX0.Lmqfq.cn
http://MXNBXd9Q.Lmqfq.cn
http://7b9wrVXj.Lmqfq.cn
http://yMG4U2g9.Lmqfq.cn
http://M5RqJh50.Lmqfq.cn
http://VG0MGuHE.Lmqfq.cn
http://1GyI6jbQ.Lmqfq.cn
http://9xEv2PQc.Lmqfq.cn
http://5XN4JDiw.Lmqfq.cn
http://AAgP16Fm.Lmqfq.cn
http://czvKOEQ5.Lmqfq.cn
http://pQJH3hM8.Lmqfq.cn
http://aGYAoVQ6.Lmqfq.cn
http://s6EiIB65.Lmqfq.cn
http://Vs2MBmtT.Lmqfq.cn
http://RnEwtZOY.Lmqfq.cn
http://YjNI3HZG.Lmqfq.cn
http://oXVWXZr6.Lmqfq.cn
http://QG47a9mJ.Lmqfq.cn
http://DYMFRj38.Lmqfq.cn
http://4Kqhsbip.Lmqfq.cn
http://www.dtcms.com/a/383098.html

相关文章:

  • 从希格斯玻色子到QPU:C++在高能物理与量子计算领域的跨界征程与深度融合
  • 二、vue3后台项目系列——安装相关依赖、项目常用辅助开发工具
  • Knockout.js 备忘录模块详解
  • VS2022下载+海康SDK环境配置实现实时预览
  • 前端基础 —— C / JavaScript基础语法
  • 手搓一个 DELL EMC Unity存储系统健康检查清单
  • 字节M3-Agent:如何实现一个支持多模态长期记忆与推理的Agent
  • TCL华星计划投建第8.6代印刷OLED产线
  • Qt学习:moc生成的元对象信息
  • Java—JDBC 和数据库连接池
  • 软件工程实践四:MyBatis-Plus 教程(连接、分页、查询)
  • 用 Go 快速上手 Protocol Buffers
  • Java Stream 流学习笔记
  • Linux线程id与简易封装线程实现
  • 公链分析报告 - Secret Network
  • JavaScript 简单链表题目试析
  • 【ZYNQ开发篇】Petalinux和电脑端的静态ip地址配置
  • 电商AI导购系统的模型部署架构:TensorFlow Serving在实时推荐中的实践
  • 光射三缝实验
  • K8s部署 Redis 主从集群
  • Android点击桌面图库应用启动流程trace分析
  • 【抗量子安全】全球视角下 PQC 与 QKD 技术洞察:政策引领与产业演进
  • 代码随想录学习摘抄day9(回溯1-11)
  • 数据处理指令
  • SpringBoot 中 ZK 与 Kafka 节点选择逻辑:底层原理与实践解析
  • 事务与mysql数据库锁的关系
  • 继承类模板:函数未在模板定义上下文中声明,只能通过实例化上下文中参数相关的查找找到
  • 07-Redis 基础操作全攻略:从键管理到数据类型判断
  • 【linux】特殊权限
  • [数据结构] 排序