《Python程序设计基础》习题答案与分析课件
Python程序设计基础习题答案与分析程昱第1章 基础知识1.1 简单说明如何选择正确的Python版本。答在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 2.x还是Python 3.x,最高支持到Python 2.7.6还是Python 2.7.9。这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。1.2 为什么说Python采用的是基于值的内存管理模式Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。 x 3 idx10417624 y 3 idy10417624 y 5 idy10417600 idx10417624 x 1, 2, 3, 1, 1, 2 idx0idx3idx4True1.3 解释Python中的运算符“/”和“”的区别。答在Python 2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python 3.x中,“/”为真除法,与除法的数学含义一致。在Python 2.x和Python 3.x中,“”表示整除,对整数或浮点数进行该运算时,结果为数学除法的整数部分。1.4 在Python中导入模块中的对象有哪几种方式答常用的有三种方式,分别为l import 模块名 as 别名l from 模块名 import 对象名 as 别名l from math import *1.5 pip 是目前比较常用的Python扩展库管理工具。1.6 解释Python脚本程序的“name”变量及其作用。答每个Python脚本在运行时都有一个“name”属性。如果脚本作为模块被导入,则其“name”属性的值被自动设置为模块名;如果脚本独立运行,则其“name”属性值被自动设置为“main”。利用“name”属性即可控制Python程序的运行方式。1.7 运算符“” 可以 (可以、不可以)对浮点数进行求余数操作。1.8 一个数字“5” 是 (是、不是)合法的Python表达式。1.9 在Python 2.x中,函数接收到的数据类型由 界定符 确定,而在Python 3.x中该函数则认为接收到的用户输入数据一律为 字符串 。1.10 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。例如用户输入1234,则程序输出12。(提示使用整除运算。)答1)Python 3.4.2代码x Please an integer of more than 3 digitstry x intx x x100 if x 0 printYou must an integer of more than 3 digits. else printxexcept BaseException printYou must an integer.2)Python 2.7.8代码import typesx Please an integer of more than 3 digitsif typex types.IntType print You must an integer.elif lenstrx 4 print You must an integer of more than 3 digits.else print x100第2章 Python序列2.1 为什么应尽量从列表的尾部进行元素的增加与删除操作答当列表增加或删除元素时,列表对象自动进行内存扩展或收缩,从而保证元素之间没有缝隙,但这涉及到列表元素的移动,效率较低,应尽量从列表尾部进行元素的增加与删除操作以提高处理速度。2.2 range函数在Python 2.x中返回一个 包含整数的列表 ,而Python 3.x的range函数返回一个 可迭代的range对象 。2.3 编写程序,生成包含1000个0到100之间的随机整数,并统计每个元素的出现次数。答可以使用集合来实现该功能。1)Python 3.4.2代码import randomx random.randint0,100 for i in range1000d setxfor v in d printv, , x.countv2)Python 2.7.8代码import randomx random.randint0,100 for i in range1000d setxfor v in dprint v, , x.countv也可以直接使用字典来实现该功能,并且获得更高的执行效率,例如下面的Python 3.4.2代码listRandom random.randint1,100 for i in range1000000d dictstart time.timefor i in listRandom 对随机数列表扫描一次,即可得到结果 di d.geti,01printtime.time-start2.4 表达式“3 in 1, 2, 3, 4”的值为 False 。2.5 编写程序,用户输入一个列表和2个整数作为下标,然后输出列表中介于2个下标之间的元素组成的子列表。例如用户输入1, 2, 3, 4, 5, 6和2,5,程序输出3, 4, 5, 6。答1)Python 3.4.2代码x Please a listx xstart, end Please the start position and the end positionprintxstartend2)Python 2.7.8代码x Please a liststart, end Please the start position and the end positionprint xstartend2.6 列表对象的sort方法用来对列表元素进行原地排序,该函数返回值为 None 。2.7 列表对象的 remove 方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。2.8 假设列表对象aList的值为3, 4, 5, 6, 7, 9, 11, 13, 15, 17,那么切片aList37得到的值是 6, 7, 9, 11 。2.9 设计一个字典,并编写程序,用户输入内容作为“键”,然后输出字典中对应的“值”,如果用户输入的“键”不存在,则输出“您输入的键不存在”答1)Python 3.4.2代码d 1a, 2b, 3c, 4dv Please a keyv vprintd.getv,您输入的的键不存在2)Python 2.7.8代码d 1a, 2b, 3c, 4dv Please a keyprintd.getv,您输入的的键不存在2.10 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。答1)Python 3.4.2代码import randomx random.randint0,100 for i in range20printxy x010y.sortx010 yy x1020y.sortreverseTruex1020 yprintx2)Python 2.7.8代码import randomx random.randint0,100 for i in range20print xy x010y.sortx010 yy x1020y.sortreverseTruex1020 yprint x2.11 在Python中,字典和集合都是用一对 大括号 作为界定符,字典的每个元素有两部分组成,即 “键” 和 “值” ,其中 “键” 不允许重复。2.12 使用字典对象的 items 方法可以返回字典的“键-值对”列表,使用字典对象的 keys 方法可以返回字典的“键”列表,使用字典对象的 values 方法可以返回字典的“值”列表。2.13 假设有列表a name, age, sex和b Dong, 38, Male,请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为 c dictzipa,b 。2.14 假设有一个列表a,现要求从列表a中每3个元素取1个,并且将取到的元素组成新的列表b,可以使用语句 b a3 。2.15 使用列表推导式生成包含10个数字5的列表,语句可以写为 5 for i in range10 。2.16 不可以 (可以、不可以)使用del命令来删除元组中的部分元素。第3章 选择与循环3.1 分析逻辑运算符“or”的短路求值特性。答假设有表达式“表达式1 or 表达式2”,如果表达式1的值等价于True,那么无论表达式2的值是什么,整个表达式的值总是等价于True。因此,不需要再计算表达式2的值。3.2 编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。如果年份能被400整除,则为闰