Prev: Python3Ⅰ:基本概念
Next: Python3Ⅲ:函数 & 模块
1 布尔值 & 比较
1.1 布尔值
Python中的另外一种类型叫做[ruby=Boolean]布尔值[/ruby]。布尔值有两个可能的值:[ruby=真]True[/ruby]和[ruby=假]False[/ruby]。它们可以通过对值的比较来产生,在这个例子下,要用到相等操作符==。
注意不要搞混赋值(一个等号)和比较(两个等号)。 Part题: Python中两个布尔值是什么? A. True和False B. true和false C. [ruby=真实]Truth[/ruby]和[ruby=虚假]Falsity[/ruby] |
1.2 比较(一)
另外一个比较操作符,叫做不等操作符(!=),当被比较的两个值不相等时算作True,如果相等就算作False。
Part题: 这行代码的输出是?
A. True B. False |
1.3 比较(二)
Python也有判断一个数字是否大于或小于另一个数字的操作符,分别是 > 和 < 。
Part题: 这行代码的输出是?
A. True B. False |
1.4 比较(三)
大于等于和小于等于的操作符分别是 >= 和 <= 。 它们和大于/小于操作符差不多,除了它们在两个值相等的时候都会返回True。
大于/小于操作符也可以用来按字典比较字符串(英文单词的字母顺序由其组成字母决定)。 Part题: 这行代码的输出是?
A. 出现错误 B. True C. False |
2 if语句
2.1 if语句(一)
你可以用if语句来运行一段需要条件符合才能运行的代码。 如果一个条件被算作True,那么就运行一段代码。否则,就不运行那段代码。 一个if语句长这样:
Python用缩进(每行开头的空格)来界定代码块。其他语言,如C,使用方括号来做到这一点,但是在Python中缩进是强制性的;没了它,程序就不会工作。如你所看到的一样,if中的语句应该被缩进。 Part题: if语句中的哪些部分要被缩进? A. 全部部分 B. 第一行 C. if中的语句 |
2.2 if语句(二)
这是一个if语句的举例:
表达式先检测10是不是大于5。由于10确实大于5,被缩进的语句被运行了,输出“10大于5”。然后,没有被缩进的语句,不属于if语句的范围,被运行了,输出“程序终结”。 注意if语句表达式后面的冒号 ( : )。 由于这个程序包含几行代码,你应该为它创建一个单独的文件运行。 Part题: 下面代码的输出是?
A. 没有输出 B. five C. eight |
2.3 if语句(三)
为了实现更复杂的条件检测,if语句可以被嵌套,也就是if语句中还有if语句。这也就是说里面的if语句是外面的if的一部分。这是一种检测几条条件是否都成立的方法。 举例:
结果:
Part题: 下面代码的输出是?
|
3 else语句
3.1 else语句(一)
一个else语句要跟随在一个if语句的后面,包含着当if语句的条件被计算为False时要运行的代码。 和if一样,代码块要缩进。
结果:
Part题: 下面代码的结果是?
A. 没有输出 B. if C. else |
3.2 else语句(二)
你也一样可以连接一串if和else语句来判断一系列可能性是否为真。 举例:
结果:
Part题: 填空以比较变量,并输出对应文字:
|
3.3 elif语句
elif语句(else if的缩写)是if和else语句连接时的快捷写法。一串if elif语句可以在最后有一个else语句,在当之前的if或elif语句的条件没有一个被算作True时执行。 举例:
输出:
在其他编程语言中,与elif等价效果的语句有不同的形式,包括else if、elseif或elsif。 Part题: “else if”的缩写是: |
4 布尔逻辑
4.1 布尔逻辑
对于那些需要不止一个条件的if语句来说,布尔逻辑可以为其组合出更复杂的判断条件。 Python中的布尔操作符有[ruby=与]and[/ruby]、[ruby=或]or[/ruby]和[ruby=非]not[/ruby]。 and操作符需要两个参数,在只有两个参数都是True的时候自身才算作True。否则,它就算作False。
Python用单词作为它的布尔操作符,但在很多其他编程语言中用诸如 && 、 || 和 ! 的符号。 Part题: 下面代码的结果是?
A. true B. false C. true false |
4.2 布尔或
or操作符也需要两个参数。当两个参数中至少有一个参数为True的时候才算作True,也就是说只有在当两个参数都是False的时候才返回False。
Part题: 填空输出“Welcome”。
|
4.3 布尔非
不像我们到现在为止看到的其他操作符,not只需要一个参数,并且将它反相。 not True的结果是False,not False的结果是True。
你可以用布尔操作符将几个判断语句连接在一起,作为if语句的条件。 Part题: 下面代码的结果是?
|
5 运算优先级
5.1 运算优先级(一)
运算优先级是编程中一个举足轻重的概念。它是对数学中的运算顺序的一个扩展(乘法先于加法等),扩展了其他的运算(操作)符,比如布尔逻辑中的运算符。 下面的代码说明了 == 比 or 有着更高的优先级。
Python的运算顺序和数学是一致的:先括号,再指数运算,之后乘除,最后加减。 Part题: 下面代码的结果是?
A. Yes B. No |
5.2 运算优先级(二)
下表列出了Python中所有的运算(操作)符,运算优先级由高到低。
同一行的运算符有同样的优先级。 Part题: 下面代码的结果是?
A. Yes B. No C. Yes No |
6 while循环
6.1 while循环(一)
如果条件算作True,if语句就执行一次,否则就不会执行。 while语句与它相似,不同的是while可以运行不止一次。只要条件符合,while中的语句会被重复执行。一旦条件被算作False,就去执行下一部分代码。 下面是一个while循环将变量从1加到5,然后终结。
结果:
while循环体中的语句被重复执行。这被叫做[ruby=iteration]迭代[/ruby]。 Part题: 这段代码输出几个数字?
|
6.2 while循环(二)
死循环是一种特殊的while循环;它永远不会停止。它的条件永远算作True。 死循环的一个例子:
这个程序会无限输出“在循环中”。 你可以通过快捷键Ctrl+C或关闭程序来停止程序的运行。 Part题: 按要求填空:用循环将x的值每次增加2,并输出偶数。
|
6.3 break语句
如果要提前结束一个while循环,可以用到break语句。 当在循环内遇到break语句时,它会立即终结循环。
结果:
在循环外使用break语句会产生错误。 Part题: 这段代码输出几个数字?
|
6.4 continue语句
另一个可以在循环中使用的语句叫做continue。 与break不同的是,continue会跳回到循环的最开始,而不是终结循环。
结果:
基本上来说,continue会停止当前的这次迭代,从下一次迭代继续运行。 在循环外使用continue语句会产生错误。 Part题: 哪个语句会停止当前的迭代,从下一次开始? |
7 列表
7.1 列表(一)
[ruby=Lists]列表[/ruby]是Python中的另一种对象。它被用做存储一列被索引的数据。 一个列表可以通过方括号和以逗号分隔的数据创建。 列表中的某个特定数据可以通过在方括号中使用它的索引获得。 举例:
结果:
要注意列表中的第一项数据的索引是0而不是1。 Part题: 这段代码的结果是?
|
7.2 列表(二)
用一对空的方括号可以创建一个空列表。
结果:
基本上来说,列表中的最后一项不需要跟逗号。但是标上一个是完全可以的,有些时候也鼓励这么做。 Part题: 这个列表中有几项?
A. 1 B. 2 C. 3 |
7.3 列表(三)
一般而言,一个列表包含着一种数据类型,但是也可能包含不同种数据类型。 列表也可以嵌套列表。
结果:
列表中的列表常被用来代表二维网格,因为Python中没有其他编程语言有的多_维数组。 Part题: 填空创建一个列表并输出它的第三项。
|
7.4 列表(四)
如果索引超出列表的界限,会产生一个IndexError。 有些类型,例如字符串,可以像列表一样被索引。对字符串的索引就像是在索引一个包含着字符串中每个字符的列表。 对于其他类型,例如整型,尝试对其索引会产生一个TypeError。
结果:
Part题: 下面哪一行代码会产生错误?
A. 第二行 B. 第三行 C. 第四行 |
8 列表操作
8.1 列表操作(一)
列表中特定的数据可以被重新赋值。 举例:
结果:
Part题: 这段代码的结果是?
|
8.2 列表操作(二)
列表可以像字符串一样加乘。 举例:
结果:
列表和字符串在许多地方有相似之处——字符串可以被想成不能改变其中字符的列表。 Part题: 填空创建列表,对其第二项重新赋值,并输出整个列表。
|
8.3 列表操作(三)
使用in操作符可以检测一项数据是否存在于列表中。如果这项数据在列表中出现一次以上,返回True。否则就返回False。
结果:
in操作符也可以用来检测一个字符串是不是另一个字符串的子字符串。 Part题: 这段代码的结果是?
|
8.4 列表操作(四)
如果要检测一项数据是否不存在于列表中,可以按下面几种方式的一种使用not操作符。
结果:
Part题: 按要求填空:如果列表中包含'z',就输出"Yes"。
|
9 列表函数
9.1 列表函数(一)
另一种更改列表的方法是使用append方法。它会将一项数据添加到一个现有列表的末尾。
结果:
append前的点( . )意味着append是列表类的一个[ruby=method]方法[/ruby]。关于方法,我们以后会讲到。 Part题: 这段代码的结果是?
A. 产生错误 B. hello C. world |
9.2 列表函数(二)
使用len函数可以获取列表中的项数。
结果:
不像append,len是个普通的函数,而不是一个方法。这意味着它写在列表被调用前,也就不需要写点。 Part题: 这段代码的结果是?
|
9.3 列表函数(三)
insert方法与append相似,但它允许你在列表的任意位置插入新的一项,而不是只在最后。
结果:
Part题: 这段代码的结果是?
|
9.4 列表函数(四)
index方法寻找某一项在列表中第一次出现时的索引,并返回这个索引。 如果项不存在于列表中,就产生一个ValueError。
结果:
对于列表,还有几个有用的函数和方法。 Part题: 选择下面的选项填空,将'z'添加到list的末尾,并输出list的长度。
len (list) insert index append |
10 Range
10.1 Range(一)
range函数创建一串序列数字。 下面的代码创建了一个包含0-9整数的列表。
结果:
对list的调用是必须的,因为range自己创建一个range对象,必须转换为列表才能使用。 Part题: 这段代码的结果是?
|
10.2 Range(二)
如果调用range的时候有一个参数,就产生一个包含从0开始直至那个参数的对象。 如果有两个参数,就产生一个包含从第一个参数至第二个参数的对象。 举例:
结果:
Part题: 这段代码的结果是?
|
10.3 Range(三)
range可以有第三个参数,指定了序列中数字的间隔。第三个参数必须是整型。
结果:
Part题: 这段代码的结果是?
A. 0 B. 3 C. 9 D. 12 |
11 for循环
11.1 循环
有时候需要对列表中的每一项都执行操作。这被称作迭代,可以通过while循环和一个计数变量实现。 举例:
结果:
上面的例子迭代列表中所有的项,通过索引访问值,最后将它加上感叹号输出。 Part题: 哪种结构能用来迭代列表? A. if语句 B. 循环 C. 变量赋值 |
11.2 for循环(一)
用while迭代列表需要挺多代码的,所以Python也提供for循环达到相同的目标。 上面的例子可以写成效果等同的下面例子:
结果:
Python中的for循环和其他编程语言中的foreach循环相似。 Part题: 填空创建一个有效的for循环。
|
11.3 for循环(二)
for循环常被用作将代码循环执行一定次数。这样做的方法是将循环和range对象结合起来。
结果:
当在for循环中使用range对象时不需要对它调用list,因为不需要将其索引,所以也就不需要转换为列表。 Part题: 填空创建一个for循环,仅输出范围中的偶数。
|
12 简单计算器
12.1 创建计算器(一)
这一章是关于Python中的一个例程:一个简单的计算器。每一小节解释了程序的不同部分。 第一部分是总体目录,在直到用户输入"quit"前都会一直接受输出,所以需要用到一个while循环。
上面的代码是我们程序的起点。它接受用户输入,将输入与选项通过if/elif语句比较。 Part题: 如果将程序中的break语句换成"continue",会有什么后果? A. 要输入两次"quit"才能退出 B. 会和原来一样正常运行 C. 会无限运行下去 |
12.2 创建计算器(二)
程序的下一部分是得到用户想要操作的数字。 下面的代码实现了加法计算,对于其他部分也可以如法炮制。
现在,当用户输入"add"的时候,程序指示用户输入两个数字,并将其存储在对应的变量中。 按这样来看,当指示用户输入的时候得到的不是数字时,程序会崩溃。在之后的模块中我们会学到如何解决这种问题。 Part题: 为什么代码中对float的调用是必要的? A. 为了删掉输入中的空格 B. 为了将输入转化为浮点数 C. 为了检查输入是不是数字 |
12.3 创建计算器(三)
程序的最后部分处理用户的输入,并输出。 下面是对于加法部分的代码。
现在我们已经有了一个能指示用户输入,然后计算,最终显示出和的程序。 对于其他部分(减、乘、除),也要写相似的代码。 Part题: 填空,使计算器能处理乘法。
|
章末检测
1. 这段代码的输出是?
2. 这段代码的作用是?
A. 输出0到8之间的所有偶数 B. 输出2到10之间的所有偶数 C. 输出1到9之间的所有奇数 3. 这段代码会输出多少行?
A. 0 B. 1 C. ∞ 4. 按要求填空:如果列表中有偶数项,就输出其中的第一项。
5. 这段代码的输出是?
6. 按要求填空:用for循环迭代列表,并输出列表中的项。
|