3.1 if
条件控制是很常用的程序指令,拿我们常见的一种场景,去买高铁票,小孩是半票,一般是通过身高来判断,通常规则是低于1.5米半票,年龄小于2岁是免票,这种就是典型的条件控制。
Python 里用 if 来做这种判断,像上面的场景可以用这样的代码来处理
1 | age = 10 |
上面这段代码是先定义了 3 个变量,分别是年龄 age 是 10 岁,身高 height 是 1.45 米,高铁票原价 price 是 50 元。然后程序先判断身高,如果低于 1.5 米就把价格变为半价,用 price 乘以 0.5 后再赋予 price 变量,就是改变 price 的数据。然后程序再判断年龄,如果小于2岁就是免票,也就是票价为 0。最后把价格打印出来。
观察一下上面代码,我们能发现 if 指令的用法:if 后面是条件判断语句,后接冒号 ,接着下面的指令缩进了。这就是 if 的使用规则,缩进是很重要的概念,Python 用缩进来表示不同的程序块。比如 if 指令下面的缩进是属于 if 指令的程序块,也就是在 if 指令的条件判断成立时就会执行它的程序块,如果条件判断不成立就不会执行。
对于整个代码块来说,这个程序首先是一个大的程序块,代表整个程序,然后用 if 指令和对应的缩进形成小的程序块,多个小的程序块共同组成最大的程序块。程序块里可以有多行代码,只要保持相同的缩进就表示同一个程序块,例如下面这样:
1 | if height < 1.5: |
其中的
1 | price = price * 0.5 |
和
1 | print("Half price") |
这两行属于同一个程序块,都是属于 if height < 1.5: 指令的。
Python 的这种缩进规则既属于语言语法,也属于排版风格。会使每个 Python 程序都看起来比较相像,不会像其他很多语言。代码排版风格往往多种多样,差异很大,让你阅读不同排版风格的代码,会比较困难。而代码大部分时间是用来阅读的,所以清晰一致的排版风格非常重要。另外,缩进是逐级进行的,例如:
1 | def... |
就像军衔一样,从元帅到上将、中将、少将再到后面的一等兵、二等兵……程序也是如此,逐级类推。
3.2 if … else
如果天气下雨你就打伞,如果不下雨就不用打伞。
用程序代码怎么表示这句话?
用刚才学过的 if 指令可以这样写:
1 | weather = "rainy" |
代码是能正常运行的,但现在有更简单的方式去表示上面的意思:
1 | weather = "rainy" |
if 后面用 else 来表示 if 条件判断不成立的情况,也就是非if的情况。请注意观察,else 后面也是有冒号: ,另外下面的程序块也是缩进的,说明下面缩进的程序代码是属于 else 指令的,是在 else 指令有效时才会执行,也就是在 if 条件判断不成立时才会使 else 指令有效。
进一步的还有 else if,也就是在 else 后面进一步做条件判断,这稍有点复杂,在需要用到的时候可以上网查找对应的资料。
3.3 实践练习时间
过去这个章节我们学习了变量、列表和对象,现在开始做几个实践练习,可以用在线 Python 练习环境,也可以用本地安装的 Python 环境。练习时注意一定要让程序能正常运行,并且按要求输出结果。
练习1:
定义一个变量 a 并赋值 50,用 if 指令判断 a 是否小于 100,如果小于就打印 “a is smaller than 100.”。程序能成功执行后再修改变量 a 的值为 120,再执行一次程序,看一下运行结果是什么。
练习2:
定义一个变量 age 并赋值 10,表示 10 岁,然后用 if 指令判断是否小于 12,如果大于就打印 “This is a child.”,否则就打印 “This is not a child”。程序能成功执行后再修改变量 age 的值为 20,再执行一次程序,看一下运行结果是什么。