点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享!

前言

Hi,大家好,我是可乐,生活中听到过太多的如果,如果当年我再认真一点,如果我高考的物理多选题没有多选选项,如果我大学时多学些技能,如果我早点买房等等。工作中,同样存在很多 如果,今天给大家详细介绍 Python中的条件控制语句,并附上相应的案例代码,便于吸收、理解。

条件控制语句简介

Python 中的 条件控制语句 (Conditional control statement)是通过一条或者多条语句的执行结果(True 或者 False),来决定执行的代码逻辑 。它包含 ifelifelse关键字, Python 中没有  else if的写法,只存在 elif 这种写法。每句判断语句使用冒号 - :结尾,使用 缩进划分语句块,相同缩进数的语句组成一个语句块。条件控制语句,包括 if 语句、if - else 语句、if - elif - else 语句、以及 if - elif (多个elif) - else 语句,下面我们通过案例逐一演示。

if 语句

if 语句,仅有一个判断条件,如果条件成立(为 True),则执行判断语句后带缩进的代码逻辑,否则不执行。1、语法格式:

# 语句末尾的冒号一定不能丢if 判断条件:# 注意与 if 缩进
    条件为真才执行的代码逻辑

2、执行流程图:

3、案例:

>>> if True:
     print("条件为真时打印的语句")
条件为真时打印的语句

if - else 语句

if - else 语句,仅有一个判断条件,与 if 语句的区别在于,如果条件成立(为 True),则执行 if 判断语句后带缩进的代码逻辑,否则执行 else 后带缩进的代码逻辑。1、语法格式:

# 语句末尾的冒号一定不能丢if 判断条件:# 注意与 if 缩进
    条件为真时执行的代码逻辑else:# 注意与 else 缩进
    条件为假时执行的代码逻辑

2、执行流程图:

3、案例:

>>> if True:
        print("条件为真时打印的语句")else:
        print("条件为假时打印的语句")
条件为真时打印的语句>>> if False:
        print("条件为真时打印的语句")else:
        print("条件为假时打印的语句")
条件为假时打印的语句

if - elif - else 语句

在使用判断语句时,我们有时需要对两个条件进行判断,并执行对应的代码逻辑,这时以上两种语句就无法满足我们的需求。我们可使用 if - elif - else 语句,有两个判断条件,如果 if 后的条件成立(为 True),则执行 if 判断语句后带缩进的代码逻辑.如果 elif  后的条件成功(为 True),则执行 elif 判断语句后带缩进的代码逻辑,否则执行 else 后带缩进的代码逻辑。值得注意的是,if - elif - else 语句中,仅有一个条件成立后,就会退出当前整个判断语句,简单来说,这三条判断路径,只会走其中一条。1、语法格式:

# 语句末尾的冒号一定不能丢if 判断条件一:# 注意与 if 缩进
    条件一为真时执行的代码逻辑elif 判断条件二:# 注意与 if 缩进
    条件二为真时执行的代码逻辑else:# 注意与 else 缩进
    条件一、条件二都为假时执行的代码逻辑

2、执行流程图:

3、案例:

>>> drink = "kele">>> if drink == "kele":
     print("你选择的饮品是可乐")elif drink == "xuebi":
        print("你选择的饮品是雪碧")else:
        print("你选择的既不是可乐,也不是雪碧")
你选择的饮品是可乐       

if - elif (多个) - else 语句

与 if - elif - else 语句的区别在于,elif 条件判断的数量不止一个。1、语法格式:

# 语句末尾的冒号一定不能丢if 判断条件一:# 注意与 if 缩进
    条件一为真时执行的代码逻辑elif 判断条件二:# 注意与 if 缩进
    条件二为真时执行的代码逻辑
...elif 判断条件N:# 注意与 if 缩进
    条件N为真时执行的代码逻辑else:# 注意与 else 缩进
    条件一、条件二、...条件N都为假时执行的代码逻辑

2、执行流程图:

3、案例:

>>> drink = "Moutai">>> if drink == "kele":
     print("你选择的饮品是可乐")elif drink == "xuebi":
        print("你选择的饮品是雪碧")elif drink == "tea":
        print("你选择的饮品是茶")else:
        print("你选择的不是可乐,不是雪碧,也不是茶")
