教会新手写Python(6)—— 基本条件语句

在编程世界中,条件判断就像我们日常生活中的决策过程。当我们说"如果外面下雨,就带伞"或"如果温度高于30度,就开空调",我们实际上在应用条件逻辑。Python中的条件语句让我们能够在代码中实现这种逻辑思维。

真与假的世界

在Python中,布尔值 (Boolean values)只有两种状态:True(真)和False(假)。这个概念是所有条件判断的基础。

text 复制代码
>>> issubclass(bool, int)
True
>>> True == 1
True
>>> False == 0
True

逻辑运算符语义解析

与运算(and):串联电路模型

逻辑运算符是构成复杂条件的模块,其运算规则可通过电路原理类比理解:

text 复制代码
has_keycard = True
facial_recognition = False
access_granted = has_keycard and facial_recognition  # False
  • has_keycard 表示用户是否持有门禁卡True 表示用户拥有有效门禁卡。False 表示用户没有有效门禁卡。
  • facial_recognition 表示用户是否通过面部识别。True 表示用户通过了面部识别认证。False 表示用户没有通过面部识别认证。

在串联电路中:所有开关都必须同时闭合,电路才会导通(产生电流)。若其中任意一个开关未闭合(即为断开状态),电路将无法导通,整体输出为False

对应到示例:

用户必须同时满足持有有效门禁卡 (has_keycard=True)面部识别成功 (facial_recognition=True) 两个条件,门才会打开(即access_granted=True)。如果有任意一个条件不满足,and运算的结果为False,即门不会打开。

在示例里,由于facial_recognition为False,即使用户持有门禁卡,也无法满足两个条件同时成立 的要求,因此最终access_granted的结果为False

或运算(or):并联电路模型

text 复制代码
# 紧急逃生通道规则
fire_alarm = False
manual_override = True
emergency_exit_open = fire_alarm or manual_override  # True

上述代码展示的是一个紧急逃生通道 的逻辑,通过or逻辑运算符实现,可以类比为并联电路模型:

  • fire_alarm 表示火灾警报是否触发。True 表示火灾警报触发。False 表示火灾警报未触发。
  • manual_override 表示人为手动打开紧急出口开关的操作是否发生。True 表示手动打开开关。False 表示未手动打开开关。

并联电路中:只要其中任意一个开关闭合,电路就能导通(有电流通过)。必须所有开关都断开,电路才无法导通。

对应到示例:

  • 紧急出口要打开的条件是**"火警警报触发"** 或者 "手动开关被触发",任意一个条件成立时,出口就应当打开。
  • 如果两个条件都是False(火警未触发,手动开关也未打开),那么出口不会打开(结果为False)。

示例中,由于manual_override为True,满足了or运算符的规则(任一条件成立即可),所以最终结果emergency_exit_openTrue,表示紧急出口将会打开

非运算(not):电路反相器

text 复制代码
# 未成年人内容过滤
user_age = 17
is_adult = not (user_age < 18)  # False

这个示例展示的是一个典型的逻辑非运算 (not) 的用法,它对应于电子电路中的反相器(Inverter)

反相器电路的类比解释:输入为真(True),输出为假(False)。输入为假(False),输出为真(True)。

上述代码中:

  • user_age = 17 表示用户年龄为17岁;条件 (user_age < 18) 表示用户年龄是否小于18;
  • user_age 为 17 时,该条件表达式成立 (True)。加上外层的 not,则对上述结果进行取反:(user_age < 18)True,通过 not 运算后变成了 False

这里的 is_adult 变量实际含义是:如果用户年龄小于18岁,is_adult 结果为 False,代表未成年。如果用户年龄大于或等于18岁,is_adult 结果为 True,代表成年。

条件语句语法结构

基础条件结构

单分支结构的本质可理解为:逻辑过滤器------只有满足条件才能通过(执行操作),否则被过滤(跳过该操作)。基本结构为:

text 复制代码
if 条件:
    执行代码块

示例:

text 复制代码
# 机场安检流程模拟
carry_liquid = True
container_size = 150  # ml

