《Python程序开发案例教程答案.docx》由会员分享,可在线阅读,更多相关《Python程序开发案例教程答案.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 开启Python学习之旅一、 填空题1. 对象2. 可移植性二、 判断题1. 2. 3. 三、 选择题1. D2. B3. D4. B5. D四、 简答题1. 答:简单易学,免费开源,可移植性、面向对象、丰富的库。2. 答:(1) Python2使用print语句进行输出,Python3使用print()函数进行输出。(2) Python 2中字符串有默认ASCII编码的str类型和unicode类型。Python 3中默认使用UTF-8编码,以更好地实现对中文或其它非英文字符的支持。(3) 使用运算符“/”进行除法运算时,Python 2中整数相除的结果是一个整数,浮点数相除的结果是
2、一个浮点数;Python 3中整数相除的结果也会得到浮点数。(4) 在Python 2中,所有类型的对象直接被抛出,在Python 3中,只有继承自BaseException的对象才可以被抛出。在Python 2中,捕获异常的语法是“except Exception, err”;在Python 3中,捕获异常的语法变更为“except Exception as err”。 在Python 2中,处理异常可以使用“raise Exception, args”或者“raise Exception(args)”两种语法;在Python 3中,处理异常只能使用“raise Exception(args
3、)”。 Python 3取消了异常类的序列行为和message属性。第2章 数字类型与字符串一、 填空题1. 复数类型,布尔类型2. 整型3. 实部,虚部二、 判断题1. 2. 3. 4. 三、 选择题1. D2. C3. A4. BD5. B四、 编程题1. 答案:print(Im from China)2. 答案:string = python是一种解释型语言 string = string.strip().capitalize()print(string)3. 答案:string = tsactiprint(string:-1)第3章 流程控制一、 填空题1. for,while2. i
4、f3. True二、 判断题1. 2. 3. 4. 三、 选择题1. B2. A3. C4. A5. B四、 编程题1. 答案:res = 0for i in range(101): res = res + iprint(res)2. 答案:i = 0while i 100: if i % 2 = 0: print(i) i += 13. 答案:i = 2for i in range(2, 100): j = 2 for j in range(2, i): if(i % j = 0): break else: print(i)第4章 列表与元组一、 填空题1. list2. 切片3. tupl
5、e二、 判断题1. 2. 3. 4. 三、 选择题1. A2. A3. C4. A5. C四、 编程题1.li_num1 = 4, 5, 2, 7li_num2 = 3, 6li_num1.extend(li_num2)li_num1.sort(reverse=True)print(li_num1)2.tu_num1 = (p, y, t, o, n)tu_num13.append(h)print(tu_num1)第5章 字典和集合一、 填空题1. 键 值2. 唯一3. keys()4. 元素5. 无序 元素不可重复二、 判断题1. 2. 3. 4. 三、 选择题1. A2. B3. B4.
6、C5. B四、 编程题1.# 遍历字符串,使用字典记录各个字符及其出现的次数str = skdaskerkjsalkjcount = for i in str:if i in count.keys():counti += 1else:counti = 1print(count)2.li_one = 1,2,1,2,3,5,4,3,5,7,4,7,8li_one = list(set(li_one)print(li_one)第6章 函数一、 填空题1. def2. lambda3. global二、 判断题1. 2. 3. 4. 5. 三、 选择题1. D2. C3. B4. C5. B四、 简
7、答题1. 不需要使用函数名标识;语句只能是一个表达式,可实现的功能比较单一;不能被其它程序使用。2. 位置参数:实际参数按照位置顺序依次传递给形式参数。关键字参数:通过“形式参数=实际参数”的格式将实际参数与形式参数相关联,根据形参的名称进行参数传递。不定长参数:不定长参数分为*args和*kwargs两种,它们都接收不定数量的位置参数,其中*args接收的多个参数以元组形式保存,*kwargs接收的多个参数以字典形式保存。五、 编程题1.sum = 0for i in range(0,101):if i % 2 = 0:sum += iprint(sum)2.pro = 1for i in
8、range(3,21):pro *= iprint(pro)第7章 面向对象程序设计一、 填空题1. class2. self3. super()4. 双下划线_二、 判断题1. 2. 3. 4. 三、 选择题1. D。解析:实例无法修改类属性,但可以访问类属性。2. A3. B4. A5. C四、 简答题1. 构造方法:类的默认可选方法,如果定义类时不显式提供,Python会给出默认的_init_()方法;构造方法在类实例化时自动调用。析构方法:类的默认可选方法,如果定义类时不显式提供,Python会给出默认的_del_()方法;构造方法在对象被清理时自动调用。2. 类方法的第一个参数为默认
9、参数cls,静态方法没有默认参数;类方法用关键字classmethod修饰,静态方法用关键字staticmethod修饰。3. Python支持继承机制,在定义新类时可以让新类继承已有类,如此新类可直接获取已有类中的成员;Python中的继承分为单继承和多继承,被继承的类称为父类或基类,新类称为子类或派生类,继承一般用于扩展类的功能;子类可以重写从父类继承来的方法,亦可定义新的方法。五、 编程题答案:class Circle:radius = 1def _init_(self,r):self.radius = rdef get_perimeter(self):perimeter = 2*3.1
10、4*self.radiusreturn perimeterdef get_area(self):area = 3.14 * self.radius * self.radiusreturn areacircle = Circle(4)per = circle.get_perimeter()area = circle.get_area()print(perimeter=%.2f%per)print(area=%.2f%area)第8章 模块一、 填空题1. 第三方模块 自定义模块2. import 模块 from 模块 import 函数/方法3. _init_.py二、 判断题1. 2. 3.
11、4. 5. 三、 选择题1. D2. A3. D4. B5. D四、 简答题1. 编简述包中_init_.py文件的作用。答:_init_.py文件有两个作用,第一个作用是标识当前目录是一个Python的包;第二个作用是模糊导入,如果_init_文件中没有声明_all_属性,那么使用from . import *导入的内容为空 。2. 请简述_name_属性的用法。答:_name_这个系统变量显示了当前模块执行过程中的名称,如果当前程序运行在这个模块中,_name_ 的名称就是_main_如果不是,则为这个模块的名称。_main_一般作为函数的入口,常常有if _name_ = _main_:
12、来表明整个工程开始运行的入口。第9章 文件与文件路径操作一、 填空题1. close()2. join()3. listdir()二、 判断题1. 2. 3. 4. 5. 三、 选择题1. C。readlines()方法返回值是一个列表。2. C3. C4. C5. A四、 简答题1. 文件相对路径指这个文件夹所在的路径与其它文件(或文件夹)的路径关系,绝对路径指盘符开始到当前位置的路径。2. 文件读写位置属性用于记录文件当前读写的位置。五、 编程题答案:source_file = open(words_file.txt, r,encoding=utf-8)new_file = open(ne
13、w_file.txt,w+,encoding=utf-8)content = source_file.read(1)while content: if content = Z: content = A elif content = z: content = a elif (ord(content) in range(65,90) or (ord(content) in range(97,122): content = chr(ord(content)+1) new_file.write(content) content = source_file.read(1)source_file.clos
14、e()new_file.close()第10章 错误和异常一、 填空题1. BaseException2. try3. 上下文管理器二、 判断题1. 2. 3. 4. 三、 选择题1. D2. B3. A4. A5. A四、 简答题1. 请简述try_except的用法和作用。答:作用:try-except语句用于捕获程序运行时的异常;用法:try子句后面是可能出错的代码,except子句后面是捕获的异常类型。2. with语句如何实现资源的自动关闭。答:with语句适用于对资源进行访问的场合,无论资源在使用过程中是否发生异常,都可以使用with语句保证执行释放资源操作,这是因为with语句使
15、用了上下文管理的技术管理资源,上下文管理技术中提供_enter_()和_exit_()方法,进入上下文管理器时调用_enter_()方法,当离开上下文管理器时调用_exit_()方法。第11章 正则表达式一、 填空题1. re2. sub() subn()3. 非贪婪二、 判断题1. 2. 3. 4. 5. 三、 选择题1. D2. D3. D4. A5. A四、 简答题1.import restr_data = url_regex = pile(https?:/(?:a-zA-Z|0-9|$-_.&+| !*(),|(?:%0-9a-fA-F0-9a-fA-F)+)print(url_reg
16、ex.findall(str_data)2.import restr_data = 15732xxemail_regex = pile(0-9a-zA-Z_0,190-9a-zA-Z 1,,cn,net1,3$)print(email_regex.findall(str_data)第12章 图形用户界面编程一、 填空题1. messagebox2. text3. Entry()方法4. Menu()方法二、 判断题1. 2. 3. 4. 5. 三、 选择题1. A2. B3. A4. A5. A第13章 进程和线程一、 填空题1. 进程2. 03. 共享4. 前台5. 锁定二、 判断题1. 2
17、. 3. 4. 5. 三、 选择题1. C2. B3. D4. A5. D四、 简答题1. 答:主线程的作用主要有两个,一个是产生其他子线程,另一个是最后执行各种关闭操作。2. 答:死锁是指两个或两个以上的线程在执行过程中,由于各自持有一部分共有资源或者彼此通信而造成的一种阻塞的现象。五、 编程题import threadingimport timeclass PrintNum(threading.Thread): def run(self): for i in range(1, 52, 2): lock_show2.acquire() print(i, end=) print(i + 1,
18、end=) time.sleep(0.2) lock_show1.release()class PrintWord(threading.Thread): def run(self): for i in range(26): lock_show1.acquire() print(chr(i + ord(A) time.sleep(0.2) lock_show2.release()lock_show1 = threading.Lock()lock_show2 = threading.Lock()thread_one = PrintNum()thread_two = PrintWord()# 因为线
19、程执行顺序是无序的,保证show1()先执行lock_show1.acquire() thread_one.start()thread_two.start()第14章 网络编程一、 填空题1. 传输2. 0655353. socket()4. 27-2,214-2,221-25. recv() recvfrom()。二、 判断题1. 2. 3. 4. 。在python3中,所有数据的传输必须用bytes类型(bytes只支持ascii码),所以在发送数据时需在发送的字符串前面加 b,或使用encode(utf-8)将字符串转换成bytes类型并在接收端使用decode()进行转码。5. 三、
20、选择题1. C2. D3. B4. D5. B四、 简答题基于TCP协议的通信流程:基于UDP协议的通信流程:五、 编程题服务器端:#01_tcp_ser.pyimport socketdef main(): #1.create socket tcp_ser_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #2.bind tcp_ser_sock.bind(192.168.40.129,8080) #3.listen tcp_ser_sock.listen(1000) while True: #4.accept print(wai
21、ting for client.) cli_sock,cli_addr = tcp_ser_sock.accept() #print user info print(a guest arrived(%s) % str(cli_addr) while True: #5.recv msg recv_data = cli_sock.recv(1024) print(recvived msg:%s % recv_data.decode(utf-8) if recv_data: result = eval(recv_data.decode(utf-8) cli_sock.send(str(result)
22、.encode(utf-8) else: break #6.after communication,close cli_sock cli_sock.close() print(sign off.) tcp_ser_sock.close()if _name_=_main_: main()客户端:#01_tcp_cli.pyimport socket#tcp client process def main(): #1.create sock cli_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #2.connect server c
23、li_sock.connect(192.168.40.129,8080) #3.send msg while True: send_msg = input(pls input sth:) cli_sock.send(send_msg.encode(utf-8) recvInfo = cli_sock.recv(1024).decode(utf-8) print(%s%recvInfo) #4.close socket cli_sock.colse()if _name_=_main_: main()第15章 数据库编程一、 填空题1. 数据结构2. 关系模型3. 文档结构4. 连接二、 判断题1
24、. 2. 3. 4. 三、 选择题1. C2. ABCD3. A4. B5. D四、 简答题1. 答:数据库是按照数据结构来组织、存储和管理数据的仓库,它可以被看作电子化的文件柜存储文件的处所,用户可以对文件中的数据进行增加、删除、修改、查找等操作。2. 关系型数据库是指采用关系模型(即二维表格形式)组织数据的数据库系统,它由数据表和数据表之间的关系组成;非关系型数据库也被称为NoSQL(Not Only SQL)数据库,是指非关系型的、分布式的数据存储系统。与关系型数据库相比,非关系型数据库无需事先为要存储的数据建立字段,它没有固定的结构,既可以拥有不同的字段,也可以存储各种格式的数据。五、
25、 编程题import pymysql# 连接数据库conn = pymysql.connect( host=localhost, user=root, password=123456, charset=utf8)# 获得游标cursor = conn.cursor()# 创建数据库db_student = create database if not exists dbtestcursor.execute(db_student)# 创建数据表sql_use = use dbtestcursor.execute(sql_use)sql_table = create table if not ex
26、ists students(stuID int primary key, stuName varchar(20), stuGender varchar(20), stuAge int)cursor.execute(sql_table)# 插入数据sql_one = insert into students (stuID, stuName, stuGender, stuAge) values (%d, %s, %s, %d)data1 = (1, 张三, 女, 20)data2 = (2, 李四, 男, 21)data3 = (3, 王五, 女, 20)data4 = (4, 赵六, 男, 19
27、)data5 = (5, 孙七, 女, 22)for i in data1, data2, data3, data4, data5: cursor.execute(sql_one % i)mit()# 修改数据sql = update students set stuAge = %d where stuID = %ddata = (21, 5)cursor.execute(sql % data)mit()# 查询数据sql = select stuID, stuName from students where stuGender = 女cursor.execute(sql)for row in
28、 cursor.fetchall(): print(学号:%d 姓名:%s % row)# 删除数据sql = delete from students where stuID = %d limit %ddata = (5, 1)cursor.execute(sql % data)mit()print(共删除%d条数据 % cursor.rowcount)cursor.close() # 关闭游标conn.close() # 关闭连接第16章 Django框架介绍一、 填空题1. 静态文件2. WSGI3. django-admin startproject 项目名称4. python man
29、age.py startapp 应用名称5. python manage.py runserver二、 判断题1. (URL由协议名、服务器地址、资源路径组成)2. 3. 4. 5. 三、 选择题1. C2. B3. C4. D5. B四、 简答题1.答:WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口2.答:(1)服务器接收浏览器发来的请求后交由View视图进行处理;(2)View视图接收数据后,将数据传递Model模型中;(3)Model模型将数据保存到数据库中;(4)数据库将保存结果返回给Model模型;(5)Model模型将保存结果返回给View视图;(6)View视图将结果传递到Template模板;(7)Template模板根据View视图传递的结果生成HTML页面并返回给View视图;(8)View视图将HTML页面交由浏览器进行解析展示
限制150内