你选择的不是可乐,不是雪碧,也不是茶

嵌套使用

以上四种条件控制语句,均支持自身嵌套、以及彼此嵌套使用,下面以 if  语句 与 if- else 语句为例:

if 语句自身嵌套使用

>>> drink = "kele">>> ice = "True"# 第一层判断是否是可乐>>> if drink == "kele":# 第二层判断是否加冰if ice == "True":
            print("你选择的饮品是可乐加冰")
你选择的饮品是可乐加冰

if - else 语句自身嵌套使用

>>> drink = "kele">>> ice = "True">>> if drink == "kele":if ice == "True":
            print("你选择的饮品是可乐加冰")else:
            print("你选择的饮品是可乐不加冰")else:
        print("你选择的饮品不是可乐")
你选择的饮品是可乐加冰

if 语句与  if - else 语句彼此嵌套使用

>>> drink = "kele">>> ice = "False">>> if drink == "kele":if ice == "True":
            print("你选择的饮品是可乐加冰")else:
            print("你选择的饮品是可乐不加冰")
你选择的饮品是可乐不加冰

条件控制语句中常用的基础运算符

常用的基础运算符可参照下表:

操作符 说明

<

小于

<=

小于或者等于

>

大于

>=

大于或者等于

==

等于,比较两侧对象的值是否相等

!=

不等于

in / not in

成员运算符

is / not is

身份运算符

1、小于 -  <与 小于或者等于 -  <=

>>> score = 59>>> if 0 60:
        print("未及格,继续努力")elif 60 <= age 69:
        print("及格,继续进阶")else:
        print("中等、良好、或优秀")
未及格,继续努力

2、大于 -  >与 大于或者等于 -  >=

>>> score = 91>>> if score >= 60:
        print("及格,继续进阶")elif score > 90:
        print("优秀")else:
        print("其他等级")
优秀

3、等于 -  ==与 不等于 - !=

>>> password = "123456">>> if password == "123456":
        print("登陆成功")
登陆成功>>> user_name = "zhangsan">>> if user_name != "root":
        print("没有操作权限")
没有操作权限

4、成员运算符  innot in判断成员是否在序列中

>>> user_list = ["kele", "zhangsan"]>>> login_name = "lisi">>> if login_name not in user_list:
        print("用户不存在")elif login_name in user_list:
        print("登陆成功")
用户不存在

5、身份运算符  isnot is比较两个对象的存储单元

>>> kele_age = 18>>> xuebi_age = 18>>> if kele_age is xuebi_age:
        print("两者指向同一块内存空间")if kele_age not is xuebi_age:
         print("两者指向不同的内存空间")
两者指向同一块内存空间

条件控制语句中常用的逻辑运算符

常用的逻辑运算符可参照下表:

运算符 说明

not

逻辑非

and

逻辑与

or

逻辑或

1、逻辑非 - not,对语句的布尔值取反

>>> bool_1 = True>>> bool_2 = False>>> if not bool_1:
  print("对真取非为假")if not bool_2:
     print("对假取非为真")
对假取非为真

2、逻辑与 - and,找 False,若第一个语句的值为 False 则直接返回 False,否则,返回第二个语句的值

# 有假则为假>>> bool_1 = True>>> bool_2 = False>>> bool_3 = True>>> if bool_1 and bool_2:
     print("有假则为假")if bool_1 and bool_3:
     print("全真才为真")
全真才为真

3、逻辑或 - or,找 True,若第一个语句的值为 True 则直接返回 True,否则,返回第二个语句的值

# 有真则为真>>> bool_1 = True>>> bool_2 = False>>> bool_3 = False>>> if bool_1 or bool_2:
     print("有真则为真")if bool_2 or bool_3:
     print("全假才为假")
有真则为真

扩展 - Python 中的特殊对象

Python 中有部分特殊对象,它们的布尔值为 False,具体可参照下表:

对象 布尔值

None

False

所有值为零的数(整数、复数、浮点数)

False

空字符串

False

空列表

False

空元组

False

空字典

False

空集合

False

下面我们逐一验证1、None 与值为零的数

