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

Posted 梦想橡皮擦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while相关的知识,希望对你有一定的参考价值。

不允许你没有加入社群!

⛳️ 前言

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

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

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

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

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

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

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

⛳️ if 语句

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

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

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

if 条件表达式:
	代码第一行
	代码第二行

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

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

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

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

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

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

1 # 表达式
1+1 # 表达式
2<6 # 表达式
True # 表达式

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

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

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

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

if True:
    print("我是 if 语句")

输出内容如下所示:

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

1 # 条件表达式
0 # 条件表达式
5>2 # 条件表达式
a # 条件表达式
"" # 条件表达式
1==2 # 条件表达式
False # 条件表达式

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

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

age = 18
name = "橡皮擦"
if age <=18:
    str_ = "本文作者: ,她的年纪是:".format(name,age)
    print(str_)
else:
    str_ = "本文作者: ,她的年纪是:".format(name,age)
    print(str_)

输出内容如下所示:

上述代码出现了一个新的语句 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 语句")

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


注意上图标记 if else 缩进相同的为一组,并且 if 语句可以单独存在,但 else 语句不可以,直接使用就是语法错误(invalid syntax)。

这里有一个小提示,在 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

学习 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
# 上述代码是正确的
# -----------------------------------------------------------

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

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

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

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

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

⛳️ while 语句

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

while 条件表达式:
	待执行的代码块
	待执行的代码块
不属于 while 语句的代码块

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

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

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

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

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

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


一般情况下,我们编写循环代码是需要一个终止状态的,请阅读如下代码:

i = 0
while i<10:
    i+=1
    print(i)

代码运行结果如下所示:

当输出数字 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

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

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

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

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

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

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

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

i = 0
while i<5:
    i+=1
    if i==3: # 当 i ==3 的时候,终止当前循环
        break

    print('i=',i)

代码运行结果,当 i=3 时,循环不在运行。

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

⛳️ 总结

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

课后题

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

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

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

以上是关于写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while的主要内容,如果未能解决你的问题,请参考以下文章

写给Python社群的第9课:学一下文件处理,Python基础提高篇

写给Python社群的第5课:Python 函数,真的难吗?

写给Python社群的第10课:Python 研发 Windows桌面程序,长长长的文

写给Python社群的第11课:Python线程,进程,协程,3个毫无关系的兄弟

写给Python社群的第11课:Python线程,进程,协程,3个毫无关系的兄弟

写给Python社群的第7课:用 Python 模块了不起呀?就是了不起