• 写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while


    ⛳️ 前言

    2022 年真的太难了,没想到写给 78 技术人社群的第 2 篇学习博客拖延了这么久的时间,估计第一批成员已经学有所成了吧。

    本篇博客继续给大家带来 Python 中的重点知识,分支语句

    任何一门语言,基本都包含下述三种逻辑:

    1. 顺序语句;
    2. 判断语句;
    3. 循环语句。

    本篇博客要解决的就是后两种语句在编程中的落地实现,由于顺序语句就是正常的线性思维,所以不再进行特别说明。

    在正式开始学习前,先用中文写一下两种语句的基本逻辑:

    判断语句就是 正确的时候执行一段代码,错误的时候执行另一段代码,循环语句是 当满足某条件,就反复执行

    ⛳️ if 语句

    上一篇博客 中,咱已经了解了 Python 字符串相关知识,肯定有同学说:“你怎么没继续讲变量,整型变量,运算符这些知识点呀,不按套路出牌?”。

    同学,当你问出这个问题的时候,你已经知道这些概念,那我们就不用多讲了,继续学就行了

    if 语句是 Python 语言中最基本的条件判断语句,它的基本逻辑就是*当某个表达式为真的时候,就执行其内部代码块*,理解这句话就已经掌握了 if 语句语法,而接下来要做的就是用代码将其实现即可。

    if 条件表达式:
    	代码第一行
    	代码第二行
    
    • 1
    • 2
    • 3

    上述表达可以称作伪代码,在学习的时候,可以借助该形式理解程序结构和梳理逻辑。

    写代码的时候,一定要注意中英文标点符号的问题。

    学习任何编程,语法格式和概念名词都是重点,理解它们才能快速的进入编程大门,所以这里必须要岔开话题,对概念名词进行特殊说明。

    第一个要点
    if 是 Python 里面的关键字,你不能把这个特殊的单词用作变量名,函数名,类名等,下文学到的 while 也是关键字/保留字。

    第二个要点
    条件表达式:很重要的概念,是编码领域的抽象名词,先理解,在应用。

    条件 二字表是非表真假
    表达式 在 Python 中表示的是一个值,这个就特别抽象了,表达式=值,所以在看一下下述代码:

    1 # 表达式
    1+1 # 表达式
    2<6 # 表达式
    True # 表达式
    
    • 1
    • 2
    • 3
    • 4

    这些抽象概念其实才是学编程真正的难点(好像理工科知识都有类似的特点)。此时在把 条件表达式 联系在一起就容易理解了,条件是真假,表达式是一个值,所以 条件表达式是一个真假值,这里一定要理解到位,否则后面学习起来会碰到障碍(说白了,就是跟不上了)。

    再补充一个知识点,啥是真假值?在 Python 中,TrueFalse 这两个值表示真假,而它们所在的数据类型叫做布尔类型,转换成普通语句就是:布尔类型的变量仅有两个值,分别是 TrueFalse

    你会发现,编程就是这么有趣,理解概念之后,很多问题解释起来就简单多了。

    写下你的第一个分支语句代码吧:

    if True:
        print("我是 if 语句")
    
    • 1
    • 2

    输出内容如下所示:

    写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while

    语法结构掌握之后,就可以在条件表达式下功夫进行学习了,例如判断下述代码是否为正确的条件表达式。

    1 # 条件表达式
    0 # 条件表达式
    5>2 # 条件表达式
    a # 条件表达式
    "" # 条件表达式
    1==2 # 条件表达式
    False # 条件表达式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    就上述一段代码,还能延申出很多知识点,但是先放一下,后文我们继续学习,先把 if 语句盘完,其相关知识点还涉及两个,一个是 else 语句,一个是 elif 语句。

    依旧是先看一段代码,然后在理解:

    age = 18
    name = "橡皮擦"
    if age <=18:
        str_ = "本文作者: {},她的年纪是:{}".format(name,age)
        print(str_)
    else:
        str_ = "本文作者: {},她的年纪是:{}".format(name,age)
        print(str_)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出内容如下所示:

    写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while

    上述代码出现了一个新的语句 else:,简单翻译就知道其表示否则的意思,也就是说当 if 语句后跟的 条件表达式 不为真时,那执行 else 语句中的代码。

    这里最大的难题,也是初学者要解决的难点,并不在语法结构和代码理解上,而是代码层级,直接进入读代码部分,如果下述内容都可以理解,else 语句也就彻底掌握了。

    if True:
        print("第一个 if 语句")
    
    if True:
        print("第二个 if 语句")
        if False:
            print("第三个 if 语句")
        else:
            print("第一个 else 语句")
    
        if True:
            print("第四个 if 语句")
    else:
        print("第二个 else 语句")
    
        if True:
            print("第五个 if 语句")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    这只是演示代码,实战中代码要更加复杂,如果你可以直接阅读,或明白我为何展示这段代码,else 语句在初学阶段最难的是层级 二字。
    如果单纯的看代码无法理解,在配合图片为大家展示一下:

    写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while
    注意上图标记 if else 缩进相同的为一组,并且 if 语句可以单独存在,但 else 语句不可以,直接使用就是语法错误(invalid syntax)。
    写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while
    这里有一个小提示,在 Python 代码缩进的时候,要习惯使用 Tab 键进行操作,而不要敲空格键(官方建议每层缩进为 4 空格,可以在 IDE 中对 Tab 键进行设置)。

    if 语句和 else 语句都可以进行嵌套,这一点要牢记。

    if 语句的知识点还没有完全说完,还有一个语句,叫做 elif

    其实这个也很容易理解,elif 就是 else if 的简写,例如下述需求。

    用户选择性别的时候,可以选择男,女,保密 三个选项,在数据库存储的时候,男对应 1,女对应 0,未知对应-1。

    上述需求转换为代码之后,就是分支语句由三部分构成,代码示例如下所示:

    sex = "男"
    if sex == "男":
        db_sex = 1
    elif sex == "女":
        db_sex = 0
    else:
        db_sex = -1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    学习 elif 的时候,要注意下述三点提示信息:

    • elif 语句可以出现多次;
    • elif 语句必须紧接 if 语句出现,不能出现在 else 语句之后;
    • elif 语句不能单独出现;
    • elif 语句可以与 if 语句一起出现。

    上述内容都是文字上的描述,依旧抽象,具体内容我们查看代码。

    # `elif` 语句可以出现多次;
    if True:
        pass
    elif True:
        pass
    elif True:
        pass
    elif True:
        pass
    # 上述代码是正确的
    # -----------------------------------------------------------
    
    # `elif` 语句必须紧接 `if` 语句出现,不能出现在 `else` 语句之后;
    if True:
        pass
    elif True:
        pass
    elif True:
        pass
    elif True:
        pass
    else:
        pass
    # 上述代码是正确的
    if True:
        pass
    else:
        pass
    elif True:
        pass
    elif True:
        pass
    
    # 上述代码是错误的
    # -----------------------------------------------------------
    
    
    # `elif` 语句不能单独出现;
    elif True:
        pass
    elif True:
        pass
    # 上述代码是错误的
    # -----------------------------------------------------------
    
    # `elif` 语句可以与 `if` 语句一起出现。
    if True:
        pass
    elif True:
        pass
    # 上述代码是正确的
    # -----------------------------------------------------------
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    elif 语句最重要的知识点内容,都在上述代码中了,反复学习即可。

    下面在把刚刚欠的知识点进行一下补充。

    写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while

    1 为什么是一个条件表达式,按照咱们刚刚学过表达式的概念判断,其应该为整数表达式。
    没错,但是因为我们将 1 放在了 if 语句的后面,所以语法规范要求其转换为条件表达式,所以可以得到下述结论。

    条件表达式仅有 2 个结果,一是 True,另一个 False。

    1. 任何非 0 整数都可以转换为真,即 True;
    2. 任何非空字符串都可以转换为真,即 True;
    3. ><== 等符号是条件运算符,即使用该运算符之后,会返回一个布尔值;

    ⛳️ while 语句

    在 Python 中最先接触的循环语句,就是 while 循环,其语法格式如下所示:

    while 条件表达式:
    	待执行的代码块
    	待执行的代码块
    不属于 while 语句的代码块
    
    • 1
    • 2
    • 3
    • 4

    有了前文的铺垫,这时你最先理解的依旧是 条件表达式 的重要性,当其值为真时,执行 while 语句内部代码,为假时,不执行。

    接下来直接进行代码阅读环节。

    i = 0 # 声明一个全局变量
    while True:
        # 变量执行+1操作
        i+=1
        # 输出变量 i
        print(i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行代码,会发现出现了 死循环 现象,该情况是未来我们要尽量避免的代码。

    死循环:代码无终止状态,一直运行下去。

    上述代码声明了一个全局变量,然后条件表达式 设置为 True,此时一直为真,所以循环语句内部的代码会一直运行下去,每次都进行 +1 操作,即得到如下结果。

    写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while
    一般情况下,我们编写循环代码是需要一个终止状态的,请阅读如下代码:

    i = 0
    while i<10:
        i+=1
        print(i)
    
    • 1
    • 2
    • 3
    • 4

    代码运行结果如下所示:
    写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while
    当输出数字 10 之后,代码停止运行,即当 条件表达式 i<10 不成立的时候,代码停止运行,那条件表达式为 False 是如何形成的,就涉及 while 语句的运行规则了,还是文字说明。

    • 第一次循环:当 i = 0 的时候,满足 i<10 这一条件,所以执行 while 内部代码,即执行 i+1,并且输出 i;
    • 第二次循环:第二次循环 i = 1 ,重新到条件表达式 i<10 位置进行判断,满足这一条件,所以执行 while 内部代码,即执行 i+1,并且输出 i;
    • 第三次循环:第三次循环 i = 2 ,重新到条件表达式 i<10 位置进行判断,满足这一条件,所以执行 while 内部代码,即执行 i+1,并且输出 i;
    • ……
    • 第 N 次循环,此时 i =10,已经不满足 i<10 这一条件了,终止循环,代码结束运行,这就是 while 循环的运行过程。

    如果在代码运行过程中,出现了 死循环 情况,可以使用组合键 Ctrl+C 终止代码运行。

    掌握 while 循环的关键点就是掌握其运行流程!

    实战中 while 语句可以进行嵌套,但是尽量不要超过三层,否则会大幅度增加代码理解难度,例如你可以阅读下述代码,然后吐槽一下这是哪个队友写的。

    a = 10
    while a < 15:
        print("a=",a)
        a+=1
        b = 1
        while b<5:
            print("b=",b)
            b+=1
            c = 1
            while c < 5:
                print("c=",c)
                c+=1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    临摹上述代码,自行在 Python 环境中进行测试,你会劝自己以后不写三层循环的。

    while 语句中也可以嵌套 if 语句,这里还需要补充两个知识点,即两个语句。

    • break 语句:终止当前循环;
    • continue 语句:跳过当前循环。

    下面的环节依旧是阅读代码,理解逻辑。

    i = 0
    while i<5:
        i+=1
        if i==3: # 当 i == 3 的时候,跳出当前循环
            continue
        print('i=',i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    代码运行结果如下所示,其输出内容跳过了 i = 3,然后循环继续运行,这就是 continue 的价值。

    写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while

    上述代码换做 break 之后,你可以继续查看效果。

    i = 0
    while i<5:
        i+=1
        if i==3: # 当 i ==3 的时候,终止当前循环
            break
    
        print('i=',i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    代码运行结果,当 i=3 时,循环不在运行。
    写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while

    在代码实战中,continue 跳过当前循环,这一场景使用较少。

    ⛳️ 总结

    第二天的学习到这里就可以了,本篇博客的重点就分为两部分,if 语句和 while 语句,学习的难点是条件表达式,本文学习完毕,你已经掌握了程序运行的三大语句了。

    课后题

    • 写一个颜色翻译器,可以识别 10 种颜色;
    • 实现在字符串中查找子字符串,例如 梦想橡皮擦的 Python 专栏写的还不错,在其中查找,如果有,返回真;
    • 输出 1-100 之间的所有偶数,所有基数,所有 5 的倍数;

    📢📢📢📢📢📢
    💗 你正在阅读 【梦想橡皮擦】 的博客
    👍 阅读完毕,可以点点小手赞一下
    🌻 发现错误,直接评论区中指正吧
    📆 橡皮擦的第 723 篇原创博客

    从订购之日起,案例 5 年内保证更新

  • 相关阅读:
    mysql索引最左匹配原则的理解?(绝对牛逼)
    自定义一个注解,用它标记的执行并于给定值做对比(即简单的junit)
    (十七)Spring6整合JUnit
    电脑技巧:推荐基于浏览器的远程桌面访问控制工具
    SessionManagementConfigurer和SecurityContextConfigurer
    LeetCode - 解题笔记 -201- Bitwise AND of Numbers Range
    第十二届蓝桥杯模拟赛第三期
    Japan Registry Services (JPRS) Programming Contest 2024 (AtCoder Beginner Contest 339)
    在常州“超级虚拟工厂”,中国智造正在“原力觉醒”
    swift ui 布局 ——Stack(HStack、VStack、ZStack)
  • 原文地址:https://blog.csdn.net/hihell/article/details/127124039