《Python程序设计》习题与答案python教材答案
Python程序设计课后习题答案-第一单元
习题1一、选择题1.Python语言属于()。
CA.机器语言B.汇编语言C.高级语言D.科学计算语言2.下列选项中,不属于Python特点的是()。
BA.面向对象B.运行效率高C.可读性好D.开源3.Python程序文件的扩展名是()。
DA..python B..pyt C..pt D..py4.以下叙述中正确的是()。
CA.Python 与Python 兼容B.Python语句只能以程序方式执行C.Python是解释型语言D.Python语言出现得晚,具有其他高级语言的一切优点5.下列选项中合法的标识符是()。
AA._7a_b B.break C._a$b D.7ab6.下列标识符中合法的是()。
BA.i'm B._ C.3Q D.for7.Python不支持的数据类型有()。
AA.char B.int C.floatD.list8.关于Python中的复数,下列说法错误的是()。
BA.表示复数的语法形式是a+bj B.实部和虚部都必须是浮点数C.虚部必须加后缀j,且必须是小写 D.函数abs()可以求复数的模9.函数type(1+0xf*的返回结果是()。
DA.<class 'int'> B. <class 'long'>C.<class 'str'> D. <class 'float'>10.字符串s='a\nb\tc',则len(s)的值是()。
CA.7 B.6 C.5 D.411.Python语句print(0xA+0xB)的输出结果是()。
DA.0xA+0xB B.A+BC.0xA0xB D.2112.下列属于math库中的数学函数的是()。
CA.time() B.round() C.sqrt() D.random()13.Python表达式中,可以使用()控制运算的优先顺序。
《Python程序设计基础》习题答案与分析
《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>>> id(x)10417624>>> y = 3>>> id(y)10417624>>> y = 5>>> id(y)10417600>>> id(x)10417624>>> x = [1, 2, 3, 1, 1, 2]>>> id(x[0])==id(x[3])==id(x[4])True1.3 解释Python中的运算符“/”和“//”的区别。
答:在Python 2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python 3.x中,“/”为真除法,与除法的数学含义一致。
Python程序设计课后习题答案-第一单元
习题1一、选择题1.Python语言属于()。
CA.机器语言 B.汇编语言 C.高级语言 D.科学计算语言2.下列选项中,不属于Python特点的是().BA.面向对象 B.运行效率高 C.可读性好 D.开源3.Python程序文件的扩展名是( ).DA.。
python B.。
pyt C..pt D..py4.以下叙述中正确的是()。
CA.Python 3.x与Python 2.x兼容B.Python语句只能以程序方式执行C.Python是解释型语言D.Python语言出现得晚,具有其他高级语言的一切优点5.下列选项中合法的标识符是( )。
AA._7a_b B.break C._a$b D.7ab 6.下列标识符中合法的是()。
BA.i'm B._ C.3Q D.for 7.Python不支持的数据类型有().AA.char B.int C.float D.list8.关于Python中的复数,下列说法错误的是()。
BA.表示复数的语法形式是a+bj B.实部和虚部都必须是浮点数C.虚部必须加后缀j,且必须是小写 D.函数abs()可以求复数的模9.函数type(1+0xf*3.14)的返回结果是()。
DA.〈class ’int’> B.〈class ’long'>C.<class ’str’〉 D. <class 'float'>10.字符串s='a\nb\tc',则len(s)的值是().CA.7 B.6 C.5 D.411.Python语句print(0xA+0xB)的输出结果是( )。
DA.0xA+0xB B.A+BC.0xA0xB D.2112.下列属于math库中的数学函数的是( )。
CA.time() B.round() C.sqrt() D.random()13.Python表达式中,可以使用( )控制运算的优先顺序。
《Python程序设计》课后习题参考答案
第1章一、选择题1.B2.D3.C4.C二、简答题1.(1)简单易学(2)解释性(3)可移植性(4)可扩展性(5)面向对象(6)丰富的库2.(1)Web应用开发(2)自动化运维(3).网络安全(4).网络爬虫(5).游戏开发(6).数据分析(7).人工智能三、编程题1.print('Hello, World!.')2.print('***********************************')print('\t\tHello Python World!')print('***********************************')第2章2.6习题一、选择题1.C2.D3.C4.A5.B6.D二、填空题2.26 2.type()3.274. -5.75; -6 5. False三、简答题1.(1)变量名必须由字母、数字、或者下划线(_)组成。
(2)不能使用空格、连字符、标点符号、引号等其他特殊字符。
(3)以字母或下划线开头,但不能以数字开头(4)严格区分大小写。
(5)要避免与Python关键字和函数名冲突2. 见表2.4.第3章3.4综合实验#1s1 = " keep on going never give up "s2 = s1.capitalize()print(s2)#2s3 = s2.strip()print(s3)#3print (s3.endswith('up'))#4print (s3.startswith('on'))#5print (s3.replace('e','aa'))#6print (s3.split('n'))#7print (s3.upper())#8n1 = 'Lily'print ('%s says: %s.'%(n1,s3))#9print (s3.center(40,'#'))#10print (s3.count('e'))#11print (s3.split())#12print ('/'.join(s4))#13print (' '.join(s4[::-1]))3.5 习题一、选择题1.B2.D3.C4.C二、填空题1. 'moon'2. 'shipfriend'3. 54. 'bEIjING'5. spam三、编程题1.str1 = 'I want to go to Beijing, Berli and Beijing this year. How about you?' str2 = str1.split()str2 = ' '.join(str2)print (str2)2.思路:(1).变量名的第一个字符是否为字母或下划线(2).如果是,继续判断--> 4(3).如果不是,报错(4).依次判断除了第一个字符之外的其他字符(5).判断是否为字母数字或者下划线while True:s = input('请输入字符(q退出):')if s == 'q':exit()#判断字符串第一个变量是否满足条件if s[0].isalpha() or s[0] == '_':for i in s[1:]:#判断判断除了第一个元素之外的其他元素是否满足条件if i.isalnum() or i == '_':continueelse:print('不合法')breakelse:print('合法')else:print('不合法')3.#!/usr/bin/env python#coding:utf-8s = input("输入:")s1 = s.split(" ")s2 = s1[0].upper()s3 = s1[-1].upper()print (s2.count(s3))4.s = input('input a string:\n')letters, space, digit, others = 0,0,0,0for c in s:if c.isalpha():letters += 1elif c.isspace():space += 1elif c.isdigit():digit += 1else:others += 1print ('char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others))第4章4.4 综合实验#01fav_city = []#02fav_city.append('Qinghai')fav_city.append('Chengdu')fav_city.append('Dalian')fav_city.append('Xizang')fav_city.append('Haerbin')print (fav_city)#03fav_city[0] = 'Qingdao'#04fav_city.insert(2,'Kunming')#05del fav_city[0]#06fav_city.remove('Xizang')#07fav_city.sort()#08fav_city.reverse()#09for city1 in fav_city:print (city1)#10tuple_city = tuple(fav_city)#11len(tuple_city)4.5 习题一、选择题1.D2.A3.B4.D5.C二、填空题1.[123,22, 123,22]2.x = [1,3,5,7,9]3. [11,22,33,11]4. Flase5. b= [::2]6. (6,)三、编程题#1import randomx = [random.randint(0,100) for i in range(10)]x.sort()print (x)#2.list1 = ['Hollywood', 'Mexico', 'New Delhi', 'Tokyo'] item = list1.pop(0)list1.append(item)print (list1)#3a = int(input('a:'))for b in x:if a < b:x.insert(x.index(b),a)breakelse:x.append(a)print (x)#3x.pop()x[:5] = sorted(x[:5] ,reverse = True)x[5:] = sorted(x[5:])print (x)4.#列表推导法list1 = [22,11,33,22,44,33]temp_list=[]for x in list1:if x not in temp_list:temp_list.append(x)print (temp_list) #输出结果未排序#排序方法list1 = [22,11,33,22,44,33]list2 = sorted(list1)temp_list = []i = 0while i < len(list2):if list2[i] not in temp_list:temp_list.append(list2[i])else:i += 1print (temp_list) #输出结果已排序第5章字典综合实验1.Qing_Hai = ['qinghai','xining','青',8,'810000']Si_Chuan = ['sichuan','chengdu','川',21,'610000']Gan_Su = ['gansu','lanzhou','陇',14,'730000']Ning_Xia = ['ningxia','yinchuan','宁',5,'750000']Nei_MengGu = ['neimenggu','huhehaote','内蒙古',12,'010000'] Shaan_Xi = ['shaanxi','xian','陕',10,'710000']Shan_Xi = ['shanxi','taiyuan','晋',11,'030000']He_Nan = ['henan','zhengzhou','豫',18,'450000']Shan_Dong = ['shandong','jinan','鲁',16,'250000']provinces = [Qing_Hai,Si_Chuan,Gan_Su,Ning_Xia,Nei_MengGu,Shaan_Xi,Shan_Xi,He_Nan,Shan_Dong] Yellow_River_basin = {}for province in provinces:Yellow_River_basin[province[0]] = province[1:]print(Yellow_River_basin)2.# 遍历嵌套字典的键for key in Yellow_River_basin.keys():print(key)# 遍历嵌套字典的值for value in Yellow_River_basin.values():print(value)# 遍历嵌套字典的键值对for key, value in Yellow_River_basin.items():print(key+"'s Capital is : %s "%value[0]+" For_short is : %s "%value[1]+"Area_manage is : %d个"%value[2]+"Postal_code is : %s"%value[3])3.for provinc in Yellow_River_basin.keys():if provinc == 'sichuan':Yellow_River_basin[provinc] = ['chengdu', '蜀', 21, '610000']elif provinc == 'gansu':Yellow_River_basin[provinc] = ['lanzhou', '甘', 14, '730000']elif provinc == 'shaanxi':Yellow_River_basin[provinc][1] = '秦'print(Yellow_River_basin)4qinghai = {'name':'QingHai','capital':'XiNing','for_short':'青','area_manage':8}sichuang = {'name':'SiChuan','capital':'ChengDu','for_short':'川','area_manage':21}gansu = {'name':'GanSu','capital':'LanZhou','for_short':'陇','area_manage':14}ningxia = {'name':'NingXia','capital':'YinChuan','for_short':'宁','area_manage':5}neimenggu = {'name':'Neimenggu','capital':'HuheHaote','for_short':'内蒙古','area_manage':12} shaanxi= {'name':'ShaanXi','capital':'XiAn','for_short':'陕','area_manage':10}shanxi = {'name':'ShanXi','capital':'TaiYuan','for_short':'晋','area_manage':11}henan = {'name':'HeNan','capital':'ZhengZhou','for_short':'豫','area_manage':18}shandong = {'name':'ShanDong','capital':'JiNan','for_short':'鲁','area_manage':16}basin_list = [qinghai,sichuang,gansu,ningxia,neimenggu,shaanxi,shanxi,henan,shandong] Postal_Code = ['810000','610000','730000','750000','010000','710000','030000','450000','250000']print(basin_list)5for province_num in range(len(basin_list)):basin_list[province_num]['postal_code'] = Postal_Code[province_num]print(basin_list)第5章综合实验一、选择题1.B2.C3.B4.D5.D二、简答题1.(1)字典的键(key)具有唯一性。
《Python程序设计方案》习题与答案
《Python程序设计方案》习题与答案Python程序设计方案-------------------------------------------引言:Python是一种广泛使用的编程语言,具备简洁明了的语法和强大的功能,因此在软件开发和数据分析等领域备受青睐。
本文将介绍一些Python程序设计的常见问题,并提供相应的习题与答案。
一、条件判断与循环Python中的条件判断和循环是编写程序的基本组成部分。
以下是一些与此相关的习题及其解答:1. 请编写一个Python程序,判断某个整数是否为奇数。
```pythonnum = int(input("请输入一个整数:"))if num % 2 == 0:print("该数为偶数")else:print("该数为奇数")```2. 编写一个Python程序,求解从1到100所有偶数的和。
```pythonsum = 0for i in range(1, 101):if i % 2 == 0:sum += iprint("1到100之间所有偶数的和为:", sum)```二、函数与模块函数和模块是Python程序设计中的重要概念,能够提高代码的复用性和可读性。
以下是与此相关的习题及其解答:1. 编写一个Python函数,判断一个字符串是否为回文。
即正序和倒序都相同的字符串。
```pythondef is_palindrome(s):return s == s[::-1]string = input("请输入一个字符串:")if is_palindrome(string):print("该字符串是回文")else:print("该字符串不是回文")```2. 使用Python的math模块,编写一个函数,计算圆的面积。
《Python程序设计》习题与答案python教材答案
《Python程序设计》习题与答案python教材答案《Python程序设计》习题与答案第一章:Python基础题目1:计算器程序设计答案:代码可以如下所示:```pythondef add(a, b):return a + bdef subtract(a, b):return a - bdef multiply(a, b):return a * bdef divide(a, b):if b == 0:return "Error: Division by zero is not allowed"return a / b```题目2:变量和数据类型答案:Python中的常见数据类型有整型(int)、浮点型(float)、字符串型(str)、布尔型(bool)等。
题目3:条件语句答案:条件语句用于根据不同的条件执行不同的代码块。
常见的条件语句有if语句、if-else语句和if-elif-else语句。
题目4:循环语句答案:循环语句用于多次执行相同或类似的代码块。
常见的循环语句有for循环和while循环。
第二章:函数和模块题目1:函数的定义和调用答案:函数是一段可重复使用的代码块,用于完成特定的任务。
函数的定义可以通过def关键字来实现,而函数的调用则通过函数名和参数完成。
题目2:内置函数答案:Python提供了丰富的内置函数,如print()、len()、input()等。
这些内置函数可以直接使用,无需额外定义。
题目3:模块的导入和使用答案:Python模块是一组相关的函数、类和变量的集合,用于组织、重用和扩展代码。
模块的导入可以使用import语句,然后通过模块名和函数名来调用模块中的内容。
第三章:文件操作题目1:文件的打开和关闭答案:文件操作前需要通过open()函数打开文件,在完成操作后需要使用close()函数关闭文件。
例如:```pythonfile = open("test.txt", "w")# 执行文件操作file.close()```题目2:读取文件内容答案:使用Python的read()函数可以读取整个文件的内容,或者使用readline()函数读取一行内容。
Python程序设计课后习题答案
习题1一、选择题1.Python语言属于()。
CA.机器语言B.汇编语言C.高级语言D.科学计算语言2.下列选项中,不属于Python特点的是()。
BA.面向对象B.运行效率高C.可读性好D.开源3.Python程序文件的扩展名是()。
DA..python B..pyt C..pt D..py4.以下叙述中正确的是()。
CA.Python3.x与Python2.x兼容B.Python语句只能以程序方式执行C.Python是解释型语言D.Python语言出现得晚,具有其他高级语言的一切优点5.下列选项中合法的标识符是()。
AA._7a_b B.break C._a$b D.7ab 6.下列标识符中合法的是()。
BA.i'm B._C.3Q D.for 7.Python不支持的数据类型有()。
AA.char B.int C.float D.list8.关于Python中的复数,下列说法错误的是()。
BA.表示复数的语法形式是a+bj B.实部和虚部都必须是浮点数C.虚部必须加后缀j,且必须是小写D.函数abs()可以求复数的模9.函数type(1+0xf*3.14)的返回结果是()。
DA.<class'int'>B.<class'long'>C.<class'str'>D.<class'float'>10.字符串s='a\nb\tc',则len(s)的值是()。
CA.7B.6C.5D.411.Python语句print(0xA+0xB)的输出结果是()。
DA.0xA+0xB B.A+BC.0xA0xB D.2112.下列属于math库中的数学函数的是()。
CA.time()B.round()C.sqrt()D.random() 13.Python表达式中,可以使用()控制运算的优先顺序。
《Python语言程序设计》第一章:初识python
《Python语言程序设计》第一章:初识python(100分)一、单选题(共20题)1、在python语言中,可以作为源文件的后缀名的是()。
【单选题】(4分)A.A、pyB.B、pycC.C、pythonD.D、pdf正确答案: A答案解析: 在python语言中py可以作为源文件的后缀名2、python语言属于()。
【单选题】(4分)A.A、机器语言B.B、汇编语言C.C、高级语言D.D、科学计算语言正确答案: C答案解析: python语言属于高级语言3、以下选项,不属于IPO模式的一部分的是()。
【单选题】(4分)A.A、Program(程序)B.B、Process(处理)C.C、Output(输出)D.D、Input(输入)正确答案: A答案解析: Program(程序)不属于IPO模式的一部分4、以下关于Python缩进的描述错误的是()。
【单选题】(4分)A.A、Python采用严格的缩进表示程序的格式框架,所有代码都需要在行前至少加一个空格B.B、缩进是可以嵌套的,从而形成多重缩进C.C、缩进表达了所属关系和代码块的所属范围D.D、判断、循环、函数等都能通过缩进包含一批代码正确答案: A答案解析: Python采用严格的缩进表示程序的格式框架,并所有代码都需要在行前至少加一个空格,只在指定判断,循环,函数等需要的地方添加5、以下对Python程序设计风格描述错误的是()。
【单选题】(4分)A.A、Python不允许把多条语句写在同一行B.B、Python中,需要把多行语句写在一行时,要用; 隔开C.C、Python语句中,增加缩进表示语句块的开始,减少缩进表示语句块的退出D.D、Python可以将一条长语句分成多行显示,使用续航符\正确答案: A答案解析: Python允许把多条语句写在同一行6、Python语言语句块的标记是()。
【单选题】(4分)A.A、逗号B.B、缩进C.C、/D.D、分号正确答案: B答案解析: Python语言语句块的标记是缩进7、Python源程序执行的方式是()。
《Python程序设计》练习题题库及答案解析
《Python程序设计》练习题题库及答案解析一、判断题1、Python 3.x和Python 2.x唯一的区别就是:print在Python 2.x中是输出语句,而在Python 3.x中是输出函数。
(错)2、继承自threading.Thread类的派生类中不能有普通的成员方法。
(错)3、扩展库os中的方法remove()可以删除带有只读属性的文件。
(错)4、使用内置函数open()且以”w”模式打开的文件,文件指针默认指向文件尾。
(错)5、使用内置函数open()打开文件时,只要文件路径正确就总是可以正确打开的。
(错)6、Python采用的是基于值得自动内存管理方式。
(对)7、在任何时刻相同的值在内存中都只保留一份(错)8、Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义。
(对)9、在Python中可以使用if作为变量名。
(错)10、在Python 3.x中可以使用中文作为变量名。
(对)11、Python变量名必须以字母或下划线开头,并且区分字母大小写。
(对)12、加法运算符可以用来连接字符串并生成新字符串。
(对)13、9999**9999这样的命令在Python中无法运行。
(错)14、3+4j不是合法的Python表达式。
(错)15、0o12f是合法的八进制数字。
(错)16、Python 2.x和Python 3.x中input()函数的返回值都是字符串。
(错)17、pip命令也支持扩展名为.whl的文件直接安装Python扩展库。
(对)18、只有Python扩展库才需要导入以后才能使用其中的对象,Python标准库不需要导入即可使用其中的所有对象和方法。
(错)19、在Python中0xad是合法的十六进制数字表示形式。
(对)20、3+4j 是合法Python数字类型。
(对)21、在Python中0oa1是合法的八进制数字表示形式。
(错)22、Python使用缩进来体现代码之间的逻辑关系。
《Python程序设计》习题与答案-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>>〉id(x)10417624〉〉> y = 3〉〉〉id(y)10417624〉>> y = 5〉〉> id(y)10417600>>> id(x)104176241.3 在Python中导入模块中的对象有哪几种方式?答:常用的有三种方式,分别为import 模块名[as 别名]●from 模块名import 对象名[ as 别名]●from math import *1.4 使用pip命令安装numpy、scipy模块.答:在命令提示符环境下执行下面的命令:pip install numpypip install scipy1.5 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字.例如用户输入1234,则程序输出12。
《PYTHON程序设计基础》习题答案与分析
Python程序设计基础习题答案与分析程昱第1章基础知识1.1简单说明如何选择正确的Python版本。
答:在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python2.x还是Python3.x,最高支持到Python2.7.6还是Python2.7.9。
这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。
同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。
尽管如此,Python3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python3.x系列的最高版本(目前是Python3.4.3)。
1.2为什么说Python采用的是基于值的内存管理模式?Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。
>>>x=3>>>id(x)10417624>>>y=3>>>id(y)10417624>>>y=5>>>id(y)10417600>>>id(x)10417624>>>x=[1,2,3,1,1,2]>>>id(x[0])==id(x[3])==id(x[4])True1.3解释Python中的运算符“/”和“//”的区别。
答:在Python2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python3.x中,“/”为真除法,与除法的数学含义一致。
《PYTHON程序设计基础》习题答案与分析
Python程序设计基础习题答案与分析程昱第1章基础知识1.1简单说明如何选择正确的Python版本。
答:在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python2.x还是Python3.x,最高支持到Python2.7.6还是Python2.7.9。
这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。
同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。
尽管如此,Python3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python3.x系列的最高版本(目前是Python3.4.3)。
1.2为什么说Python采用的是基于值的内存管理模式?Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。
>>>x=3>>>id(x)10417624>>>y=3>>>id(y)10417624>>>y=5>>>id(y)10417600>>>id(x)10417624>>>x=[1,2,3,1,1,2]>>>id(x[0])==id(x[3])==id(x[4])True1.3解释Python中的运算符“/”和“//”的区别。
答:在Python2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python3.x中,“/”为真除法,与除法的数学含义一致。
Python程序设计习题与答案
Python程序设计习题与参考答案第1章基础知识简单说明如何选择正确的Python版本;答:在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高反复安装和卸载上;同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新;尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 系列的最高版本目前是Python ;为什么说Python采用的是基于值的内存管理模式答:Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码;>>> x = 3>>> idx>>> y = 3>>> idy>>> y = 5>>> idy>>> idx在Python中导入模块中的对象有哪几种方式答:常用的有三种方式,分别为import 模块名 as 别名from 模块名 import 对象名 as 别名from math import使用pip命令安装numpy、scipy模块;答:在命令提示符环境下执行下面的命令:pip install numpypip install scipy编写程序,用户输入一个三位以上的整数,输出其百位以上的数字;例如用户输入1234,则程序输出12;提示:使用整除运算;答:x = input'Please input an integer of more than 3 digits:'try:x = intxx = xelse:except BaseException:print'You must input an integer.'import typesx = input'Please input an integer of more than 3 digits:'if typex = :print 'You must input an integer.'elif lenstrx = 4:print 'You must input an integer of more than 3 digits.' else:print xoinmapstr,resultx = input'Please input an integer less than 1000:'t = xi = 2result =while True:if t==1:breakif t%i==0:it = t/ielse:print x,'=',''.joinmapstr,result编写程序,至少使用2种不同的方法计算100以内所有奇数的和; x = i for i in range1,100 if i%2==1printsumxprintsumrange1,100::2编写程序,实现分段函数计算,如下表所示;x = input'Please input x:'x = evalxif x<0 or x>=20:print0elif 0<=x<5:printxelif 5<=x<10: print3x-5 elif 10<=x<20: printx-2第4章字符串与正则表达式假设有一段英文,其中有单独的字母“I”误写为“i”,请编写程序进行纠正;1不使用正则表达式x = "i am a teacher,i am man, and i am 38 years am not a businessman." x = 'i ','I 'x = ' i ',' I 'printx2使用正则表达式x = "i am a teacher,i am man, and i am 38 years am not a businessman." import repattern = r':^\w|\bi:^\w'while True:result = xif result:if 0 = 0:x = x:0+1+'I'+x0-1:else:x = x:0+'I'+x0-1:else:breakprintx假设有一段英文,其中有单词中间的字母“i”误写为“I”,请编写程序进行纠正;import rex = "I am a teacher,I am man, and I am 38 years am not a busInessman." printxpattern = r':\wI:\w'while True:result = xif result:if 0 = 0:x = x:0+1+'i'+x0-1:else:x = x:0+'i'+x0-1:else:breakprintx有一段英文文本,其中有单词连续重复了2次,编写程序检查重复的单词并只保留一个;例如文本内容为“This is is a desk.”,程序输出为“This is a desk.”1方法一import rex = 'This is a a desk.'pattern = r'\b\w+\s+\1{1,}\b'matchResult = xx = 1,xprintx2方法二x = 'This is a a desk.'pattern = r'P<f>\b\w+\b\sP=f'matchResult = xx = 0,1简单解释Python的字符串驻留机制;答:Python支持字符串驻留机制,即:对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本;这一点不适用于长字符串,即长字符串不遵守驻留机制,下面的代码演示了短字符串和长字符串在这方面的区别; >>> a = '1234'>>> b = '1234'>>> ida == idbTrue>>> a = '1234'50>>> b = '1234'50>>> ida == idbFalse编写程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词;import rex = input'Please input a string:'pattern = r'\ba-zA-Z{3}\b'printx第5章函数设计与使用答:原因是对于函数的默认值参数只会被处理一次,下次再调用函数并且不为默认值参数赋值时会继续使用上一次的结果,对于列表这样的结构,如果调用函数时为默认值参数的列表插入或删除了元素,将会得到保留,从而影响下一次调用;编写函数,判断一个整数是否为素数,并编写主程序调用该函数;import mathdef IsPrimev:n = intv+1for i in range2,n:if v%i==0:return 'No'else:return 'Yes'printIsPrime37printIsPrime60printIsPrime113编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果;def demov:capital = little = digit = other =0for i in v:if 'A'<=i<='Z':capital+=1elif 'a'<=i<='z':little+=1elif '0'<=i<='9':digit+=1else:other+=1return capital,little,digit,otherx = 'capital = little = digit = other =0'printdemox在Python程序中,局部变量会隐藏同名的全局变量吗请编写代码进行验证;答案:会;>>> def demo:a=3print a>>> a=5>>> demo3>>> a5编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和; def demov:printvprintmaxvprintsumvdemo1,2,3demo1,2,3,4demo1,2,3,4,5编写函数,模拟内置函数sum;def Sumv:s = 0for i in v:s += ireturn sx = 1,2,3,4,5printSumxx = 1,2,3,4,5printSumx编写函数,模拟内置函数sorted;def Sortedv:t = v::r =while t:tt = mint ttttreturn rx = 1,3,5,2,1,0,9,7 printxprintSortedx第6章面向对象程序设计继承节例2中的Person类生成Student类,填写新的函数用来设置学生专业,然后生成该类对象并显示信息;import typesclass Personobject: 基类必须继承于object,否则在派生类中将无法使用super 函数def __init__self, name = '', age = 20, sex = 'man':nameagesexdef setNameself, name:if not isinstancename,str:print'name must be string.'return= namedef setAgeself, age:if not isinstanceage,int:print'age must be integer.'return= agedef setSexself, sex:if sex = 'man' and sex = 'woman':print'sex must be "man" or "woman"'return= sexdef showself:printprintprintclass StudentPerson:def __init__self, name='', age = 30, sex = 'man', major = 'Computer': 调用基类构造方法初始化基类的私有数据成员superStudent, self.__init__name, age, sexmajor 初始化派生类的数据成员def setMajorself, major:if not isinstancemajor, str:print'major must be a string.'return= majordef showself:superStudent, self.showprintif __name__ =='__main__':zhangsan = Person'Zhang San', 19, 'man'lisi = Student'Li Si',32, 'man', 'Math'设计一个三维向量类,并实现向量的加法、减法以及向量与标量的乘法和除法运算;class Vecter3:def __init__self, x=0, y=0, z=0:= x= y= zdef __add__self, n:r = Vecter3= += += +return rdef __sub__self, n:r = Vecter3= -= -= -return rdef __mul__self, n:r = Vecter3= n= n= nreturn rdef __truediv__self, n:r = Vecter3= / n= / n= / nreturn rdef __floordiv__self, n:r = Vecter3= 类名__xxx”这样的特殊方式来访问;Python中没有纯粹的C++意义上的私有成员;与运算符“”对应的特殊方法名为__pow__ ,与运算符“.except...else...语句;3在实际开发中,同一段代码可能会抛出多个异常,需要针对不同的异常类型进行相应的处理;为了支持多个异常的捕捉和处理,Python提供了带有多个except 的异常处理结构,这类似于多分支选择结构,一旦某个except捕获了异常,则后面剩余的except子句将不会再执行;语法为:try:try块被监控的语句except Exception1:except块1 处理异常1的语句except Exception2:except块2 处理异常2的语句4将要捕获的异常写在一个元组中,可以使用一个except语句捕获多个异常,并且共用同一段异常处理代码,当然,除非确定要捕获的多个异常可以使用同一段代码来处理,并不建议这样做;5最后一种常用的异常处理结构是try...except...finally...结构;在该结构中,finally子句中的内存无论是否发生异常都会执行,常用来做一些清理工作以释放try子句中申请的资源;语法如下:try:……finally:...... 无论如何都会执行的代码异常和错误有什么区别答:异常是指因为程序执行过程中出错而在正常控制流以外采取的行为;严格来说,语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象,或者试图访问不存在的文件,等等;使用pdb模块进行Python程序调试主要有哪几种用法答:主要有三种方式,1在交互模式下使用pdb模块提供的功能可以直接调试语句块、表达式、函数等多种脚本;2在程序中嵌入断点来实现调试功能在程序中首先导入pdb模块,然后使用在需要的位置设置断点;如果程序中存在通过该方法调用显式插入的断点,那么在命令提示符环境下执行该程序或双击执行程序时将自动打开pdb调试环境,即使该程序当前不处于调试状态;3使用命令行调试程序在命令行提示符下执行“python –m pdb 脚本文件名”,则直接进入调试环境;当调试结束或程序正常结束以后,pdb将重启该程序;Python内建异常类的基类是 BaseException ;断言语句的语法为 assert ;Python上下文管理语句是 with ;第9章 GUI编程设计一个窗体,并放置一个按钮,单击按钮后弹出颜色对话框,关闭颜色对话框后提示选中的颜色;import wxclass wxGUI:def OnInitself:frame = parent=None, title='wxGUI', size=160,140panel = frame, -1buttonOK = panel, -1, 'OK', pos=0,0, , buttonOKreturn Truedef OnButtonOKself, event:colorDlg = Nonecolor = .Colourstrcolorapp = wxGUI设计一个窗体,并放置一个按钮,按钮默认文本为“开始”,单击按钮后文本变为“结束”,再次单击后变为“开始”,循环切换;import wxclass wxGUI:def OnInitself:frame = parent=None, title='wxGUI', size=160,140panel = frame, -1= panel, -1, 'Start', pos=0,0, ,return Truedef OnButtonOKself, event:if text == 'Start':elif text == 'End':app = wxGUI设计一个窗体,模拟登录界面,当用户输入号码123456和密码654321时提示正确,否则提示错误;import wxclass wxGUI:def OnInitself:frame = parent=None, title='Login', size=250,150, pos=350,350 panel = frame, -1label1 = panel, -1, 'UserName:', pos=0,10, style=label2 = panel, -1, 'Password:', pos=0,30, style= = panel, -1, pos=70,10, size=160,20= panel, -1, pos=70,30, size=160,20,style=buttonOK = panel, -1, 'OK', pos=30,60, , buttonOKbuttonCancel = panel, -1, 'Cancel', pos=120,60, , buttonCancelreturn Truedef OnButtonOKself, event:if usrName=='123456' and usrPwd=='654321':'Right'else:'Wrong'def OnButtonCancelself, event:passapp = wxGUI第10章网络程序设计简单解释TCP和UDP协议的区别;答:TCP协议是面向连接的、具有质量保证的可靠传输协议,但开销较大;UDP协议是尽最大能力传输的无连接协议,开销小,常用于视频在线点播Video On Demand, VOD之类的应用;TCP协议和UDP协议并没有优劣之分,仅仅是适用场合有所不同;同学之间合作编写UDP通信程序,分别编写发送端和接收端代码,发送端发送一个字符串“Hello world”;假设接收端在计算机的5000端口进行接收,并显示接收内容;答:首先使用ipconfig/all命令查看本机IP地址,然后分别编写下面的代码,并将其中的IP地址替换为相应的IP地址;接收端代码:import sockets=,"", 5000 空字符串表示本机任何可用IP地址data, addr=1024 缓冲区大小为1024字节print ' received message:%s' % data 显示接收到的内容发送端代码:import sockets=,0主机的IP地址简单介绍socket模块中用于TCP编程的常用方法;TCP一般用于要求可靠数据传输的场合;编写TCP程序时经常需要用到的socket模块方法主要有:connectaddress:连接远程计算机sendbytes,flags:发送数据recvbufsize,flags:接收数据bindaddress:绑定地址listenbacklog:开始监听,等待客户端连接accept:响应客户端的请求编写代码读取搜狐网页首页内容;答:>>> import>>> dir'>>> dirfp>>> print100>>>在自己的机器上配置IIS以支持Python脚本的运行,然后使用Python编写脚本,运行后在网页上显示“Hello world”;答:核心代码为printprint 'Status: 200 OK'print 'Content-type: text/html'printprint '<HTML><HEAD><TITLE>Python Sample CGI</TITLE></HEAD>' print '<BODY>'print '<H1>This is a header</H1>'print '<p>Hello world'print '<br>'print '</BODY>'第11章大数据处理简单介绍常见的大数据处理框架;答:主要有三种,MapReduce:分布式计算框架,可以将单个大型计算作业分配给多台计算机执行,可以在短时间内完成大量工作,尤其适合数值型和标称型数据,但需要对行业领域具有一定理解后重写算法来完成特定的业务处理要求;MapReduce的名字由函数式编程中常用的map和reduce两个单词组成;MapReduce在大量节点组成的集群上运行,工作流程是:单个作业被分成很多小份,输入数据也被切片并分发到每个节点,每个节点只在本地数据上做运算,对应的运算代码称为mapper,这个过程即map阶段;每个mapper的输出通过某种方式组合,根据需要可能再进行重新排序,排序后的结果再被切分成小份并分发到各个节点进行下一步处理,这个过程被称为reduce阶段,对应的代码称为reducer;不同类型的作业可能需要不同数量的reducer,并且,在任何时候,每个mapper或reducer之间都不进行通信,每个节点只负责处理自己的事务,并且只在分配到本地的数据集上进行运算;Hadoop:Hadoop是MapReduce框架的一个免费开源实现,采用Java语言编写,支持在大量机器上分布式处理数据;除了分布式计算之外,Hadoop还自带分布式文件系统,可以在上面运行多种不同语言编写的分布式程序;Hadoop在可伸缩性、健壮性、计算性能和成本上具有无可替代的优势,事实上已成为当前互联网企业主流的大数据分析平台;Spark:Spark是一个针对超大数据集合的低延迟集群分布式计算系统,比MapReduce快40倍左右;Spark是Hadoop的升级版本,兼容Hadoop的API,能够读写Hadoop的HDFS HBASE 顺序文件等,与之不同的是将结果保存在内存中; Hadoop作为第一代产品使用了HDFS,第二代加入了Cache来保存中间计算结果,第三代则是Spark倡导的流技术Streaming;运行本章中代码并理解MapReduce编程思路;答:略第12章 Windows系统编程查阅相关资料,解释注册表几大根键的用途;答:略选择一个编写好的Python程序,将其转换为exe可执行文件;答:略,请参考书中相关介绍;编写代码,使用至少3中不同的方法启动Windows自带的计算器程序;答:第一种方法:>>> import os>>> ''第二种方法:>>> import os>>> ''第三种方法:>>> import os>>> ''第四种方法:>>> import win32api>>> 0, 'open', '', '', '', 1第五种方法:>>> import win32process>>> handle=r'c:\windows\system32\','', None,None,0, , None, None, 编写代码,检测您所使用的操作系统版本;答:略,请参考节;第13章多线程编程简单叙述创建线程的方法;答:Thread类支持使用两种方法来创建线程,一种是为构造函数传递一个可调用对象,另一种是继承Thread类并在派生类中重写__init__和run方法;创建了线程对象以后,可以调用其start方法来启动,该方法自动调用该类对象的run方法,此时该线程处于alive状态,直至线程的run方法运行结束;简单叙述Thread对象的方法;答:1jointimeout:阻塞当前线程,等待被调线程结束或超时后再继续执行当前线程的后续代码,参数timeout用来指定最长等待时间,单位为秒;2isAlive:测试线程是否处于运行状态3start:自动调用run方法,启动线程,执行线程代码;4run:线程代码,用来实现线程的功能与业务逻辑,可以在子类中重写该方法来自定义线程的行为;简单叙述线程对象的daemon属性的作用和影响;答:在脚本运行过程中有一个主线程,若在主线程中创建了子线程,当主线程结束时根据子线程daemon属性值的不同可能会发生下面的两种情况之一:1当某子线程的daemon属性为False时,主线程结束时会检测该子线程是否结束,如果该子线程尚未完成,则主线程会等待它完成后再退出;2当某子线程的daemon属性为True 时,主线程运行结束时不对该子线程进行检查而直接退出,同时所有daemon值为True的子线程将随主线程一起结束,而不论是否运行完成;daemon属性的值默认为False,如果需要修改,则必须在调用start方法启动线程之前进行修改;解释至少3种线程同步方法;答:(1)使用Condition对象可以在某些事件触发后才处理数据,可以用于不同线程之间的通信或通知,以实现更高级别的同步;Condition对象除了具有acquire 和release方法之外,还有wait、notify、notify_all等方法;下面通过经典生产者/消费者问题来演示Condition对象的用法;(2)Queue模块在Python 3中为queue模块实现了多生产者/多消费者队列,尤其适合需要在多个线程之间进行信息交换的场合,该模块的Queue对象实现了多线程编程所需要的所有锁语义;(3)Event对象是一种简单的线程通信技术,一个线程设置Event对象,另一个线程等待Event对象;Event对象的set方法可以设置Event对象内部的信号标志为真;clear方法可以清除Event对象内部的信号标志,将其设置为假;isSet 方法用来判断其内部信号标志的状态;wait方法只有在其内部信号状态为真时将很快地执行并返回,若Event对象的内部信号标志为假,wait方法将一直等待至超时或内部信号状态为真;第14章数据库编程简单介绍SQLite数据库;答:SQLite是内嵌在Python中的轻量级、基于磁盘文件的数据库管理系统,不需要服务器进程,支持使用SQL语句来访问数据库;该数据库使用C语言开发,支持大多数SQL91标准,支持原子的、一致的、独立的和持久的事务,不支持外键限制;通过数据库级的独占性和共享锁定来实现独立事务,当多个线程同时访问同一个数据库并试图写入数据时,每一时刻只有一个线程可以写入数据;SQLite支持2TB 大小的单个数据库,每个数据库完全存储在单个磁盘文件中,以B+树数据结构的形式存储,一个数据库就是一个文件,通过简单复制即可实现数据库的备份;使用Python内置函数dir查看Cursor对象中的方法,并使用内置函数help 查看其用法;答:略;叙述使用Python操作Access数据库的步骤;答:1建立数据库连接importDSN2打开记录集rs_name = 'MyRecordset' 表名'' + rs_name + '', conn, 1, 33操作记录集4操作数据sql_statement = "Insert INTO Table_Name Field_1, Field_2 VALUES 'data1', 'data2'"DSNsql_statement5遍历记录count = 0while 1:if :breakelse:count = count + 1叙述使用Python操作MS SQL Server数据库的步骤;答:可以使用pywin32和pymssql两种不同的方式来访问MS SQL Server数据库;先来了解一下pywin32模块访问MS SQL Server数据库的步骤;1添加引用:import adodbapiimport as adc2创建连接:Cfg =constr = r"Provider=; Initial Catalog=%s; Data Source=%s; user ID=%s; Password=%s; "% Cfg'db', Cfg'server', 'sa', Cfg'password'conn = constr3执行sql语句:cur =sql = '''select from softextBook where title='{0}' and remark3='{1}''''.formatbookName,flagsqldata =4执行存储过程:假设proName有三个参数,最后一个参数传了nullret = 'procName',parm1,parm2,None5关闭连接接下来再通过一个示例来简单了解一下使用pymssql模块访问MS SQL Server 数据库的方法;import pymssqlconn = host='SQL01', user='user', password='password', database='mydatabase'cur ='CREATE TABLE personsid INT, name VARCHAR100'"INSERT INTO persons VALUES%d, ", 1, 'John Doe', 2, 'Jane Doe''SELECT FROM persons WHERE salesrep=', 'John Doe'row =while row:print "ID=%d, Name=" % row0, row1row ="SELECT FROM persons WHERE salesrep LIKE 'J%'"叙述MySQLDb模块提供的数据库访问方法;答:Python访问MySQL数据库可以使用MySQLDb模块,该模块主要方法有:commit :提交事务;rollback :回滚事务;callprocself, procname, args:用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数;executeself, query, args:执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数;executemanyself, query, args:执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数;nextsetself:移动到下一个结果集;fetchallself:接收全部的返回结果行;fetchmanyself, size=None:接收size条返回结果行,如果size的值大于返回的结果行的数量,则会返回条数据;fetchoneself:返回一条结果行;scrollself, value, mode='relative':移动指针到某一行,如果mode='relative',则表示从当前所在行移动value条;如果 mode='absolute',则表示从结果集的第一行移动value条;第15章多媒体编程编程程序,在窗口上绘制一个三角形,设置三个顶点为不同的颜色,并对内部进行光滑着色;答:from importfrom importfrom importimport sysclass MyPyOpenGLTest:def __init__self, width = 640, height = 480, title = 'MyPyOpenGLTest': glutInitglutInitDisplayModeGLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTHglutInitWindowSizewidth, height= glutCreateWindowtitleglutDisplayFuncglutIdleFuncwidth, heightdefault drawing functiondef Drawself:glClearGL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BITglLoadIdentityglTranslatef, ,draw 2D graphic, leaving z to be 0 glBeginGL_POLYGONglColor3f, ,glVertex3f, ,glColor3f, ,glVertex3f, ,glColor3f, ,glVertex3f, ,glEndglTranslatef, ,glutSwapBuffersdef InitGLself, width, height:glClearColor, , ,glClearDepthglDepthFuncGL_LESSglShadeModelGL_SMOOTHglEnableGL_POINT_SMOOTHglEnableGL_LINE_SMOOTHglEnableGL_POLYGON_SMOOTHglMatrixModeGL_PROJECTIONglHintGL_POINT_SMOOTH_HINT,GL_NICEST glHintGL_LINE_SMOOTH_HINT,GL_NICESTglHintGL_POLYGON_SMOOTH_HINT,GL_FASTESTglLoadIdentitygluPerspective, floatwidth/floatheight, ,glMatrixModeGL_MODELVIEWdef MainLoopself:glutMainLoopif __name__ == '__main__':w = MyPyOpenGLTest编写程序,读取两幅大小一样的图片,然后将两幅图像的内容叠加到一幅图像,结果图像中每个像素值为原两幅图像对应位置像素值的平均值;答:from PIL import Imageim1 = 'd:\\'im2 = 'd:\\'size =for i in rangesize0:for j in rangesize1:color1 = i,jcolor2 = i,jr = color10+color20p3'total = lenmusicswhile :nextMusic = musicsprint 'playing....',nextMusic else:1def OnButtonOKself, event:= Truecreate a new thread to play musict = target=def OnButtonCancelself, event:= Falseapp = wxGUI运行本章中的代码并查看运行结果;答:略;第16章逆向工程与软件分析下载PE文件规范版本,并尝试了解PE文件基本结构;答:略;下载并安装IDA Pro与Immunity Debugger,并简单了解PE文件反汇编和调试步骤;答:略;安装并配置IDAPython插件,然后运行本章答:略;在Immunity Debugger调试器中运行本章答:略;叙述软件调试断点的概念、作用及其分类;答:断点是最常用的软件调试技术之一,其基本思想是在某一个位置设置一个“陷阱”,当CPU执行到这个位置的时候停止被调试的程序并中断到调试器中,让调试者进行分析和调试,调试者分析结束后,可以让被调试程序恢复执行;通过设置断点可以暂停程序执行,并可以观察和记录指令信息、变量值、堆栈参数和内存数据,还可以深入了解和把握程序执行的内部原理和详细过程,断点对于软件调试具有重要的意义和作用;断点可以分为软件断点、硬件断点和内存断点三大类;1软件断点软件断点是一个单字节指令INT 3,字节码为0xCC,可以在程序中设置多个软件断点,使得程序执行到该处时能够暂停执行,并将控制权转移给调试器的断点处理函数;当调试器被告知在目标地址设置一个断点,它首先读取目标地址的第一个字节的操作码,然后保存起来,同时把地址存储在内部的中断列表中;接着,调试器把一个字节操作码“0xCC”写入刚才的地址;当 CPU 执行到“0xCC”操作码的时候就会触发一个“INT 3”中断事件,此时调试器就能捕捉到这个事件;调试器继续判断这个发生中断事件的地址通过指令指针寄存器EIP是不是自己先前设置断点的地址;如果在调试器内部的断点列表中找到了这个地址,就将设置断点前存储起来的操作码写回到目标地址,这样进程被调试器恢复后就能正常的执行;2硬件断点硬件断点通过调试寄存器实现,设置在CPU级别上,当需要调试某个指定区域而又无法修改该区域时,硬件断点非常有用;一个CPU一般会有8 个调试寄存器DR0 寄存器到DR7寄存器,用于管理硬件断点;其中调试寄存器DR0到调试寄存器DR3存储硬件断点地址,同一时间内最多只能设置4个硬件断点;DR4和DR5保留,DR6是状态寄存器,说明被断点触发的调试事件的类型;DR7本质上是一个硬件断点的开关寄存器,同时也存储了断点的不同类型;通过在DR7寄存器里设置不同标志,能够创建以下几种断点:当特定的地址上有指令执行的时候中断、当特定的地址上有数据写入的时候、当特定的地址上有数据读或者写但不执行的时候;硬件断点使用“INT 1”实现,该中断负责硬件中断和步进事件;步进是指根据预定的流程一条一条地执行指令,每执行完一条指令后暂停下来,从而可以精确地观察关键代码并监视寄存器和内存数据的变化;在CPU每次执行代码之前,都会先确认当前将要执行代码的地址是否是硬件断点的地址,同时也要确认是否有代码要访问被设置了硬件断点的内存区域;如果任何储存在DR0-DR3中的地址所指向的区域被访问了,就会触发“INT 1”中断,同时暂停CPU;如果不是中断地址则CPU 执行该行代码,到下一行代码时,CPU继续重复上面的过程;3内存断点内存断点是通过修改内存中指定块或页的访问权限来实现的;通过将指定内存块或页的访问权限属性设置为受保护的,则任何不符合访问权限约束的操作都将失败,并抛出异常,导致CPU暂停执行,使得调试器可以查看当前执行状态;一般来说,每个内存块或页的访问权限都由三种不同的访问权限组成:是否可执行、是否可读、是否可写;每个操作系统都提供了用来查询和修改内存页访问权限的函数,在Windows操作系统中可以使用VirtualProtect函数来修改主调进程虚拟地址空间中已提交页面的保护属性,使用VirtualProtectEx函数可以修改其他进程虚拟地址空间页面的保护属性;运行本章节中的代码并查看运行结果;答:略;第17章科学计算与可视化运行本章所有代码并查看运行结果;答:略;使用Python内置函数dir查看scipy模块中的对象与方法,并使用Python 内置函数help查看其使用说明;答:略;。
Python程序设计课后习题答案
习题1一、选择题1.Python语言属于()。
CA.机器语言 B.汇编语言 C.高级语言 D.科学计算语言2.下列选项中,不属于Python特点的是()。
BA.面向对象 B.运行效率高 C.可读性好 D.开源3.Python程序文件的扩展名是()。
DA..python B..pyt C..pt D..py 4.以下叙述中正确的是()。
CA.Python 3.x与Python 2.x兼容B.Python语句只能以程序方式执行C.Python是解释型语言D.Python语言出现得晚,具有其他高级语言的一切优点5.下列选项中合法的标识符是()。
AA._7a_b B.break C._a$b D.7ab6.下列标识符中合法的是()。
BA.i'm B._ C.3Q D.for 7.Python不支持的数据类型有()。
AA.char B.int C.float D.list 8.关于Python中的复数,下列说法错误的是()。
BA.表示复数的语法形式是a+bj B.实部和虚部都必须是浮点数C.虚部必须加后缀j,且必须是小写 D.函数abs()可以求复数的模9.函数type(1+0xf*3.14)的返回结果是()。
DA.<class 'int'> B. <class 'long'>C.<class 'str'> D. <class 'float'>10.字符串s='a\nb\tc',则len(s)的值是()。
CA.7 B.6 C.5 D.411.Python语句print(0xA+0xB)的输出结果是()。
DA.0xA+0xB B.A+BC.0xA0xB D.2112.下列属于math库中的数学函数的是()。
CA.time() B.round() C.sqrt() D.random() 13.Python表达式中,可以使用()控制运算的优先顺序。
Python语言程序设计习题与答案
一、单选题1、字符串是一个字符序列,例如,字符串s,从右侧向左第3个字符用什么索引?A.s[3]B.s[-3]C.s[0:-3]D.s[:-3]正确答案:B2、获得字符串s长度的方法是什么?A.s.len()B.s.lengthC.len(s)D.length(s)正确答案:C3、字符串函数strip()的作用是什么?A.按照指定字符分割字符串为数组B.连接两个字符串序列C.去掉字符串两侧空格或指定字符D.替换字符串中特定字符正确答案:C4、"abc"的长度是3,"老师好"的长度是多少?A.1B.3C.6D.9正确答案:B5、字符串是一个连续的字符序列,用什么方式打印出可以换行的字符串?A.使用转义符\\B.使用\nC.使用空格D.使用“\换行”正确答案:B6、Python中布尔变量的值为A.0,1B.真,假C.T,FD.True,False正确答案:D7、Python通过什么来判断操做是否在分支结构中A.缩进B.冒号C.花括号D.括号正确答案:A8、对负数取平方根,即使用函数math.sqrt(x),其中x为负数,将产生A.虚数B.程序崩溃C.什么都不产生D.ValueError错误正确答案:D9、以下的布尔代数运算错误的是A.not (a and b) == not (a) and not (b)B.(True or False) == TrueC.(True or x) == TrueD.(False and x) == False正确答案:A10、以下不可能出现在or操作真值表中的是A.F or T = TB.T or T = TC.F or F = TD.T or F = T正确答案:C11、Python语言中,与函数使用相关的保留字是哪个?A.passB.forC.evalD.def正确答案:D12、以下哪个不是函数的作用?A.降低编程复杂度B.复用代码C.增强代码可读性D.提高代码执行速度正确答案:D13、假设函数中不包含global保留字,下面对于改变参数值的说法,哪个是不正确的?A.参数的值是否被改变,与函数中对变量的操作有关,与参数类型无关。
Python程序设计课后习题答案-第一单元
习题1一、选择题1.Python语言属于()。
CA.机器语言 B.汇编语言 C.高级语言 D.科学计算语言2.下列选项中,不属于Python特点的是()。
BA.面向对象 B.运行效率高 C.可读性好 D.开源3.Python程序文件的扩展名是()。
DA..python B..pyt C..pt D..py4.以下叙述中正确的是()。
CA.Python 3.x与Python 2.x兼容B.Python语句只能以程序方式执行C.Python是解释型语言D.Python语言出现得晚,具有其他高级语言的一切优点5.下列选项中合法的标识符是()。
AA._7a_b B.break C._a$b D.7ab 6.下列标识符中合法的是()。
BA.i'm B._ C.3Q D.for 7.Python不支持的数据类型有()。
AA.char B.int C.float D.list8.关于Python中的复数,下列说法错误的是()。
BA.表示复数的语法形式是a+bj B.实部和虚部都必须是浮点数C.虚部必须加后缀j,且必须是小写 D.函数abs()可以求复数的模9.函数type(1+0xf*3.14)的返回结果是()。
DA.<class 'int'> B. <class 'long'>C.<class 'str'> D. <class 'float'>10.字符串s='a\nb\tc',则len(s)的值是()。
CA.7 B.6 C.5 D.411.Python语句print(0xA+0xB)的输出结果是()。
DA.0xA+0xB B.A+BC.0xA0xB D.2112.下列属于math库中的数学函数的是()。
CA.time() B.round() C.sqrt() D.random() 13.Python表达式中,可以使用()控制运算的优先顺序。
Python程序设计课后习题答案
习题1一、选择题1.Python语言属于()。
CA.机器语言 B.汇编语言 C.高级语言 D.科学计算语言2.下列选项中,不属于Python特点的是()。
BA.面向对象 B.运行效率高 C.可读性好 D.开源3.Python程序文件的扩展名是()。
DA..python B..pyt C..pt D..py 4.以下叙述中正确的是()。
CA.Python 3.x与Python 2.x兼容B.Python语句只能以程序方式执行C.Python是解释型语言D.Python语言出现得晚,具有其他高级语言的一切优点5.下列选项中合法的标识符是()。
AA._7a_b B.break C._a$b D.7ab6.下列标识符中合法的是()。
BA.i'm B._ C.3Q D.for 7.Python不支持的数据类型有()。
AA.char B.int C.float D.list 8.关于Python中的复数,下列说法错误的是()。
BA.表示复数的语法形式是a+bj B.实部和虚部都必须是浮点数C.虚部必须加后缀j,且必须是小写 D.函数abs()可以求复数的模9.函数type(1+0xf*3.14)的返回结果是()。
DA.<class 'int'> B. <class 'long'>C.<class 'str'> D. <class 'float'>10.字符串s='a\nb\tc',则len(s)的值是()。
CA.7 B.6 C.5 D.411.Python语句print(0xA+0xB)的输出结果是()。
DA.0xA+0xB B.A+BC.0xA0xB D.2112.下列属于math库中的数学函数的是()。
CA.time() B.round() C.sqrt() D.random() 13.Python表达式中,可以使用()控制运算的优先顺序。
《Python程序设计教程》习题答案
《Python程序设计教程》习题答案说明:以下习题答案是机械工业出版社出版的《Python程序设计教程》(作者:程细柱和程心怡)一书中各章节习题的答案,希望对读者有用。
第1章Python的开发平台(进入Python城堡)一、判断题1.(╳)2.(√)3.(╳)4.(√)5.(√)6.(╳)7.(√)二、单选题1.B 2.C 3.D 4.B 5.D 6.C7.C8.B9.C10.B11.B12.B13.C14.A15.B、D16.D三、填空题1.引用计数和垃圾收集器2.交互和脚本文件3.>>>4.help(“命令”)5..py四、简答题1.答:具体过程如下:1)用户选择“开始”菜单的“所有程序”,选择打开Python的IDLE窗口;2)在IDLE窗口选择“File/New File”菜单打开程序编辑窗口;3)在编辑窗口中输入程序源代码;4)输入完源代码后,选择编辑窗口的“File/Save”菜单保存Python程序文件;5)选择编辑窗口的“Run/Module”菜单或者按快捷键F5执行该程序。
2.答:Python语言具有简单易学、规范代码、能交互运行、免费开源、面向对象、可移植性好、可嵌入性强、丰富的标准库、高层的解释型语言等优点;它常常应用于人工智能、大数据、科学计算、云计算、云服务、网络爬虫、Web开发、桌面软件、游戏开发等领域。
第2章Python的基础知识(初遇城堡语言)一、判断题1.(√)2.(╳)3.(√)4.(╳)5.(√)6.(╳)7.(╳)8.(╳)9.(╳)二、单选题1.D2.B 3.D 4.A 5.A 6.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.D52.D53.C54.B55.D56.B57.D三、填空题1.True和False2.83.74.浮点型(float)、布尔型(bool)和复数类型(complex)5.关系运算、逻辑运算、位运算四、名词解释1.是指在运行期间才去做数据类型检查的语言。
参考答案-Python 程序设计-祁瑞华-清华大学出版社
9.错 19.对 29.错
10.错 20.对 30.对
第 7 章 习题答案
一.单项选择题 1. B 2. B 3. D 4. A
二.判断题:
1. 错
2. 错
5. A 6. C 3. 错
7. B 8. B 4. 对
9. D 10.C 5. 对
三.程序填空: max=a min=a
第 8 章 习题答案
一.单项选择题
第 1 章 习题答案
略
第 2 章 习题答案
一.单项选择题
1.D
2.D
3.B
4.D
5.C
6.B
7.C
8.B
9.B
10.D
11.C 12.D 13.C 14.C 15.D 16.B 17.C 18.B 19.D 20.B
21.C
二.多项选择题 1.ABD 2.BC 3.ABD 4.AC 5.CD
三.判断题 1.错 2.错 3.错 4.错 5.错 6.对 7.错 8.错 9.错 10.错
一.单项选择题
1.B
2. C 3. A 4. C
5. C 6. B 7. A 8. B 9.B
10. C
11.B 12. A 13. B 14. A 15. C 16.B 17.A 18.B 19.D 20. B
21.C 22.C 23.B 24.B
二.多项选择题 1.ACD 2.ABCDE 3.ACD 4.ABCD 5. AB
2.ABCE
3.ABE
4.AEAC
5.BD
三.判断题 1.对 2.对 11.错 12.对 21.对 22.对 31.对 32.错
3.对 13.对 23.错 33.错
4.对 14.对 24.对 34.对
Python程序设计课后习题答案-第一单元
习题1一、选择题1.Python语言属于()。
CA.机器语言 B.汇编语言 C.高级语言 D.科学计算语言2.下列选项中,不属于Python特点的是()。
BA.面向对象 B.运行效率高 C.可读性好 D.开源3.Python程序文件的扩展名是()。
DA..python B..pyt C..pt D..py4.以下叙述中正确的是()。
CA.Python 3.x与Python 2.x兼容B.Python语句只能以程序方式执行C.Python是解释型语言D.Python语言出现得晚,具有其他高级语言的一切优点5.下列选项中合法的标识符是()。
AA._7a_b B.break C._a$b D.7ab 6.下列标识符中合法的是()。
BA.i'm B._ C.3Q D.for 7.Python不支持的数据类型有()。
AA.char B.int C.float D.list8.关于Python中的复数,下列说法错误的是()。
BA.表示复数的语法形式是a+bj B.实部和虚部都必须是浮点数C.虚部必须加后缀j,且必须是小写 D.函数abs()可以求复数的模9.函数type(1+0xf*3.14)的返回结果是()。
DA.<class 'int'> B. <class 'long'>C.<class 'str'> D. <class 'float'>10.字符串s='a\nb\tc',则len(s)的值是()。
CA.7 B.6 C.5 D.411.Python语句print(0xA+0xB)的输出结果是()。
DA.0xA+0xB B.A+BC.0xA0xB D.2112.下列属于math库中的数学函数的是()。
CA.time() B.round() C.sqrt() D.random() 13.Python表达式中,可以使用()控制运算的优先顺序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《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>>> id(x)>>> y = 3>>> id(y)>>> y = 5>>> id(y)>>> id(x)1、3 在Python中导入模块中的对象有哪几种方式?答:常用的有三种方式,分别为import 模块名[as 别名]●from 模块名import 对象名[ as 别名]●from math import *1、4 使用pip命令安装numpy、scipy模块。
答:在命令提示符环境下执行下面的命令:pip install numpypip install scipy1、5 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。
例如用户输入1234,则程序输出12。
(提示:使用整除运算。
)答:1)Python 3、4、2代码:x = input('Please input an integer of more than 3 digits:')try:x = int(x)x = x//100if x == 0:print('You must input an integer of more 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、'else:print x//100第2章Python数据结构2、1 为什么应尽量从列表的尾部进行元素的增加与删除操作?答:当列表增加或删除元素时,列表对象自动进行内存扩展或收缩,从而保证元素之间没有缝隙,但这涉及到列表元素的移动,效率较低,应尽量从列表尾部进行元素的增加与删除操作以提高处理速度。
2、2 编写程序,生成包含1000个0到100之间的随机整数,并统计每个元素的出现次数。
(提示:使用集合。
)答: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)2、3 编写程序,用户输入一个列表与2个整数作为下标,然后输出列表中介于2个下标之间的元素组成的子列表。
例如用户输入[1,2,3,4,5,6]与2,5,程序输出[3,4,5,6]。
答:1)Python 3、4、2代码x = input('Please input a list:')x = eval(x)start, end = eval(input('Please input the start position and the end position:'))print(x[start: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 x[start:end]2、4 设计一个字典,并编写程序,用户输入内容作为键,然后输出字典中对应的值,如果用户输入的键不存在,则输出“您输入的键不存在!”答:1)Python 3、4、2代码d = {1:'a', 2:'b', 3:'c', 4:'d'}v = input('Please input a key:')v = eval(v)print(d、get(v,'您输入的的键不存在'))2)Python 2、7、8代码d = {1:'a', 2:'b', 3:'c', 4:'d'}v = input('Please input a key:')print(d、get(v,'您输入的的键不存在'))2、5 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。
答:1)Python 3、4、2代码import randomx = [random、randint(0,100) for i in range(20)]print(x)y = x[0:10]y、sort()x[0:10] = yy = x[10:20]y、sort(reverse=True)x[10:20] = yprint(x)2)Python 2、7、8代码import randomx = [random、randint(0,100) for i in range(20)]print xy = x[0:10]y、sort()x[0:10] = yy = x[10:20]y、sort(reverse=True)x[10:20] = yprint x2、6 在Python中,字典与集合都就是用一对大括号作为定界符,字典的每个元素有两部分组成,即键与值,其中键不允许重复。
2、7 假设有列表a = ['name','age','sex']与b = ['Dong',38,'Male'],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为键,以列表b中的元素为值,这个语句可以写为 c = dict(zip(a,b))。
2、8 假设有一个列表a,现要求从列表a中每3个元素取1个,并且将取到的元素组成新的列表b,可以使用语句 b = a[::3]。
2、9 使用列表推导式生成包含10个数字5的列表,语句可以写为[5 for i in range(10)]。
2、10 不可以(可以、不可以)使用del命令来删除元组中的部分元素。
第3章选择结构与循环结构3、1 分析逻辑运算符“or”的短路求值特性。
答:假设有表达式“表达式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 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 'Yes'else:print 'No'3、3 编写程序,生成一个包含50个随机整数的列表,然后删除其中所有奇数。
(提示:从后向前删。
)答:1)Python 3、4、2代码import randomx = [random、randint(0,100) for i in range(50)]print(x)i = len(x)-1while i>=0:if x[i]%2==1:del x[i]i-=1print(x)2)Python 2、7、8代码把上面的代码中第三行与最后一行改为print x即可。
34 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。
(提示:使用切片。
)答:1)Python 3、4、2代码import randomx = [random、randint(0,100) for i in range(20)]print(x)y = x[::2]y、sort(reverse=True)x[::2] = yprint(x)2)Python 2、7、8代码把上面的代码中第三行与最后一行改为print x即可。