《Python程序设计基础》习题答案与分析
Python程序设计基础练习题及答案
![Python程序设计基础练习题及答案](https://img.taocdn.com/s3/m/32949014c381e53a580216fc700abb68a982ad9e.png)
思考与练习答案练习一1.(略)2. 答:只有在第一行为‘空’、进入到第二行时,Sublime菜单项‘文件(F)’下拉菜单中的‘保存(S)’命令才成为可用。
3. 答:程序执行和交互执行两种方式。
4. 答:C练习二1. 答:不行,因为3不是一个有效的变量名,变量名只能以英文字母或下划线打头。
2. 答:可以。
3. 答:空字符串是单引号(或双引号)里不包含任何字符的字符串。
若单引号(或双引号)里包含了一个空格字符,那就表明该字符串里有字符,因此它不是空字符串。
所以,空字符串与单引号(或双引号)里面只包含一个空格字符的字符串,它们是两个不同的字符串概念。
4. 答:第一个print语句输出Please Wait Beyond TheLine.;第二个print语句输出please wait beyond the line.;第三个print语句输出Please Wait Beyond TheLine.5. 答:第一句输出的结果是20;第二句输出的是-1。
6. 答:输出:中华人民共和国,中华人民共和国7. 答:程序中出现n时,代表的是英文中的一个小写字母n;程序中出现\n时,反斜杠后跟随的n就不再是英文中的小写字母n,这个整体被视为是换行符。
8. 答:用str1[-10:-1]截取出的切片是a student。
为了将此切片反转过来,应该做如下的两个操作,第一是先将该切片存放到另一个变量str2里:str2=str1[-10:-1];然后将str2进行反转,即:str2[::-1]。
9. 答:7、32、1。
10. 答:有两种办法,一是当字符串中出现撇号(’)时,用双引号定义该字符串;二是用转义字符\’代替直接使用撇号。
11.答:0b、0o、0x。
12. 答:(1)表示要确定变量ch里的内容是否是介于0与9之间;(2)表示要确定变量ch里的内容是否是介于小写字母a与z之间; (3)表示要确定变量ch里的内容是否是介于大写字母A与Z之间。
Python语言程序设计基础(第2版)全答案v3-20180823
![Python语言程序设计基础(第2版)全答案v3-20180823](https://img.taocdn.com/s3/m/a64f46e8284ac850ad0242d4.png)
Python语言程序设计基础(第2版)全答案(Ver. 2.0,2018年5月)嵩天礼欣黄天羽著(本文档由该书原作者提供,有任何修改意见请反馈:黄天羽huangtianyu@。
)目录目录 (2)第1章程序设计基本方法 (5)1.1 计算机的概念 (5)1.2 程序设计语言 (5)1.3 Python语言概述 (5)1.4 Python语言开发环境配置 (5)1.5 程序的基本编写方法 (6)1.6 Python语言的版本更迭 (6)程序练习题 (6)第2章Python程序实例解析 (7)2.1 实例1:温度转换 (7)2.2 Python程序语法元素分析 (7)2.3 实例2:Python蟒蛇绘制 (8)2.4 turtle库语法元素分析 (8)程序练习题 (9)第3章基本数据类型 (15)3.1 数字类型 (15)3.2 数字类型的操作 (15)3.3 模块1:math库的使用 (15)3.4 实例3:天天向上的力量 (16)3.5 字符串类型及其操作 (17)3.6 字符串类型的格式化 (17)3.7 实例4:文本进度条 (17)程序练习题 (18)第4章程序的控制结构 (21)4.1 程序的基本结构 (21)4.2 程序的分支结构 (21)4.3 实例5:身体质量指数BMI (21)4.4 程序的循环结构 (21)4.5 模块2:random库的使用 (22)4.6 实例6:π的计算 (22)4.7 程序的异常处理 (22)程序练习题 (23)第5章函数和代码复用 (28)5.1 函数的基本使用 (28)5.2 函数的参数传递 (28)5.3 模块3:datetime库的使用 (28)5.4 实例7:七段数码管绘制 (29)5.5 代码复用和模块化设计 (29)5.6 函数的递归 (29)5.7 实例8:科赫曲线绘制 (29)5.8 Python内置函数 (30)程序练习题 (30)第6章组合数据类型 (37)6.1 组合数据类型概述 (37)6.2 列表类型和操作 (37)6.3 实例9:基本统计值计算 (37)6.4 字典类型和操作 (38)6.5 模块4:jieba库的使用 (38)6.6 实例10:文本词频统计 (39)6.7 实例11:Python之禅 (39)程序练习题 (39)第7章文件和数据格式化 (44)7.1 文件的使用 (44)7.2 模块5:PIL库的使用 (44)7.3 实例12:图像的字符画绘制 (44)7.4 一二维数据的格式化和处理 (45)7.5 实例13:CSV格式的HTML展示 (45)7.6 高维数据的格式化 (45)7.7 模块6:json库的使用 (45)7.8 实例14:CSV和JSON格式相互转换 (46)程序练习题 (46)第8章程序设计方法论 (55)8.1 计算思维 (55)8.2 实例15:体育竞技分析 (55)8.3 自顶向下和自顶向上 (55)8.4 模块7:pyinstaller库的使用 (55)8.5 计算生态和模块编程 (56)8.6 Python第三方库的安装 (56)8.7 实例16:pip安装脚本 (56)程序练习题 (56)第9章科学计算和可视化 (66)9.1 问题概述 (66)9.2 模块8:numpy库的使用 (66)9.3 实例17:图像的手绘效果 (66)9.4 模块9:matplotlib库的使用 (66)9.5 实例18:科学坐标图绘制 (67)9.6 实例19:多级雷达图绘制 (67)程序练习题 (67)第10章网络爬虫和自动化 (70)10.1 问题概述 (70)10.2 模块10:requests库的使用 (70)10.3 模块11:beautifulsoup4库的使用 (70)10.4 实例20:中国大学排名爬虫 (70)程序练习题 (71)第1章程序设计基本方法1.1 计算机的概念[1.1]: 计算机是根据指令操作数据的设备,它的两个显著特点是功能性和可编程性。
《Python程序设计》习题与答案-python教材答案之欧阳地创编
![《Python程序设计》习题与答案-python教材答案之欧阳地创编](https://img.taocdn.com/s3/m/1573980b3186bceb18e8bb96.png)
《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 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。
《Python程序设计方案》习题与答案
![《Python程序设计方案》习题与答案](https://img.taocdn.com/s3/m/a862322b876fb84ae45c3b3567ec102de2bddf05.png)
《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语言程序设计基础》第二版嵩天第二章程序练习题答案](https://img.taocdn.com/s3/m/290f978edb38376baf1ffc4ffe4733687e21fce0.png)
《Python语言程序设计基础》第二版嵩天第二章程序练习题答案第一题:```python# 1. 编写一个程序,要求用户输入一个整数并输出它的平方值。
num = int(input("请输入一个整数:"))square = num ** 2print("该整数的平方值为:", square)```第二题:```python# 2. 编写一个程序,要求用户输入一个浮点数并输出它的绝对值。
num = float(input("请输入一个浮点数:"))absolute_value = abs(num)print("该浮点数的绝对值为:", absolute_value)```第三题:```python# 3. 编写一个程序,要求用户输入一个1到100之间的整数,并判断该数是奇数还是偶数。
num = int(input("请输入一个1到100之间的整数:"))if num % 2 == 0:print("该整数为偶数。
")else:print("该整数为奇数。
")```第四题:```python# 4. 编写一个程序,要求用户输入一个年份,并判断该年份是否为闰年。
year = int(input("请输入一个年份:"))if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:print("该年份是闰年。
")else:print("该年份不是闰年。
")```第五题:# 5. 编写一个程序,要求用户输入一个三位数,并将其倒序输出。
num = int(input("请输入一个三位数:"))reverse_num = int(str(num)[::-1])print("倒序输出的结果为:", reverse_num)```第六题:```python# 6. 编写一个程序,要求用户输入一个四位数,并将其每一位数倒序输出。
程序设计基础(Python语言)-习题参考答案(周翔 版)
![程序设计基础(Python语言)-习题参考答案(周翔 版)](https://img.taocdn.com/s3/m/b92adcdd48649b6648d7c1c708a1284ac85005ed.png)
程序设计基础(Python语言)习题参考答案习题11. Python语言是吉多·范·罗苏姆开发的,具有特点如下:(1)解释执行(2)面向对象(3)开源性(4)易用性(5)可读性强(6)可扩展性(7)丰富的基础代码库(8)成熟的扩展库2. Python的主要应用领域(1)Web 开发(2)网络编程(3)科学计算与数据可视化(4)数据库应用(5)多媒体开发(6)电子游戏应用三、程序设计题1. 略2.>>> print('hello,world')3.(1)在IDLE中,“File”-“New File”(2)输入代码print('请输入您的姓名:')name=input()print(name,’欢迎您开启Python之旅!’)(3)“File”-“保存”,输入文件名、选择保存路径,保存文件。
(4)“Run”-“Run Module”,运行程序。
1. -7.700000e+012. 0.00433. 1.0三、程序设计题1.x=2.3e+3-1.34e-3ja=x.realb=x.imagprint('实部为:',a,'虚部为:',b)print('实部为:{:.2f},虚部为:{}'.format(a,b)) 2.a=eval(input("请输入秒数:"))h=a//3600m=(a%3600)//60s=a%60print('{:0>2}:{:0>2}:{:0>2}'.format(h,m,s)) 3.x=eval(input("请输入一个三位数:"))b=x//100s=(x%100)//10g=x%10print('百位数是',b,'十位数是',s,'各位数是',g)二、填空题1. 22. 【填空1】x+y+z>=240 and( x>=90 or y>=90 or z>=90)3. 【填空1】if,【填空2】:,【填空3】d=0.8,【填空4】else4. 【填空1】s=1,【填空2】i=2,【填空3】i<=10,【填空4】s*=i,【填空5】i+=15. 【填空1】range,【填空2】1000,【填空3】//,【填空4】%,【填空5】==三、程序设计题1. 参考代码如下:x=int(input("请输入你的成绩:"))if x>=90 :msg="你是学霸的!"else:msg="请继续努力!"print(msg)2. 参考代码如下:import mathTempStr=input('Please enter an angle or radian with units:')x = eval(TempStr[0:-1])if TempStr[-1] in ['A','a']:y=x*math.pi/180print('After convert, the radian is {:.2f}R'.format(y))elif TempStr[-1] in ['R','r']:y=180*x/math.piprint('After convert, the angle is {:.2f}A'.format(y))else:print('The input data\'s format is incorrect.')3. 参考代码如下:import randomnumber=random.randint(1,3)usernum=int(input("请输入剪刀(1)、石头(2)、布(3)后面的数字:"))print("电脑出的是",number)x=usernum-numberif x==0:msg='平局'elif x in [-2,1]:msg='玩家赢'msg='玩家输'print(msg)4. 参考代码如下:s=0t=1i=1while t>10**(-6):t=1/(i**2)s+=ti+=2pi=(s*8)**0.5print('π的近似值为:',pi)5. 参考代码如下:for m in range(2,101):i=2for i in range(2,m):if m%i==0:breakif not (i<m-1):print('{}是素数'.format(m))6. 参考代码如下:d=1s=1020while s>0:s=s-(s/2+2)d=d+1print('需要{}天卖完。
《Python程序设计基础》习题答案与分析
![《Python程序设计基础》习题答案与分析](https://img.taocdn.com/s3/m/4f9c07364a7302768e9939a3.png)
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程序设计课后习题答案
![Python程序设计课后习题答案](https://img.taocdn.com/s3/m/f120c3536d175f0e7cd184254b35eefdc8d315be.png)
Python程序设计课后习题答案通过Python程序设计课后习题的答案,我将为您提供一份详细的文章。
如下所示:Python程序设计课后习题答案Python程序设计是一门广泛应用于计算机科学领域的编程语言。
在学习这门课程时,我们需要通过解答习题来加深对于Python编程的理解。
本文将对一些Python程序设计课后习题进行答案解析,并通过实例代码来帮助读者更好地理解。
一、基础概念和语法1. 编写一个程序,实现计算两个数之和的功能。
```pythonnum1 = float(input("请输入第一个数:"))num2 = float(input("请输入第二个数:"))# 计算和sum_result = num1 + num2print("两个数的和为:", sum_result)```2. 编写一个程序,实现计算一个数的阶乘。
```pythonnum = int(input("请输入一个正整数:"))factorial = 1# 计算阶乘if num < 0:print("输入的数字必须为正整数!")elif num == 0:print("0的阶乘为1")else:for i in range(1, num + 1):factorial *= iprint(num, "的阶乘为:", factorial)```二、数据结构与算法1. 编写一个程序,实现对列表中元素求和的功能。
```pythonnumbers = [1, 2, 3, 4, 5]sum_result = sum(numbers)print("列表元素的和为:", sum_result)```2. 编写一个程序,实现冒泡排序算法对列表进行排序。
```pythondef bubble_sort(arr):n = len(arr)for i in range(n - 1):for j in range(n - i - 1):if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j]return arrnumbers = [4, 2, 1, 5, 3]sorted_numbers = bubble_sort(numbers)print("排序后的列表:", sorted_numbers)```三、文件操作1. 编写一个程序,实现读取文本文件内容并计算文件中单词的个数。
大学《Python程序设计》试题及答案
![大学《Python程序设计》试题及答案](https://img.taocdn.com/s3/m/ee995bb485868762caaedd3383c4bb4cf6ecb74c.png)
大学《Python程序设计》试题及答案大学《Python程序设计》试题及答案一、选择题1、在Python中,以下哪个选项可以正确表示小于等于操作符? A) <=B) <* C) .≤ D) 以上都不是答案:A) <=2、下列哪个模块可用于绘制图形? A) math B) plot C) canvas D) none of the above 答案:C) canvas3、在Python中,如何将字符串转换为整数? A) str() B) int() C) float() D) 以上都不是答案:B) int()4、若要打印出所有的素数,以下哪个循环结构可以实现? A) whileB) for C) do-while D) switch-case 答案:B) for5、以下哪个选项可以用于导入模块? A) import math as m B) include math as m C) #include <math.h> D) #import <math.h> 答案:A) import math as m二、填空题1、Python中的注释符号是_____。
答案:#2、在Python中,所有变量都必须具有_____。
答案:类型(types)3、Python中的逻辑运算符用于执行_____运算。
答案:逻辑(logical)4、以下哪个函数可以用于将字符串转换为浮点数? A) str() B) int() C) float() D) none of the above 答案:C) float()5、以下哪个循环结构可以用于打印出所有的偶数? A) for i in range(0, 10): print(i2) B) for i in range(0, 10): if i % 2 == 0: print(i2) C) for i in range(0, 10): if i % 2 != 0: print(i2) D) none of the above 答案:B) for i in range(0, 10): if i % 2 == 0: print(i2)三、编程题编写一个Python程序,打印出所有的水仙花数(Narcissistic Number)。
《Python程序设计基础》习题答案与分析
![《Python程序设计基础》习题答案与分析](https://img.taocdn.com/s3/m/dcd100269a6648d7c1c708a1284ac850ad020412.png)
《Python程序设计基础》习题答案与分析一、输入和输出1. 输入和输出函数Python提供了多个用于输入和输出的函数,常用的有:- input():用于从用户获取输入的函数。
- print():用于将数据输出到控制台的函数。
2. 输入函数input()input()函数用于从用户获取输入,可以提示用户输入特定信息,并将用户输入的内容作为字符串返回。
例子:```pythonname = input("请输入您的姓名:")print("您好,", name)```在以上例子中,程序会提示用户输入姓名,并将用户输入的内容保存到name变量中。
接着,程序通过print()函数将一个包含用户姓名的问候语输出到控制台。
3. 输出函数print()print()函数用于将数据输出到控制台。
可以输出字符串、数字、变量等内容。
例子:```pythonname = "Tom"age = 25print("姓名:", name)print("年龄:", age)```在以上例子中,程序通过print()函数输出了两行信息,第一行输出了字符串"姓名:"和变量name的值,第二行输出了字符串"年龄:"和变量age的值。
4. 格式化输出除了简单输出,print()函数还支持格式化输出。
常用的格式化输出方式有两种:- 使用占位符{}来表示需要插入的内容。
- 使用格式化字符串中的%f、%d、%s等占位符来格式化输出。
例子:```pythonname = "Tom"age = 25print("姓名:{}".format(name))print("年龄:%d" % age)```在以上例子中,程序通过format()和%操作符实现了格式化输出。
《Python程序设计方案》习题与答案
![《Python程序设计方案》习题与答案](https://img.taocdn.com/s3/m/fd8cecc46529647d272852d0.png)
《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 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。
智慧树知到《Python程序设计基础》章节测试答案
![智慧树知到《Python程序设计基础》章节测试答案](https://img.taocdn.com/s3/m/0523c687a6c30c2259019ec3.png)
智慧树知到《Python程序设计基础》章节测试答案绪论1、学好Python程序设计要注意的几个问题是A:多看多练B:多想多整理C:多交流多请教D:只看视频,不思考、不练习答案: 多看多练,多想多整理,多交流多请教2、本门课程将主要介绍哪些内容A:运算符B:内置函数C:常用数据类型D:文件操作答案: 运算符,内置函数,常用数据类型,文件操作第一章1、下面特点属于Python语言的有哪些?A:开源B:免费C:跨平台D:解释执行答案: 开源,免费,跨平台,解释执行2、Python支持函数式编程。
A:对B:错答案: 对3、对于Python程序,对代码缩进的要求非常严格。
A:对B:错答案: 对4、一般建议,每行Python代码的长度不要超过屏幕宽度,如果确实太长的话,应使用续行符。
A:对B:错答案: 对5、一般来说,程序中的重要代码应加上适当的注释。
A:对B:错答案: 对6、下面导入标准库对象的语句,正确的有?A:from math import sinB:from random import randomC:from math importD:import答案: from math import sin,from random import random,from math import *第二章1、Python无法表示99999999999999999999这样大的整数。
A:对B:错答案: 错2、集合中的元素都是唯一的,不会有重复。
A:对B:错答案: 对3、Python中变量的类型是动态的,随时可以变化。
A:对B:错答案: 对4、可以使用break作为变量名。
A:对B:错答案: 错5、Python支持复数以及相关的运算。
A:对B:错答案: 对6、Python中没有++和–这两个运算符。
A:对B:错答案: 对第三章1、已知x = [1, 2, 3],执行语句x.append(4)之后,x的值是什么?A:[1, 2, 3, 4]B:[4]C:[1, 2, 3]D:4答案:A2、已知x = [1, 2, 3, 4, 5, 6, 7],那么x.pop()的结果是?A:1B:4C:7D:5答案:C3、已知x = [1, 2]和y = [3, 4],那么x+y的结果是?A:3B:7C:[1, 2, 3, 4]D:[4, 6]答案:C4、sum([i*i for i in range(3)])的计算结果是?A:3B:5C:2D:14答案:B5、字典的“键”和集合的元素都是唯一的,不允许重复。
Python程序设计习题与答案
![Python程序设计习题与答案](https://img.taocdn.com/s3/m/d368f6360a4e767f5acfa1c7aa00b52acfc79c17.png)
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查看其使用说明;答:略;。
程序设计基础课后习题答案
![程序设计基础课后习题答案](https://img.taocdn.com/s3/m/afeef7d76aec0975f46527d3240c844769eaa0be.png)
程序设计基础课后习题答案程序设计基础课后习题答案在学习程序设计基础课程时,习题是帮助我们巩固所学知识的重要方式。
通过解答习题,我们可以更好地理解并应用所学的编程概念和技巧。
下面是一些常见的程序设计基础习题及其答案,供大家参考。
1. 习题:编写一个程序,计算并输出1到100之间所有奇数的和。
答案:```pythonsum = 0for i in range(1, 101, 2):sum += iprint(sum)```2. 习题:编写一个程序,判断一个给定的整数是否为素数。
答案:```pythondef is_prime(n):if n <= 1:return Falsefor i in range(2, int(n ** 0.5) + 1):if n % i == 0:return Falsereturn Truenum = int(input("请输入一个整数:"))if is_prime(num):print("是素数")else:print("不是素数")```3. 习题:编写一个程序,找出一个给定字符串中最长的单词。
答案:```pythondef find_longest_word(string):words = string.split()longest_word = ""for word in words:if len(word) > len(longest_word):longest_word = wordreturn longest_wordsentence = input("请输入一个字符串:")print("最长的单词是:", find_longest_word(sentence))```4. 习题:编写一个程序,将一个给定的整数列表进行排序。
《Python程序设计基础与应用》习题答案
![《Python程序设计基础与应用》习题答案](https://img.taocdn.com/s3/m/c479e98a5727a5e9856a61ee.png)
Python程序设计基础与应用习题答案董付国机械工业出版社目录第1章Python概述 (3)第2章内置对象、运算符、表达式、关键字 (4)第3章Python序列结构 (5)第4章选择结构与循环结构 (6)第5章函数 (9)第6章面向对象程序设计 (11)第7章字符串 (12)第8章正则表达式 (13)第9章文件内容操作 (14)第10章文件与文件夹操作 (16)第11章异常处理结构 (18)第12章tkinter编程案例 (20)第13章网络爬虫入门与应用 (21)第14章Python数据分析与处理 (22)第15章数据可视化 (23)第1章Python概述1.1略1.2略1.3略1.4答:1)使用mport模块名[as别名]这种方式将模块导入以后,使用时需要在对象之前加上模块名作为前缀,必须以“模块名.对象名”的形式进行访问。
如果模块名字很长的话,可以为导入的模块设置一个别名,然后使用“别名.对象名”的方式来使用其中的对象。
2)使用from模块名import对象名[as别名]方式仅导入明确指定的对象,并且可以为导入的对象起一个别名。
这种导入方式可以减少查询次数,提高访问速度,同时也可以减少程序员需要输入的代码量,不需要使用模块名作为前缀。
3)使用from模块名import*方式可以一次导入模块中的所有对象,简单粗暴,写起来也比较省事,可以直接使用模块中的所有对象而不需要再使用模块名作为前缀,但一般并不推荐这样使用。
1.5答:通过Python程序的__name__属性可以识别程序的使用方式,如果作为模块被导入,则其__name__属性的值被自动设置为模块名;如果作为程序直接运行,则其__name__属性值被自动设置为字符串”__main__”。
第2章内置对象、运算符、表达式、关键字2.1//2.2|2.3-2.4&2.5A<B2.61:2:32.7len2.8错2.9错2.10错2.11错2.12不可以,集合中的元素不允许重复,Python不支持集合与整数的乘法运算。
Python程序设计习题与答案
![Python程序设计习题与答案](https://img.taocdn.com/s3/m/d0df95eefad6195f302ba619.png)
t = t/i
else:
i+=1
print x,'=','*'.join(map(str,result))
编写程序,至少利用2种不同的方式计算100之内所有奇数的和。
答:Python 代码如下,假设是利用Python 只需要把其中的print()函数改成print语句即可。
x = [i for i in range(1,100) if i%2==1]
while True:
result = (x)
if result:
if (0) != 0:
x = x[:(0)+1]+'I'+x[(0)-1:]
else:
x = x[:(0)]+'I'+x[(0)-1:]
else:
break
print(x)
假设有一段英文,其中有单词中间的字母“i”误写为“I”,请编写程序进行纠正。
答:那个地址给出Python 代码,假设是利用Python 的话只需要修改其中的print()函数为print语句即可。
def Sum(v):
s = 0
for i in v:
s += i
return s
x = [1,2,3,4,5]
print(Sum(x))
x = (1,2,3,4,5)
print(Sum(x))
《Python程序设计》习题与参考答案
第1章 基础知识
简单说明如何选择正确的Python版本。
答:
在选择Python的时候,必然要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 仍是Python ,最高支持到Python 仍是Python 。这些问题都确信以后,再做出自己的选择,如此才能事半功倍,而不至于把大量时刻浪费在Python的反复安装和卸载上。同时还应该注意,当更新的Python版本推出以后,不要急于更新,而是应该等确信自己所必需利用的扩展库也推出了较新版本以后再进行更新。
《Python程序设计》课后习题参考答案
![《Python程序设计》课后习题参考答案](https://img.taocdn.com/s3/m/b17ef8bbe518964bce847c96.png)
第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程序设计教程课后答案](https://img.taocdn.com/s3/m/66682b6ff11dc281e53a580216fc700abb6852be.png)
python程序设计教程课后答案题目:Python程序设计教程课后答案导言:Python是一种高级的编程语言,许多初学者在学习Python时常常遇到一些问题,需要参考一些解答的答案。
本篇文章旨在提供Python程序设计教程的课后答案,帮助读者更好地理解和掌握Python编程。
1. Python基础知识(Chapter 1-3)1.1 关键字是什么?列出Python的关键字。
答案:关键字是Python中具有特殊意义的保留字。
Python的关键字包括:and、as、assert、break、class、continue、def、del、elif、else、except、False、finally、for、from、global、if、import、in、is、lambda、None、nonlocal、not、or、pass、raise、return、True、try、while、with、yield等。
1.2 什么是标识符?标识符命名规则是什么?答案:标识符是用来标识变量、函数、类、模块等名字的字符串。
Python的标识符命名规则如下:- 标识符由字母、数字和下划线组成。
- 标识符以字母或下划线开头。
- 标识符区分大小写。
- 不要使用Python的关键字作为标识符。
- 一般使用小写字母来命名变量和函数,类名使用首字母大写的驼峰命名法。
2. 数据类型(Chapter 4-6)2.1 什么是列表?如何创建一个列表?答案:列表是一种有序的集合,其中的元素可以是任意类型的。
可以使用方括号[]来创建一个列表,例如:my_list = [1, 2, "hello", True]2.2 如何向列表添加元素?如何访问和修改列表中的元素?答案:可以使用append()方法向列表末尾添加一个元素,例如:my_list.append(3)。
使用索引来访问和修改列表中的元素,索引从0开始计数。
例如:访问第一个元素可以使用my_list[0],修改第一个元素可以使用my_list[0] = "world"。
《Python程序设计教程》习题答案
![《Python程序设计教程》习题答案](https://img.taocdn.com/s3/m/aef34845001ca300a6c30c22590102020740f2be.png)
《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.是指在运行期间才去做数据类型检查的语言。
- 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)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 2.x和Python 3.x中,“//”表示整除,对整数或浮点数进行该运算时,结果为数学除法的整数部分。
1.4 在Python中导入模块中的对象有哪几种方式?答:常用的有三种方式,分别为●import 模块名[as 别名]●from 模块名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”是(是、不是)合法的Python表达式。
1.9 在Python2.x中,input()函数接收到的数据类型由界定符确定,而在Python3.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//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 range()函数在Python 2.x中返回一个包含整数的列表,而Python3.x的range()函数返回一个可迭代的range对象。
2.3 编写程序,生成包含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)也可以直接使用字典来实现该功能,并且获得更高的执行效率,例如下面的Python 3.4.2代码:listRandom = [random.randint(1,100) for i in range(1000000)]d = dict()start = time.time()for i in listRandom: #对随机数列表扫描一次,即可得到结果d[i] = 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 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.6 列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为None 。
2.7 列表对象的remove() 方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。
2.8 假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是[6, 7, 9, 11] 。
2.9 设计一个字典,并编写程序,用户输入内容作为“键”,然后输出字典中对应的“值”,如果用户输入的“键”不存在,则输出“您输入的键不存在!”答: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.10 编写程序,生成包含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.11 在Python中,字典和集合都是用一对大括号作为界定符,字典的每个元素有两部分组成,即“键”和“值”,其中“键”不允许重复。
2.12 使用字典对象的items() 方法可以返回字典的“键-值对”列表,使用字典对象的keys() 方法可以返回字典的“键”列表,使用字典对象的values() 方法可以返回字典的“值”列表。
2.13 假设有列表a = ['name', 'age', 'sex']和b = ['Dong', 38, 'Male'],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为 c = dict(zip(a,b)) 。