《Python程序设计基础》习题答案与分析.pdf
《《Python程序设计基础》习题答案与分析.pdf》由会员分享,可在线阅读,更多相关《《Python程序设计基础》习题答案与分析.pdf(27页珍藏版)》请在咨信网上搜索。
1、Python 程序设计基础习题答案与分析程昱第 1 章 基础知识1.1 简单说明如何选择正确的 Python 版本。答:在选择 Python 的时候,一定要先考虑清楚自己学习 Python 的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的 Python,是 Python 2.x还是 Python 3.x,最高支持到 Python 2.7.6 还是 Python 2.7.9。这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在 Python 的反复安装和卸载上。同时还应该注意,当更新的 Python 版本推出之后,不要急于更新,而是应该
2、等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。尽管如此,Python 3 毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择 Python 3.x 系列的最高版本(目前是 Python 3.4.3)。1.2 为什么说 Python 采用的是基于值的内存管理模式?Python 采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。x=3 id(x)10417624 y=3 id(y)10417624 y=5 id(y)10417600 id(
3、x)10417624 x=1,2,3,1,1,2 id(x0)=id(x3)=id(x4)True1.3 解释 Python 中的运算符“/”和“/”的区别。答:在 Python 2.x 中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在 Python 3.x 中,“/”为真除法,与除法的数学含义一致。在 Python 2.x 和 Python 3.x 中,“/”表示整除,对整数或浮点数进行该运算时,结果为数学除法的整数部分。1.4 在 Python 中导入模块中的对象有哪几种方式?答:常用的有三种方式,分别为import 模块名 as 别名from
4、 模块名 import 对象名 as 别名from math import*1.5 pip 是目前比较常用的 Python 扩展库管理工具。1.6 解释 Python 脚本程序的“_name_”变量及其作用。答:每个 Python 脚本在运行时都有一个“_name_”属性。如果脚本作为模块被导入,则其“_name_”属性的值被自动设置为模块名;如果脚本独立运行,则其“_name_”属性值被自动设置为“_main_”。利用“_name_”属性即可控制 Python 程序的运行方式。1.7 运算符“%”可以 (可以、不可以)对浮点数进行求余数操作。1.8 一个数字“5”是 (是、不是)合法的 Py
5、thon 表达式。1.9 在 Python 2.x 中,input()函数接收到的数据类型由 界定符 确定,而在Python 3.x 中该函数则认为接收到的用户输入数据一律为 字符串 。1.10 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。例如用户输入 1234,则程序输出 12。(提示:使用整除运算。)答:1)Python 3.4.2 代码:x=input(Please input an integer of more than 3 digits:)try:x=int(x)x=x/100 if x=0:print(You must input an integer of mo
6、re than 3 digits.)else:print(x)except BaseException:print(You must input an integer.)2)Python 2.7.8 代码:import typesx=input(Please input an integer of more than 3 digits:)if type(x)!=types.IntType:print You must input an integer.elif len(str(x)!=4:print You must input an integer of more than 3 digits
7、.else:print x/100第 2 章 Python 序列2.1 为什么应尽量从列表的尾部进行元素的增加与删除操作?答:当列表增加或删除元素时,列表对象自动进行内存扩展或收缩,从而保证元素之间没有缝隙,但这涉及到列表元素的移动,效率较低,应尽量从列表尾部进行元素的增加与删除操作以提高处理速度。2.2 range()函数在 Python 2.x 中返回一个 包含整数的列表 ,而 Python 3.x 的 range()函数返回一个 可迭代的 range 对象 。2.3 编写程序,生成包含 1000 个 0 到 100 之间的随机整数,并统计每个元素的出现次数。答:可以使用集合来实现该功能。
8、1)Python 3.4.2 代码import randomx=random.randint(0,100)for i in range(1000)d=set(x)for v in d:print(v,:,x.count(v)2)Python 2.7.8 代码import randomx=random.randint(0,100)for i in range(1000)d=set(x)for v in d:print v,:,x.count(v)也可以直接使用字典来实现该功能,并且获得更高的执行效率,例如下面的 Python 3.4.2 代码:listRandom=random.randint(
9、1,100)for i in range(1000000)d=dict()start=time.time()for i in listRandom:#对随机数列表扫描一次,即可得到结果 di=d.get(i,0)+1print(time.time()-start)2.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=input(Please input a lis
10、t:)x=eval(x)start,end=eval(input(Please input the start position and the end position:)print(xstart:end)2)Python 2.7.8 代码x=input(Please input a list:)start,end=input(Please input the start position and the end position:)print xstart:end2.6 列表对象的 sort()方法用来对列表元素进行原地排序,该函数返回值为 None 。2.7 列表对象的 remove()
11、方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。2.8 假设列表对象 aList 的值为3,4,5,6,7,9,11,13,15,17,那么切片 aList3:7得到的值是 6,7,9,11 。2.9 设计一个字典,并编写程序,用户输入内容作为“键”,然后输出字典中对应的“值”,如果用户输入的“键”不存在,则输出“您输入的键不存在!”答:1)Python 3.4.2 代码d=1:a,2:b,3:c,4:dv=input(Please input a key:)v=eval(v)print(d.get(v,您输入的的键不存在)2)Python 2.7.8 代码d=1:a,2
12、:b,3:c,4:dv=input(Please input a key:)print(d.get(v,您输入的的键不存在)2.10 编写程序,生成包含 20 个随机数的列表,然后将前 10 个元素升序排列,后 10个元素降序排列,并输出结果。答:1)Python 3.4.2 代码import randomx=random.randint(0,100)for i in range(20)print(x)y=x0:10y.sort()x0:10=yy=x10:20y.sort(reverse=True)x10:20=yprint(x)2)Python 2.7.8 代码import randomx
13、=random.randint(0,100)for i in range(20)print xy=x0:10y.sort()x0:10=yy=x10:20y.sort(reverse=True)x10:20=yprint x2.11 在 Python 中,字典和集合都是用一对 大括号 作为界定符,字典的每个元素有两部分组成,即 “键”和 “值”,其中 “键”不允许重复。2.12 使用字典对象的 items()方法可以返回字典的“键-值对”列表,使用字典对象的 keys()方法可以返回字典的“键”列表,使用字典对象的 values()方法可以返回字典的“值”列表。2.13 假设有列表 a=nam
14、e,age,sex和 b=Dong,38,Male,请使用一个语句将这两个列表的内容转换为字典,并且以列表 a 中的元素为“键”,以列表 b 中的元素为“值”,这个语句可以写为 c=dict(zip(a,b)。2.14 假设有一个列表 a,现要求从列表 a 中每 3 个元素取 1 个,并且将取到的元素组成新的列表 b,可以使用语句 b=a:3 。2.15 使用列表推导式生成包含 10 个数字 5 的列表,语句可以写为 5 for i in range(10)。2.16 不可以 (可以、不可以)使用 del 命令来删除元组中的部分元素。第 3 章 选择与循环3.1 分析逻辑运算符“or”的短路求
15、值特性。答:假设有表达式“表达式 1 or 表达式 2”,如果表达式 1 的值等价于 True,那么无论表达式 2 的值是什么,整个表达式的值总是等价于 True。因此,不需要再计算表达式 2 的值。3.2 编写程序,运行后用户输入 4 位整数作为年份,判断其是否为闰年。如果年份能被 400 整除,则为闰年;如果年份能被 4 整除但不能被 100 整除也为闰年。答:1)Python 3.4.2 代码x=input(Please input an integer of 4 digits meaning the year:)x=eval(x)if x%400=0 or(x%4=0 and not
16、x%100=0):print(Yes)else:print(No)2)Python 2.7.8 代码x=input(Please input an integer of 4 digits meaning the year:)if x%400=0 or(x%4=0 and not x%100=0):print Yeselse:print No3.3 Python 提供了两种基本的循环结构:for 循环 和 while 循环 。3.4 编写程序,生成一个包含 50 个随机整数的列表,然后删除其中所有奇数。(提示:从后向前删。)答:Python 3.4.2 代码如下,import randomx=r
17、andom.randint(0,100)for i in range(50)print(x)i=len(x)-1while i=0:if xi%2=1:del xi i-=1print(x)3.5 编写程序,生成一个包含 20 个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)答:Python 3.4.2 代码如下,import randomx=random.randint(0,100)for i in range(20)print(x)y=x:2y.sort(reverse=True)x:2=yprint(x)3.6 编写程序,用户从键盘输入小于
18、 1000 的整数,对其进行因式分解。例如,10=25,60=2235。答:1)Python 3.4.2 代码x=input(Please input an integer less than 1000:)x=eval(x)t=xi=2result=while True:if t=1:break if t%i=0:result.append(i)t=t/i else:i+=1print(x,=,*.join(map(str,result)2)Python 2.7.8 代码x=input(Please input an integer less than 1000:)t=xi=2result=w
19、hile True:if t=1:break if t%i=0:result.append(i)t=t/i else:i+=1print x,=,*.join(map(str,result)3.7 编写程序,至少使用 2 种不同的方法计算 100 以内所有奇数的和。答:Python 3.4.2 代码如下,如果使用 Python 2.7.8 只需要把其中的 print()函数改为print 语句即可。x=i for i in range(1,100)if i%2=1print(sum(x)print(sum(range(1,100):2)3.8 编写程序,输出所有由 1、2、3、4 这四个数字组
20、成的素数,并且在每个素数中每个数字只使用一次。答:Python 3.4.2 代码如下,答:Python 3.4.2 代码如下,如果使用 Python 2.7.8 只需要把其中的 print()函数改为print 语句即可。x=input(Please input x:)x=eval(x)if x=20:print(0)elif 0=x5:print(x)elif 5=x10:print(3*x-5)elif 10=x20:print(0.5*x-2)3.9 编写程序,实现分段函数计算,如下表所示。xyx000=x5x5=x103x-510=x200.5x-220=x0答:Python 3.4.
21、2 代码如下,如果使用 Python 2.7.8 只需要把其中的 print()函数改为print 语句即可。x=input(Please input x:)x=eval(x)if x=20:print(0)elif 0=x5:print(x)elif 5=x10:print(3*x-5)elif 10=x20:print(0.5*x-2)第 4 章 字符串与正则表达式4.1 假设有一段英文,其中有单独的字母“I”误写为“i”,请编写程序进行纠正。答:这里给出 Python 3.4.2 代码,如果使用 Python 2.7.8 的话只需要修改其中的 print()函数为 print 语句即可。
22、1)不使用正则表达式x=i am a teacher,i am man,and i am 38 years old.I am not a businessman.x=x.replace(i,I)x=x.replace(i,I)print(x)2)使用正则表达式x=i am a teacher,i am man,and i am 38 years old.I am not a businessman.import repattern=pile(r(?:w|b)i(?:w)while True:result=pattern.search(x)if result:if result.start(0)
23、!=0:x=x:result.start(0)+1+I+xresult.end(0)-1:else:x=x:result.start(0)+I+xresult.end(0)-1:else:breakprint(x)4.2 假设有一段英文,其中有单词中间的字母“i”误写为“I”,请编写程序进行纠正。答:这里给出 Python 3.4.2 代码,如果使用 Python 2.7.8 的话只需要修改其中的 print()函数为 print 语句即可。import rex=I am a teacher,I am man,and I am 38 years old.I am not a busInessm
24、an.print(x)pattern=pile(r(?:w)I(?:w)while True:result=pattern.search(x)if result:if result.start(0)!=0:x=x:result.start(0)+1+i+xresult.end(0)-1:else:x=x:result.start(0)+i+xresult.end(0)-1:else:breakprint(x)4.3 有一段英文文本,其中有单词连续重复了 2 次,编写程序检查重复的单词并只保留一个。例如文本内容为“This is is a desk.”,程序输出为“This is a desk.
25、”答:这里给出 Python 3.4.2 代码,如果使用 Python 2.7.8 的话只需要修改其中的 print()函数为 print 语句即可。1)方法一import rex=This is a a desk.pattern=pile(rb(w+)(s+1)1,b)matchResult=pattern.search(x)x=pattern.sub(matchResult.group(1),x)print(x)2)方法二x=This is a a desk.pattern=pile(r(?Pbw+b)s(?P=f)matchResult=pattern.search(x)x=x.repl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python程序设计基础 Python 程序设计 基础 习题 答案 分析
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。