if语句,控制程序走向哪里
python的if语句,是你接触到的第一种可以控制程序走向的技术,是驯服程序的重要手段,是你第一次尝试用代码表达逻辑。
以判断闰年为例,闰年的判断逻辑总结如下:如果年份是4的整数倍,一般来说是闰年,但如果年份是100的整数倍,那么必须同时是400的整数倍才是闰年。
判断闰年的逻辑并不复杂,但将他们拆解分析并转化为代码,于初学者而言则并非易事。不了解编程的人总以为做一件事情对应着一条具体的计算机指令,只要掌握了这个指令,就可以让计算机给出自己想要的结果。
然而实际的情况是,计算机一无所获知,需要你用最基础的指令经过一系列的拼装组合,得到一组紧密配合的指令,这一组指令就是我们最终所写出来的代码。
计算机如何判断一个年份是否为4的整数倍呢?
首先,在程序里,要将年份存储为int类型的数据,然后对4取模, 假设年份是是2020年,那么对4取模的表达式就是2020 % 4,如果取模的结果是0,那么2020必然是4的整数倍,取模的过程就是除法取余数的过程,小学就已经学过了。
ok,分析到这里,就要用到if语句了,你在程序里,必须对某个事情的真假做出判断,并依据结果来决定接下来要做什么,这就是if语句的作用。
3.1 什么是逻辑分支
if 2020 % 4 == 0:
pass
else:
print('不是闰年')
以上,我写出了程序的主体结构,如果2020不能被4整除,一定不是闰年,在else语句块里使用print语句输出结果。
if语句,elif语句,else语句,形成了多个逻辑分支,就如同一条条通道。每一条通道都有进入的条件,只有符合条件要求时,才能进入,而一旦进入了某一条通道,就要在这个通道里执行下去,直到通道结束。在这个通道里,你的一切思考都建立在进入这个通道的初始条件之上,掌握这一点,你的思绪就不会混乱。
现在的程序,只有两个逻辑分支,第一个逻辑分支里,我只写了pass, 这部分内容需要进一步的分析,能否被4整除,决定了进入哪个分支。
3.1 如何决定进入哪个逻辑分支
if语句配合elif, else 可以构成多个逻辑分支,在一个逻辑分支内,又可以编写if语句,形成嵌套,那么程序在执行时,如何决定进入哪个逻辑分支呢?
关于这个问题,要把握住以下两点
程序由上至下,顺序执行
同一个层级的逻辑分支,最多只会进入其中一个
程序由上至下,顺序执行
不论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.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整除才是闰年,否则不是。
前面为了讲解的方便,使用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('不是闰年')
if, elif, else 语句创建出逻辑分支,程序在执行时,进入哪个分支,取决于表达式的真假
一旦进入某个逻辑分支,程序就要在这个逻辑分支里执行,直到这个逻辑分支执行结束
代码,是一系列指令的组合,而你是那个组合指令的人,深刻理解每一条指令是务必做到的事情