>>> if not None:
     print("None 的布尔值为 False")None 的布尔值为 False >>> if not 0:
     print("0 的布尔值为 False")0 的布尔值为 False>>> if not 0.0:
     print("0.0 的布尔值为 False")0.0 的布尔值为 False>>> if not 0 + 0j:
     print("0 + 0j 的布尔值为 False")0 + 0j 的布尔值为 False

2、空字符串、空列表、空元组

>>> if not "":
     print("空字符串的布尔值为 False")
空字符串的布尔值为 False>>> if not []:
     print("空列表的布尔值为 False")
空列表的布尔值为 False>>> if not tuple():
     print("空元组的布尔值为 False")
空元组的布尔值为 False

3、空字典、空集合

>>> if not {}:
     print("空字典的布尔值为 False")
空字典的布尔值为 False>>> if not set():
     print("空集合的布尔值为 False")
空集合的布尔值为 False

扩展 - 使用否定判断精简代码

工作中,多使用否定判断,可精简部分代码,下面通过一个简单的案例说明

# 传统写法
is_kele = Trueif is_kele:
    print("Yes")else:
    print("No")# 否定判断
is_kele = Trueif not is_kele:
    print("No")
print("Yes")

扩展 - 猜拳游戏

import randomdef guessing_game():"""
    猜拳游戏 if - elif - else 与 逻辑运算符
    Author:可乐python说
    :return:
    """
    player_input = int(input("请出拳(0剪刀,1石头,2布):"))
    computer_ = random.randint(0, 2)if (player_input == 0 and computer_ == 2) \or (player_input == 1 and computer_ == 0) \or (player_input == 2 and computer_ == 0):
        print("电脑出拳%s,恭喜你赢了!" % computer_)elif (player_input == 0 and computer_ == 0) \or (player_input == 1 and computer_ == 1) \or (player_input == 2 and computer_ == 2):
        print("电脑出拳%s,平局!" % computer_)else:
        print("电脑出拳%s,很遗憾你输了!" % computer_)if __name__ == '__main__':
    guessing_game()

下面请看演示视频:

扩展 - 火车检票进站

def train_check_in():"""
    火车检票入站 if - else 嵌套
    Author:可乐python说
    :return: 
    """
    train_ticket = int(input("请出示车票(1表示有,0表示无):"))
    is_safe = int(input("请过安检(1表示安全,0表示危险):"))if train_ticket == 1:if is_safe == 1:
            print("通过安检,可以上车!")else:
            print("你携带了违规物品,没通过安检,不能上车!")else:
        print("没有车票,不能进站!")if __name__ == '__main__':
    train_check_in()

下面请看演示视频:

总结

  1. 工作中在处理业务逻辑时,经常会使用到条件控制语句,当然,以嵌套使用为主。
  2. 使用条件控制语句时,可根据实际需求,灵活搭配使用基本运算符与逻辑运算符。
  3. 书写时需注意条件控制语句后的冒号 - : ,以及代码块的缩进问题。
  4. if - else 语句可理解为二选其一,if - elif - else 则为三选其一,包含多个 elif 则为  N 选其一,其中  else 并非必须选项。
  5. 使用逻辑运算符时,其优先级需要注意,加上小括号 - `()` 的语句优先级最高,() > not > and > or  。
  6. 使用条件控制语句时,建议多使用否定判断,这时值为空的特殊对象常被使用,可在一定程度上精简代码。
  7. 文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,也可分享条件控制语句相关的技巧、有趣的小案例。
  8. 原创文章已全部更新至 Github:https://github.com/kelepython/kelepython
  9. 本文永久博客地址:https://kelepython.readthedocs.io/zh/latest/c01/c01_09.html

历史文章推荐阅读Python 列表操作,节后大放送Python 字典操作,母亲节加餐元组(Tuple) | 不可改变的 Python 数据类型集合 (Set) | 一山不容二虎的 Python 数据类型

分享( Share) | 2019 年下半年的计算机软考证书申领教程

数字(Number) | 最贴近生活的 Python 数据类型扫码关注公众号获取更多分享

如果觉得还不错,点个"在看"鼓励一下!