if carry_liquid and container_size > 100:
    print("请取出超标液体物品")  # 触发此分支

if carry_liquid and container_size > 100:这个条件语句包含了两个判断条件,并通过 and 运算符连接:

条件 判断意义 当前值 判断结果
carry_liquid 是否携带液体 True
container_size > 100 容器是否超出100毫升限制 150 > 100

两个条件均为真时,and 运算结果为 True,所以执行下面的语句:

text 复制代码
print("请取出超标液体物品")

双分支选择结构

二选一结构总是对应人生中的重大抉择场景

text 复制代码
# 职业发展决策模型
years_of_experience = 2
has_advanced_degree = False

if years_of_experience >= 3 or has_advanced_degree:
    career_path = "管理岗"
else:
    career_path = "技术岗"  # 当前选择

变量说明years_of_experience = 2: 代表用户的工作经验是2年。has_advanced_degree = False: 代表用户没有高级学位。

if 语句:if years_of_experience >= 3 or has_advanced_degree: 这个条件判断使用了or运算符,意味着:

  • 如果用户的工作经验大于等于3年,或者如果用户拥有高级学位(has_advanced_degree=True), 那么if条件就成立,用户会被分配到"管理岗"。

else 语句:如果if条件不成立(即years_of_experience小于3年,且has_advanced_degreeFalse),那么会执行else部分:

  • 用户将被分配到"技术岗"。

根据当前变量的值(years_of_experience = 2has_advanced_degree = False):

  • years_of_experience >= 3False,因为经验只有2年。
  • has_advanced_degreeFalse,因为没有高级学位。
  • 所以if条件不成立,程序执行else部分,career_path被赋值为"技术岗"。

if-else 语句详细分析:在这个例子中,它检查了两个条件是否至少有一个为真:

  • years_of_experience >= 3:用户是否有足够的工作经验。
  • has_advanced_degree:用户是否拥有高级学位。

or运算符or运算符是"逻辑或"运算符,表示如果两个条件中有一个为True,整体条件就成立。只有两个条件都为False时,if条件才不成立。

else语句 :当if条件不成立时,会执行else块,赋值给career_path为"技术岗"。

多分支决策结构

elif链式结构适合处理连续的分类问题:

text 复制代码
# 台风预警信号系统
wind_speed = 42  # m/s

if wind_speed >= 51:
    alert = "红色预警"
elif wind_speed >= 41:
    alert = "橙色预警"  # 当前判定
elif wind_speed >= 32:
    alert = "黄色预警"
else:
    alert = "正常天气"

Python中的多分支决策结构通常使用以下形式:

text 复制代码
if 条件1:
    执行代码块1
elif 条件2:
    执行代码块2
elif 条件3:
    执行代码块3
else:
    执行代码块4

特点:

  • 各分支的条件依次判断(从上到下),一旦某个分支条件成立,则执行对应代码块后跳出整个决策结构。
  • 如果所有分支的条件均不满足,则执行else分支代码。
相关推荐
liuhaoran___43 分钟前
解释区块链技术的应用场景和优势
python
独好紫罗兰44 分钟前
洛谷题单2-P5712 【深基3.例4】Apples-python-流程图重构
开发语言·python·算法
东方佑1 小时前
深度解析Python-PPTX库:逐层解析PPT内容与实战技巧
开发语言·python·powerpoint
Python大数据分析@1 小时前
python 常用的6个爬虫第三方库
爬虫·python·php
一顿操作猛如虎,啥也不是!1 小时前
JAVA-Spring Boot多线程
开发语言·python
斯内科1 小时前
Python入门(7):Python序列结构-字典
python·字典·dictionary
云徒川1 小时前
【设计模式】过滤器模式
windows·python·设计模式
橘猫云计算机设计2 小时前
基于django优秀少儿图书推荐网(源码+lw+部署文档+讲解),源码可白嫖!
java·spring boot·后端·python·小程序·django·毕业设计
互联网杂货铺2 小时前
如何用Postman实现自动化测试?
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman