if语句,控制程序走向哪里

1. 你来控制程序如何运行

python的if语句,是你接触到的第一种可以控制程序走向的技术,是驯服程序的重要手段,是你第一次尝试用代码表达逻辑。

以判断闰年为例,闰年的判断逻辑总结如下:如果年份是4的整数倍,一般来说是闰年,但如果年份是100的整数倍,那么必须同时是400的整数倍才是闰年。

判断闰年的逻辑并不复杂,但将他们拆解分析并转化为代码,于初学者而言则并非易事。不了解编程的人总以为做一件事情对应着一条具体的计算机指令,只要掌握了这个指令,就可以让计算机给出自己想要的结果。

然而实际的情况是,计算机一无所获知,需要你用最基础的指令经过一系列的拼装组合,得到一组紧密配合的指令,这一组指令就是我们最终所写出来的代码。

2. 4的整数倍

计算机如何判断一个年份是否为4的整数倍呢?

首先,在程序里,要将年份存储为int类型的数据,然后对4取模, 假设年份是是2020年,那么对4取模的表达式就是2020 % 4,如果取模的结果是0,那么2020必然是4的整数倍,取模的过程就是除法取余数的过程,小学就已经学过了。

ok,分析到这里,就要用到if语句了,你在程序里,必须对某个事情的真假做出判断,并依据结果来决定接下来要做什么,这就是if语句的作用

3. 逻辑分支

3.1 什么是逻辑分支

if 2020 % 4 == 0:
    pass
else:
    print('不是闰年')

以上,我写出了程序的主体结构,如果2020不能被4整除,一定不是闰年,在else语句块里使用print语句输出结果。

if语句,elif语句,else语句,形成了多个逻辑分支,就如同一条条通道。每一条通道都有进入的条件,只有符合条件要求时,才能进入,而一旦进入了某一条通道,就要在这个通道里执行下去,直到通道结束。在这个通道里,你的一切思考都建立在进入这个通道的初始条件之上,掌握这一点,你的思绪就不会混乱。

现在的程序,只有两个逻辑分支,第一个逻辑分支里,我只写了pass, 这部分内容需要进一步的分析,能否被4整除,决定了进入哪个分支。

3.2 如何决定进入哪个逻辑分支

if语句配合elif, else 可以构成多个逻辑分支,在一个逻辑分支内,又可以编写if语句,形成嵌套,那么程序在执行时,如何决定进入哪个逻辑分支呢?

关于这个问题,要把握住以下两点

  1. 程序由上至下,顺序执行
  2. 同一个层级的逻辑分支,最多只会进入其中一个

程序由上至下,顺序执行

不论if,elif, else 构成多少逻辑分支,都要遵守顺序执行的规则

if expr_1:
    block_1
elif expr_2:
    block_2
elif expr_3:
    if expr_3_1:
        block_3_1
    elif expr_3_2:
        block_3_2
    else:
        block_3_3
elif expr_4:
    block_4
else:
    block_5

程序由上至下,顺序执行,逐个判断表达式,如果expr_1成立,则进入block_1执行,否则判断expr_2是否成立,以此类推, 从expr_1到expr_4如果都不成立,那么则执行block_5。

同一个层级的逻辑分支,最多只会进入其中一个

假设expr_3表达式成立,那么则进入到block_3继续执行代码,不论block_3如何执行,都不会再去判断expr_4了。他们处于同一个层级,同一个层级的逻辑分支,只能进入其中一个,一旦决定进入某个逻辑分支,其他逻辑分支的判断条件都会被忽略掉。

4. 可以被4整除的分支

4.1 不能被100整除的分支

在年份可以被4整除的这个分支里,继续考虑年份能否被100整除,如果不能被100整除,那必然是闰年了。

if 2020 % 4 == 0:
    if 2020 % 100 == 0:
        pass
    else:
        print('是闰年')
else:
    print('不是闰年')

4.2 能被100整除的分支

如果可以被100整除呢,还要考虑能否被400整除,这样,又新创建出两个逻辑分支。

if 2020 % 4 == 0:
    if 2020 % 100 == 0:
        if 2020 % 400 == 0:
            print('是闰年')
        else:
            print('不是闰年')
    else:
        print('是闰年')
else:
    print('不是闰年')

在能被100整除的分支里,必须满足被400整除才是闰年,否则不是。

5. 人机交互

前面为了讲解的方便,使用2020作为例子进行讲解,而真正有意义的程序应当是接收用户的输入,对输入的数据进行运算处理,你可以使用input函数来接收用户在终端的输入,对输入的年份是否为闰年,进行判断。

year = input("请输入一个年份:")
year = int(year)


if year % 4 == 0:
    if year % 100 == 0:
        if year % 400 == 0:
            print('是闰年')
        else:
            print('不是闰年')
    else:
        print('是闰年')
else:
    print('不是闰年')

6. 总结

  1. if, elif, else 语句创建出逻辑分支,程序在执行时,进入哪个分支,取决于表达式的真假
  2. 一旦进入某个逻辑分支,程序就要在这个逻辑分支里执行,直到这个逻辑分支执行结束
  3. 代码,是一系列指令的组合,而你是那个组合指令的人,深刻理解每一条指令是务必做到的事情

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案