《《Python程序设计教程》习题答案.docx》由会员分享,可在线阅读,更多相关《《Python程序设计教程》习题答案.docx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Python程序设计教程习题答案教材简介:本书利用“误入游戏空间” “进入Python城堡”“初遇城堡语言”“语句黑洞 迷宫”“寻找恶龙信息” “改造机器人”“标本馆中的类”“森林中的异常”“基因库探秘” “寻找黑客文件” “软件谷的黑客线程”“修复被黑软件”“重返现实中”等离奇故事,以 游记的方式引导读者从浅到深逐步学习Python的开发平台、语言的书写规范、标识符与关 键字、基本数据类型与变量、运算符与表达式、流程控制语句、组合数据类型、代码复用与 函数、Python类与对象、异常处理机制、sqlite3数据库编程、文件管理、多线程机制、GUI 窗口程序开发、Python的模块与库及网络编
2、程等知识,学习过程轻松愉快,引人入胜,且 对读者的计算机基础知识要求不高。本书注重实战操作,加强实例训练,每章都包括学习目 标、重点内容、场景引入、主题知识、学习交流、实验指导、单元习题等7个方面的内容, 书中的实例大都与Python城堡的游记有关。作为教材,相关网址还提供电子课件PPT、案例源代码、习题答案、实验指导和课程标 准等相关教学资源。本书既可以作为计算机科学技术、软件工程、大数据与人工智能、信息 系统与信息管理等专业的教材,也可以作为编程爱好者的入门用书,或者作为培训用书,书 中局部场景用诗词来描写。第1章Python的开发平台(进入Python城堡)一、判断题1. (X)5. (
3、 V)一、判断题1. (X)5. ( V)2. ( J)6. (X)3. (X)7. ( V)4. ( V)二、单项选择题3. D4. B5. D6. C7. C10. B11.B12. B13. C14. A1. B2. C8、 B9. C三、填空题1. 引用计数3.9、 .B、D16. D脚本文件5. py脚本文件5. py和垃圾收集器2. 交互4.help (“命令”)四、简答题1 .答:具体过程如下:1)用户选择“开始”菜单的“所有程序”,选择翻开Python的IDLE窗口;2)在IDLE窗口选择“File/New File”菜单翻开程序编辑窗口;3)在编辑窗口中输入程序源代码;4)输
4、入完源代码后,选择编辑窗口的“File/Save”菜单保存Python程序文件;5)选择编辑窗口的“Run/Module”菜单或者按快捷键F5执行该程序。2 .答:Python语言具有简单易学、规范代码、能交互运行、免费开源、面向对象、可 移植性好、可嵌入性强、丰富的标准库、高层的解释型语言等优点;它常常应用于人工智能、1.答:fibo (n-l) +fibo (n-2)六 程序分析题1.答:MyData是可迭代类,其运行结果是:1 3 5七 程序设计题1.解:参考代码如下:def isPrime(num):import mathn=int(math, sqrt(num)for i in ra
5、nge(2, n+1): if num%i=0:return Falsereturn True#定义列表保存质数listl=for num in range (2,100):if isPrime(num): listl. append(num) print (listl)2 .解:参考代码如下: def removeDuplicates ():x=eval (input ()y二口for i in range (0,len(x): if xi not in y:y. append (xi)return y#以下是主程序代码 d = removeDuplicates() print(d)3 .解
6、:参考代码如下:def getSolution():from math import sqrta, b, c=eval (input () if (b*b-4*a*c)0:print (无实数解)else:xl=(-b+sqrt(b*b14*a*c)/ (2*a) x2= (-b-sqrt(b*b-4*a*c)/(2*a) print (xl=%0.2f , x2=%0. 2f(xl, x2)return#以下是主程序代码 getSolution()第6章Python类与对象(标本馆中的类)一、名称解释1 .用来描述相同属性和方法的一类事物,它定义了该组对象的共有特征。2 .类的实例,管理一系
7、列函数的实体。3 .类对象所拥有的属性,实例对象也共有。4 . 一个对象所拥有的属性。5 .用配145511103(修饰,第一个参数一般是C1S的类对象所拥有的方法。可以通过类 对象和实例对象就行调用来使用。6 . staticniethod修饰的方法,不需要cis等参数。7 .当子类继承父类的时候,父类的方法不能满足子类的要求时,子类会对其父类的方重写实质就是覆盖父类方法。重写实质就是覆盖父类方法。二、单项选择题1.D2.B8.D9.B15.C16.D22.D23.D29.D30.D法重写,实现扩展功能,3.A4.D10.D11.C17.D18.B24.A25.A31.B32.C5. C12
8、. D19. D26. C6. D13. A20. B27. D7. A14. D21. D28. B三、简答题1 .答:面向对象编程,是一种解决软件复用的设计的一种编程方法,它通过封装的思 想,把功能函数交给一个对象去管理,用到的时候就可以直接创立对象,通过对象来调用实 例方法。2 .答:面向对象的三大特征是封装性、继承性和多态性。其中,封装是把属性和方法 定义在类中,通过类例实化出对象,用对象来调用属性和方法,其意义是保护数据的完整性, 外界只能访问方法不能去修改里面的属性;继承是子类复用父类的方法和属性;多态是指同 一个方法,不同对象调用会实现的不同功能的表现形式。四 程序分析题1 .答
9、:以上程序用类的封装技术定义一个兰花类,包含名称(name)、门(phylum)、 种(.species)、产地( home)和特征(feature)等私有属性,和介绍其特性的私有 方法,以及显示、获取与设置兰花属性的公有方法。2 .答:以上程序设计了动物(Animal)类,其运行结果如下:游客好,该动物名叫华南虎大奔。它已经13岁。五、程序设计题1 .解:参考代码如下:class Elves:#定义构造函数def init(self, name二help”, sex=阳,height,3, weight=35): self, name = name self, sex = sex self,
10、 height = height self.weight 二 weight#定义成员函数def introduction (self):print (f”大家好,我的姓名叫self, name”)print (f我是self, sex精灵)print (f我的身高是self, height)米) print (f我的体重是self, weight)公斤) return.解:参考代码如下:class Elves:# 定义构造函数def init(self, name二未知名,sex二阴,age=15): self.name = name self.sex = sex self.age = age
11、# 重载格式转换方法def _str_(self):info二f大家好,我名叫self, name,我是self, sex精灵,我今年 self, age岁。return info# 重载关系运算符def It_(self,other):if isinstance(other, Elves): return (self.age other.age)else:raise Exception(比拟对象必须是Elves类型)重载关系运算符二def eq (self, other):if isinstance(other, Elves): return(self, age 二二 other, age)
12、else:raise Exception(比拟对象必须是Elves类型)第7章Python的异常处理(森林中的异常)一、单项选择题1.D2. B3.D4. A5.D6.B7.C8.D9. D10.D11. A12.D13.D14.C15.D16. C17.A18. C二、填空题1.用户自定义2.except3.异常对象4.finally5.异常6.BaseException7.Exception8.raise9.finally10.BaseException11.、一如仃12.后面13.else14.else15.finally16.raise17.except三、程序分析题1 .答:1)当输
13、入12ab时的运行结果是:异常信息、:invalid literal for int() with base 10: 12ab finally执行完毕2)当输入56时的运行结果是:number: 56没有异常finally执行完毕2 .答:该程序设计了一个翻开文件的上下文管理器myOpen类,其_enter.方法实现 文件的翻开功能,而exit方法实现文件的关闭功能和显示异常信息的功能。主程序中的 with语句利用myOpen翻开withTest. txt文件,并将字符串“Python城堡”写入该文件中。 如果写入成功,那么显示“正常结束! ”,否那么显示异常信息。四 程序设计题1 .解:参考
14、源代码如下:#定义异常类class CustomException(Exception):def init (self, msg): self. msg=msgdef _str_(self): return self, msg#以下代码是对自定义异常的功能测试specialty二(人工智能,大数据,计算机软件,生物制药)sex =(男,女)person =try:myName = input (请输入姓名:)mySex = input (请输入性别:)if mySex not in sex:raise CustomException(性别必须是男或女。)mySpecialty = input(
15、请输入专业:)if mySpecialty not in specialty:raise CustomException(输入的专业不满足要求。)personname=myNamepersonsex=mySexpersonspecialty=mySpecialtyexcept CustomException as e:print (F 错误提示:e)else:print (F您输入的信息是:person )2 .解:参考源代码如下:s = Pythonwhile True:try:ch = input (请输入Python的索引,输入q那么退出:) if ch 二二,q,:breakn = i
16、nt (ch)print (F字符串sj的第n个字符是:s n )except Exception as e:print (F异常信息是:)3 .解:参考源代码如下:courseScore =)course二语文,数学,英语,物理,生物,化学while True:try:name二input (请输入课程名称,输入q那么结束:)if name = q:breakassert name in course, 输入的课程名称不正确result = input (请输入该课成绩:”)score=int(result)assert score=0 and score rb+ wb+和 ab+等。3 .
17、答:1) w+在翻开文件时会先将文件内容清空;2) r+翻开文件时不会将文件内容清 空,但“当前文件指针”位于文件开始处,输入内容会覆盖文件开始位置的内容;3) a+翻开文件时也不将文件内容清空,但“当前文件指针”位于文件末尾处,所以输入的 内容会写到文件末尾。4 .答:答 以读/写模式翻开文件,如f=open (诗词.txt, r, encoding=utf-8); 2)读或写取文件内容,如print(f. read。); 3)关闭文件,如f.close。四、程序分析题1 .答:其功能是将列表1s中的诗写入CSV文件中,该文件是逗号分隔的纯文本文件, 它可以被Excel软件读写。2 .答:其
18、功能是将列表内容以二进制方式存盘,然后以文本的方式读出,其结果如下:1)将列表内容以二进制方式存盘。2)以文本方式读取数据文件,内容如下: 新韵江水传情文/红尘笠翁儿离粤北求学早,父念亲人久望江。点点思情传海水,深深祝愿汇珠江。2019/11/6五 程序设计题1 .解:参考源代码如下:sourcefile=open(f:/春梦.txt”, r) targetf ile=open (f:/春梦 no. txt, w) 1 ineNo二try:for (num, value) in enumerate(sourcefile): if num9:1 ineNo=0+str(num)else:line
19、No=str(num)ine=lineNo+/,: +valuetargetfile, write (line)print (给文本文件内容添加行号结束)except Exception as e:print(F 产生异常:e) finally:sourcefile, close() targetfile, close()1 .解:参考源代码如下:import pickledet二诗名:丝雨飞歌,作者:红尘笠翁1st二无边丝雨溅香楼,满目鲜花泪水流。,思恋声声云雾送,情歌句句占心头。print C1)用序列化方式将字典和列表存盘。)with open(f:/sc4.dat, wb) as fl
20、:pickle, dump (det, fl)# 对象序列化pickle, dump (1st, fl)# 对象序列化with open(,zf:/sc4. dat/,, rb)as f2:printC2)用反序列化方式读取文件内容如下:)print (pickle, load (f2) #对象反序列化print (pickle, load (f2) #对象反序列化第10章Python多线程机制(软件谷的黑客线程)一、判断题1.(X)2.(V)3.(V)7.(X)8.(V)9.(X)13.(X)14.(V)1.(X)2.(V)3.(V)7.(X)8.(V)9.(X)13.(X)14.(V)4.
21、(V)5.(X)6.(V)10.(V)11.(X)12.(V)二、单项选择题1. A 2. C3. A 4. D5. D三、简答题1 .答:运行机制:(1)进程是一个具有独立功能的程序,系统资源和调度的一个基本单 位。(2)线程是一个进程的一个实体,CPU调度的分配的单位,占有资源少,未处理的数据 会在缓存区保存。优缺点:(1)多进程稳定性好,单个进程出现问题不会影响其他进程的运行;缺点就是 消耗资源太大,创立时代价大,系统调度会出现问题。(2)多线程共享内存资源,运行效率 要高效一些;缺点是,任何一个线程出现问题,会造成整个进程出现崩溃。2 .答:是多个线程同时访问同一互排斥资源时,必须等待
22、其它线程的资源访问结束, 其缺点是浪费时间,工作效率低。3 .答:进程是系统资源分配和调度的一个独立单位,每个进程都有自己的内存空间, 占用内存资源比拟多,上下文切换开销大,比拟稳定和安全。线程CPU处理器调度的基本单 位,进程中的一个执行单位可调度的实体,占用系统资源很少,同一个进程中的多个线程可 以共享全局变量,通信主要是共享进程内存,资源开销很小,不够稳定,易丧失数据。4 .答:GIL是Python的全局解释器锁。为了数据安全,每个CPU在同一时间只能执行 一个线程,即允许一个线程拥有Python解释器,并且上锁,当该线程运行完毕或者无法继 续运行(如遇到I/O)时,开锁让出CPU,所以
23、在单核CPU下的多线程其实都是并发运行的, 而不是并行的。5 .答:在多线程的情况下,线程之间在共享全局变量时,会有争取和修改全局变量, 为了保证数据的正确性,同一个时刻只有一个线程在存取。四、程序分析题1 .答:以上程序利用递归锁RLock编程解决吃饭时,当一人只抢到了碗,另外一人只 抢到了勺而相互等待对方让出资源的死锁问题,其的运行结果如下:客户1拿到碗客户1拿到勺客户1吃完饭客户2拿到勺客户2拿到碗客户2吃完饭2 .答:以上程序用条件变量Condition模拟生产者与消费者的同步,其运行结果如下: 生产者生产商品1.生产者生产商品2 消费者消费商品1. 消费者消费商品2.一 生产者生产商
24、品3. 生产者生产商品4. 消费者消费商品3. 消费者消费商品4.3 .答:以上程序是用互斥锁Lock实现两个用户线程从网上银行的共享账户中取款的互 斥操作,其运行结果如下:Thread-l取出100元,账户余款500元Thread-2取出100元,账户余款400元Thread-2取出100元,账户余款300元Thread-2取出100元,账户余款200元Thread-1取出100元,账户余款100元Thread-1取出100元,账户余款0元五、程序设计题1 .解:参考代码如下:import threading as th import time, random#存款方法def saveMon
25、ey(num):threadName = th. current_thread(). getName ()global money myLock. acquire () temp = money temp = temp + numglobal money myLock. acquire () temp = money temp = temp + num#上锁进入临界区#访问现有资金#计算存款余额print (fz,threadName)存入num元,账户余款temp元n)time, sleep (random, randint (1, 2) #睡眠1 -2秒,模拟存款花费的时间money =
26、tempmyLock. release ()#线程执行体函数 def run ():for i in range(3): saveMoney(100) #主程序if _name_ 二二_mainmoney = 0myLock=th. Lock ()#更新账户数据#开锁离开临界区#每次存款100元#账户余款初值#创立互斥锁创立线程1启动线程1#创立线程2stl=th. Thread(target=run) stl. start () st2二th. Thread(target=run)大数据、科学计算、云计算、云服务、网络爬虫、Web开发、桌面软件、游戏开发等领域。第2章Python的基础知识(
27、初遇城堡语言)一、判断题1. ( V)7. (X)2. (X)8. (X)3. ( V) 4. (X)9. (X)5. (V)6. (X)二、单项选择题1.D2.B3.D4.A5.A6.D7.C8.A9.B10.D11.D12.B13.D14.B15.B16.D17.C18.A19.A20.C21.D22.A23.B24.C25.D26.C27.D28.C29.A30.B31.B32.D33.B34.C35.D36.C37.B38.C39.A40.B41.A42.D43.C44.B45.C46.B47.C48.A49.C50.B51.I)52.D53.C54.B55.D56.B57.D三、填空
28、题1. True 和 False2. _8_3. _1_4. 浮点型(float)、布尔型 (bool) 和复数类型 (complex)5. 关系运算、逻辑运算、位运算四、名词解释1 .是指在运行期间才去做数据类型检查的语言。2 .在运行时可以改变其代码结构(如引进或删除函数与对象等)的语言。3 . 一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个 数据类型了。4 .是指Python语言中的各种成分(如变量、常量等)的名称。5 .是指其值可变的标识符。第3章流程控制语句(语句黑洞迷宫)一、判断题1. (X)7. ( V)2. ( V)8. (X)3. ( V)4. (X
29、)9. ( V)10.(X)5. ( V)11.(X)6. ( V)二、单项选择题1. D 2. B3. C8. C15. C9. B16. D10. C17. A4. B11. B18. B5. C12. D19. A6. C13. A20. A7. B14. B21. Dst2. start ()#启动线程2第11章tkinter GUI编程(修复被黑软件)一、判断题1.(V)2.(J)3.(X)7.(X)8.(V)9.(X)13.(X)14.(X)15.(V)4.(X)5.(V)6.(V)10.(V)11.(J)12.(X)16.(V)17.(X)18.(X)二、单项选择题1.C2.A3
30、.D4.C5.B6.D7.A8.B9.B10.A11.C12.B13.B14.C15.D16.B17.A18.D19.B20.C21.A22.D23.C24.B25.D26.C27.D28.A29.B30.C31.D32.B33.C34.B35.A35.D36.B37.C三、程序分析题1.1.解:以上代码的运行结果如下:2 .解:以上代码的运行结果如下:3 .解:以上代码的运行结果如下:四、程序设计题1 .解:参考代码如下:import tkinter as tkroot 二 tk. Tk()root, title(登录窗口)def reg():登录校验username = e_user. g
31、et()passwd = e_pwd. get ()len_user = len(username)len pwd = len(passwd)if username = admin and passwd = 123:l_msg,textJ =登录成功!=greenelse:1 msg. conf igure (text=登录失败! ,fg=red) e_user. delete (0, len user) # 清空输入框 e_pwd. delete(0, len_pwd)#第0行登录结果提示l_msg = tk. Label(root, text=)1 msg. grid (row=0, co
32、lumnspan=2) # 跨越两列显示# 第1行用户名输入框l_user = tk. Label (root, text=用户名:)l_user. grid(row=l, sticky=tk W)e_user = tk.Entry (root)e user, grid(row=l, column=l, sticky=tk.E, padx=3)# 第2行密码输入框l_pwd = tk. Label (root, text=密码:)l_pwd. grid(row=2, sticky=tk. E)e_pwd = tk.Entry (root)e_pwdshow=# 隐藏显示e_pwd. grid(
33、row=2, column=l, sticky=tk. E, padx=3)# 第3行登录按钮b_login = tk. Button (root, text=登录,command=reg)b_login. grid(row=3, column=l, sticky=tk. W, pady=10) b_cancel 二 tk. Button (root, text=取7肖,command=root, quit) b_cancel. grid(row=3, column=l) root, mainloop ()2 .解:参考代码如下: from tkinter import * root 二 Tk
34、()It二C+程序设计,java编程,python语言php程序设计 Itbox = Listbox(root) for item in It:Itbox. insert (0, item) Itbox. pack () root, mainloop ()3 .解:参考代码如下: from tkinter import * window = Tk ()window, title(按钮事件测试) window, geometry C 200x50,) var = StringVar() var. set (点击我呀) s = True def hitMe ():global s # s为全局变量
35、 if s:s = Falsevar. set (我被点击了) else:s = True var. set (点击我呀) #设置按钮b = Button (text=按钮,width=20 , textvar = var, command=hitMe) b. pack () window, mainloop ()4 .解:参考代码如下: import tkinter as tk import tkinter. messagebox as ms win = tk. Tk() win. title(菜单测试) menubar = tk. Menu(win) win,menu/,= menubar
36、 myMenu = tk. Menu(menubar)menubar. add cascade (label=菜单,menu=myMenu) menubar. add_comniand (label=退出,command=win. destroy)#定义菜单的事件处理方法def fileHandlingO :ms. showinfo(提示框,菜单项被点击!)1st =菜单项1,菜单项2,菜单项3for i in 1st:myMenu. add_command(label=i, command=fileHandling) win. mainloopO第12章Python的模块与库第12章Python的模块与库