直到现在,我们所学的所有程序都是一行一行地执行代码。中间不跳过任何一行。下面是一个例子:通过键盘方向键或滚动轴来查看每行代码。
这节课我们要学一个新内容,条件从句。条件从句指在一定条件被满足的情况下,某些程序运行,而在不被满足的情况下,某些程序不运行。比如说,我们将以下程序做更改:当一个人的年龄足够大时,输出一个额外的信息。那么我们需要加两行:if age > 65:
(意思是"如果年龄
大于65岁") 和 print('Enjoy retirement!')
。现在我们来再次按行运行一下程序:
这里要注意,print语句被跳过了因为age
只有31! 那么把出生年份
改为1928,同样的程序再次运行 又会是什么结果呢?
注意到区别了么?后一个程序(age
是85的)打印出了两行,没有跳过任何一行。这就是if statement的目的:先检查一些条件(
age
大于65么?),只有当这些条件成立时再运行某些程序 (打印Enjoy retirement!
)。
我们把被检查的条件叫做condition,把如果条件成立则运行的程序叫做body。Body需要被缩进,也就是说,在这一行的开头需要有一些额外的空格(参考以上代码)。Body可以包含不止一个语句:多写几行缩进的程序即可达到此目的。下面是一个例子。
- 在控制台或观察仪中运行此程序,其中出生年份为1982年。两个缩进的行都被跳过了。
在下一个练习中,你需要写一个有关布尔比较的程序。在上面的那个例子中我们已经看到了"if x > y:
"意味着"如果x
大于y
"。下面的程序可能会有帮助:
if x < y:
表示"如果x小于y"if x >= y:
表示"如果x大于等于y"if x <= y:
表示"如果x小于等于y"
条件语句的格式
- 第一行,
if «condition»:
有三个部分:if
,«condition»
必须是一个是否判断(下面会有详细介绍),以及冒号:
- 然后就是由一行或多行缩进组成的body。空格多少(缩进的多少)不重要, 但是缩进如果不一致就会出现问题因为Python会根据缩进的多少来判断哪里是body开始,哪里结束。
条件语句的body部分就属于编程“block”。在之后的学习中,我们会经常看到Blocks,比如"for loops"以及编写自己的程序。(某些其他的计算机语言在block两边加上大括号
.){}
下一个练习其实是合四个练习为一。通过改变程序中各行的顺序可以得到不同的结果。点击每一行来打开;点开的顺序随意。和以前一样,拖拽每一行来改变顺序。
对,错以及布尔
到目前为止,在if
语句里面的«condition»
部分,我们见到了很简单的数字大小的比较x > y
,当x
大于y
时这个命题是正确的,当x
小于等于y
时这个命题是错误的。更通常化一些,任何的对/错值都叫做Boolean (see George Boole)。在Python中,bool
表示Boolean values;只有两个bool
值,True
和False
在Python中,在直接使用bool
值True
和False
时需要大写第一个字母,否则就会出错。
Boolean比较
运算符>
, <
, <=
, 和 >=
比较两个数字,返还一个布尔值。还有两个方式来比较数字:
x == y
是等式运算符, 如果xy
相等,就返还True
x != y
是不等运算符, 如果x
和y
不相等,返还True
==
和!=
也适用于字符串等其他类型数据
(两个等号==
是因为一个等号x = «expression»
已经有"将变量x
赋予«expression»值的意义了。将=
与==
弄混是一个常见的错误来源.)
下面是一个练习,我们会接触到一种新的比较方式。
我们刚刚介绍了 block 的概念 (几行代码聚在一起,缩进同 样的程度)。你可以在 block 里面嵌套另一个 block:
if password=='openSesame': print('User logged on.') if hour>17: print('Good evening!') print('Enter a command:')在这里,外面的block由四行代码组成,里面的block由1行代码组成:
if password=='openSesame':print('User logged on.')
if hour>17:print('Good evening!')print('Enter a command:')
条件语句
hour>17
是错的(内部的block被跳过了),外围的block中print('Enter a command:')
一行仍会被运行。现在,你需要用嵌套的blocks来写一个比较复杂的计算年龄的程序。
在之后的第9课里,通过使用tt>else
和
elif
(或者如果)指令,和Boolean运算符"and", "or"和"not",我们会看到设计多个boolean语句的程序可以被简化的情况。现在你可以进行下一课的学习了。