在 if...elif...else 的多个语句块中只会执行一个语句块?_如果 (If) | Python 中的条件控制语句详解...相关推荐

  1. latex中if语句怎么用_如果 (If) | Python 中的条件控制语句详解

    点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享! 前言 Hi,大家好,我是可乐,生活中 ...

  2. PL/SQL块中不能直接执行DDL语句(错误)

    在PL/SQL块中不能直接执行DDL语句 (后篇批量删除表时却明明在PL/SQL块中使用了DROP,而且执行成功,厄...自打三十大板...谁来救我...) declare     v_string  ...

  3. [转载] python中的且语句_简单探讨python中的语句和语法

    参考链接: 在Python中解包:并行分配之外 python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了, ...

  4. JS: break 终止循环 continue跳过循环体中不想执行的语句

    二者之间的区别 1.终止循环(break)             在循环体中可以使用break关键字来立即终止循环,并跳出循环体,代表循环结束.             break不仅可以使用在sw ...

  5. python执行不了elif_浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...

  6. pythonfor循环语句1到7、不要4_【IT专家】关于Python中的for循环控制语句

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 关于 Python 中的 for 循环控制语句 2010/06/14 500461 #第一个:求 50 - 100 之间的质数 import ma ...

  7. devc 无法编译循环语句_鸡生蛋还是蛋生鸡?详解第一个编译器是怎么来的~

    详解编译器自举原理 不知道你有没有想过,某种编程语言的第一个编译器是怎么来的呢?这不就是"鸡生蛋,蛋生鸡"的问题吗? 先说最后的结论:任何一种语言的第一个编译器肯定是使用其他语言写 ...

  8. switch中case后可以是表达式吗_自学C++基础教程【流程控制语句】(switch语句 )...

    switch语句:又被称之为 分支选择语句,它提供了一种更方便的方法来实现深层嵌套的if.else逻辑: switch语句先计算表达式的值,并逐个与其后的常量表达式的值相比较,当表达式的值与某个常量表 ...

  9. python中while语句是_如何在Python中使用while语句[适合初学者]

    while语句是重复循环的语句,那么如何用Python编写,下面Gxl网就带领大家来学习一下Python中使用while语句.[推荐阅读:Python视频教程] 一:什么是while语句?Python ...

最新文章

  1. LeetCode 1242. Web Crawler Multithreaded--Java 解法--网路爬虫并发系列--ConcurrentHashMap/Collections.synchroni
  2. Get Started with Field Service
  3. html rotate()函数,CSS rotate()用法及代码示例
  4. 一学就废的三种简单排序【冒泡、插入、选择】
  5. shelve模块简单用法
  6. java监控gc线程_Java应用性能监控系统,使用JMX实现,实现了类加载监控、内存监控、线程监控、GC监控...
  7. 测试工程师/测试开发面试题整理
  8. 前端布局layout总结,左右布局,上中下布局
  9. 自己实现的promise
  10. 计算机主机的组成部分,计算机主机的组成是有哪些
  11. 无刷直流电动机及其控制
  12. 有道云笔记快捷键大全+修改
  13. 关于Eureka的自我保护模式
  14. 二项式展开推广与微积分的关系
  15. 常见的文件头信息对照表
  16. 用python的opencv画出一棵树的骨架
  17. CorelDRAW X3 金箔织绣材质特效——金箔绣球(1)
  18. 微信吸粉技巧:微信群怎么玩?
  19. 喜讯 雨笋教育优秀学员荣获望城区网络安全攻防演练二等奖
  20. Lory Carousel滑块具有CSS动画和触摸支持

热门文章

  1. 笔录软件在linux系统,linux下f但tp服务器架设笔录.doc
  2. 数字化时代需要迎接新技术
  3. SpringBoot2.0集成WebSocket,实现后台向前端推送信息
  4. joyui版本和android版本,黑鲨手机2 Pro 最新JOYUI12 DLTR2010300CN00MQ4 完美root 游戏宏功能 狩猎模式 精品刷机...
  5. 【转】何谓智能视频监控技术与应用
  6. ecology9.0泛微OA定时任务之调用外部数据源数据案例
  7. 联合概率、边际概率、条件概率
  8. Adaptive Hash Index(自适应hash索引)
  9. C# Dictionary分别按Key,Value值升降序排序
  10. TOP Network项目周报:5月4日-5月12日