Prev: Python3Ⅳ:异常 & 文件
Next: None
1 None
1.1 None(一)
None对象用来表示值的缺失。 它与其他编程语言中的null类似。 与其他“空”值,例如0、[]和空字符串一样,它在转换为布尔值时为False。 在Python控制台中输入时,它以一个空字符串表示。
Part题: “None”常用来表示什么? A. 缺失值 B. 假值 C. 无效值 |
1.2 None(二)
None会在当函数不显式返回值的时候返回。
结果:
Part题: 下面代码输出什么?
|
2 字典
2.1 字典(一)
[ruby=Dictionaries]字典[/ruby]是一种用来任意将[ruby=key]键[/ruby]映射到[ruby=value]值[/ruby]的数据类型。 列表可以想成有确定范围整数键的字典。 字典可以用与列表相同的方式来索引,即包含键的方括号。 例
出
字典内每个元素都以键:值对表示。 Part题: 填空创建有两个元素的有效字典。
|
2.2 字典(二)
尝试索引不属于字典的一个键会返回KeyError。 例
出
如你所见,字典可以以任意类型数据作为值。 空字典用{}定义。 Part题: 下面代码的结果是?
A. KeyError B. None C. 0 |
2.3 字典(三)
只有[ruby=immutable]不可变[/ruby]对象才能作为字典的键。不可变对象是不能被改变的对象。到现在,你见过所有的[ruby=mutable]可变[/ruby]对象只有列表和字典。尝试用可变对象作为字典键会产生TypeError。
出
Part题: 下面哪个不能用作字典的键? A. "one two three" B. False C. {2: 4, 3: 9, 4: 16,} |
3 字典函数
3.1 字典(四)
与列表相似,字典的键也可以被赋值。 但字典不像列表的是,一个新的键也可以被赋值,而不是只能赋给存在的键。
出
Part题: 下面代码的输出是?
|
3.2 字典(五)
若要确定一个字典里是否含某个键,可以用in和not in,就像用在列表上一样。 例
出
Part题: 用选项填空,如果"pairs"字典中有112为键,就输出"Yes"。
|
3.3 字典(六)
一个有用的字典方法是get。它与索引干同样的事,但如果字典中找不到键,它会返回另一个指定的值(默认是None)。 例
出
Part题: 下面代码的结果是?
|
4 元组
4.1 元组(一)
[ruby=Tuples]元组[/ruby]与列表很相似,除了它们是不可变的。还有,它们是用圆括号而不是方括号创建的。 例
你可以索引元组的值,与列表一样:
尝试给元组元素重新赋值会产生TypeError。
出
与列表和字典相似,元组可以嵌套。 Part题: 填空分别创建列表、字典和元组。
|
4.2 元组(二)
元组可以不用括号,只要将值用逗号分隔来创建。
出
空的元组可以用一对空的圆括号创建。
元组比列表效率更高,但不能被改变。 Part题: 下面代码的结果是?
A. (1, 2, 3) B. 1 C. ((1, 2, 3)) |
5 列表切片
5.1 列表切片(一)
[ruby=List slices]列表切片[/ruby]提供了一种更高级的从列表中取值的方法。基本的列表切片涉及到用两个冒号分隔的整数索引列表。这会返回一个新的列表,包含以前列表中两个索引中间的所有值。
出
与range的参数类似,切片中包含第一个索引,但不包含第二个。 Part题: 下面代码的结果?
A. [25, 36, 49] B. [16, 25, 36] C. [16, 25, 36, 49] |
5.2 列表切片(二)
如果略去切片中第一个数,会从列表起始切片。 如果略去第二个数,会切片至列表末尾。 例
出
元组也可以切片。 Part题: 填空,取列表的前两个值。
|
5.3 列表切片(三)
列表切片也可以有第三个数,指定步进数,只包括切片中间隔的值。
出
[2:8:3]在第二个到第八个元素中每隔两个元素取一个。 Part题: 下面代码的输出?
A. 出错 B. [1, 25, 81] C. [0, 1, 4] D. [1, 25] |
5.4 列表切片(四)
负数也可以用于列表切片(和普通的列表索引)。当负数用在切片索引的第一个或第二个数时,会从列表末尾算起。
出
如果用负数作为步进值,那么切片从后往前完成。 Part题: 下面代码输出?
A. [] B. [49, 36] C. [49] |
6 列表推导式
6.1 列表推导式(一)
[ruby=List comprehension]列表推导式[/ruby]是一种有用且快捷的创建那种值遵循某个简单规律的列表。 举例,我们可以这样做:
出
列表推导式的灵感来源于数学中的[ruby=set-builder notation]集合建构式符号[/ruby]。 Part题: 下面这个列表推导式会产生什么?
A. 一个有0-10之间所有偶数的列表 B. 一个有0-18之间所有偶数的列表 C. 一个有0-10之间所有数字的列表 |
6.2 列表推导式(二)
列表推导式也可以包含if语句,确保列表中的元素都符合条件。 例
出
Part题: 创建一个包含0-20内3的倍数的列表。
|
6.3 列表推导式(三)
尝试用列表推导式创建一个非常大的列表会产生MemoryError。 下面代码展示列表推导式用尽内存的情况。
出
这个问题可以用[ruby=generators]生成器[/ruby]解决,在下一模块讲。 Part题: 填空创建一个5-9范围内数字乘10的列表。
|
7 字符串格式化
7.1 字符串格式化(一)
到现在,要想将字符串与非字符串合并,你需要先转换为字符串再相加。 字符串格式化提供了一种更强大的方法,能将非字符串嵌入字符串。字符串格式化用到字符串的format方法来替换字符串中的参数。 例
出
format函数中每个实参都对应字符串中的一个位置,由花括号{ }指定。 Part题: 下面代码的结果?
|
7.2 字符串格式化(二)
字符串故事也可用命名参数完成。 例
出
Part题: 下面代码的输出?
A. 5, 9, 7 B. 9, 7, 5 C. 7, 9, 5 |
8 一些有用的函数
8.1 字符串函数
Python包含许多有用的内置函数和方法来完成常见任务。 join - 将一列表的字符串以另一个字符串为分隔符合并。 replace - 将一个字符串的子串用另一个字符串替换。 startswith和endswith - 判断字符串是否以一个子串开始或结束。 要改变字符串的大小写,你可以用lower和upper。 split方法与join相反,将一个字符串以某分隔符分割成列表。 举一些例:
Part题: 填空将字符串转大写。
|
8.2 数字函数
用max或min函数确定列表中的最大值或最小值。 用abs计算一个数字与0的距离(绝对值)。 用round将一个数字舍入到某个确定的小数位。 用sum计算列表的总和。 举一些例:
出
Part题: 下面代码的输出是?
|
8.3 列表函数
在条件语句中常常用到的有all和any,它们分别检测是否所有的元素都算为True和是否至少有一个元素算为True。 enumerate函数可以用来同时遍历列表的索引和值。 例
出
Part题: 下面代码的输出是?
|
9 文本分析器
9.1 文本分析器
接下来是一个示例项目,此程序可以分析一个范例文件,找出每个字符在文本中出现的百分比。 这一节展示如何打开并读取文件。
出
这只是一个用于演示用途的样例内容。 Part题: 填空用with语句读取文件内容。
|
9.2 文本分析器(二)
这部分程序展示一个能统计字符在字符串中出现次数的函数。
这个函数的参数是文件的文本和一个字符,返回的是文本中字符出现的次数。 接下来我们可以对文件内容调用它了。
出
字符"r"在文件中出现了83次。 Part题: 为什么要将字符计数代码放在函数中? A. 这样就能读取文件了 B. 这样就能复用了 C. 这样就能跑得更快了 |
9.3 文本分析器(三)
程序的下一部分是按字母表顺序找出每个字母出现频率的占比。
让我们组合在一起运行程序:
出
Part题: 上面代码中round函数的作用是? A. 减少输出的小数位数 B. 使输出更精确 C. 节省内存 |
模块测试
1. 元组能切片吗? 2. 下面哪个切片会反向排序列表numbers? A. numbers[::-1] B. numbers[::] C. numbers[-1::] 3. 下面哪个可以描述为“不可变的列表”? A. 元组 B. 字典 C. 数字 4. 无return语句的函数会返回什么? A. 0 B. False C. None 5. 下面代码的输出是?
|