python核心编程第二版答案.docx
- 文档编号:9589586
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:15
- 大小:21.41KB
python核心编程第二版答案.docx
《python核心编程第二版答案.docx》由会员分享,可在线阅读,更多相关《python核心编程第二版答案.docx(15页珍藏版)》请在冰豆网上搜索。
python核心编程第二版答案
python核心编程第二版答案
【篇一:
python核心编程第二版第4章习题答案】
属性是什么?
请简单的描述一下。
答案:
所有的python对象都拥有三个特性:
身份,类型和值。
身份:
每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到。
这个值可以被认为是该对象的内存地址。
类型:
对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。
可以使用内建函数type()查看对象的类型。
在python中类型也是对象。
值:
对象标识的数据项。
4-2.类型。
不可更改(immutable)指的是什么?
python的哪些类型是可更改(mutable)的,哪些不是?
答案:
不可更改指对象创建以后值不可以更新。
immutable的类型:
数字,字符串,元组
mutable的类型:
列表,字典
4-3.类型。
哪些python类型是按照顺序访问的,他们和映射类型的不同是什么?
答案:
string,tuple,list是按照顺序访问的。
字典是映射访问。
字典中的元素,他们的索引并不使用顺序的数字偏移量取值,它的元素无序存放,通过一个唯一的键来访问。
4-4.type()。
内建函数type()作什么?
type()返回的对象是什么?
答案:
内建函数type()返回任意ptrhon对象的数据类型,而不局限于标准类型。
type()返回的值是一个类型对象。
4-5.str()和repr()。
内建函数str()与repr()之间的不同是什么?
哪一个等价于反引号(``)操作符?
答案:
内建函数str()和repr()或反引号操作符()可以方便的以字符串的方式获取对象的内容、类型、数值属性等信息。
str()函数得到的字符串可读性好,而repr()函数得到的字符串通常可以用来重新获得该对象,通常情况下obj==eval(repr(obj))这个等式是成立的。
这两个函数接受一个对象作为其参数,返回适当的字符串。
repr()输出对python比较友好,而str()的输出对用户比较友好。
str()致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值。
==repr(),但反引号()操作符已经不鼓励继续使用。
4-6.对象相等。
你认为type(a)==type(b)和type(a)istype(b)之间的不同是什么?
为什么会选者后者?
函数isinstance()与这有什么关系?
答案:
网上所得
“==”比较的是值,is比较的是对象。
因为每个对象只可能有一种类型的值,所以可以直接比较他们的id,而不用先计算值再做比较。
函数isinstance()用来确定这个对象是否属于这个类型,或者实例是否属于某个类。
4-7.内建函数dir()。
在第2章的几个练习中,我们用内建函数dir()做了几个实验,它接受一个对象,然后给出相应的属性。
请对types模块做相同的实验。
记下你熟悉的类型,包括你
对这些类型的认识,然后记下你还不熟悉的类型。
在学习pythopn的过程中,你要逐步将“不熟悉”的类型变得“熟悉”起来。
答案:
略
4-8.列表和元组。
列表和元组的相同点是什么?
不同点是什么?
答案:
list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。
列表中的项目应该包括在[]中,这样python就知道你是在指明一个列表。
一旦你创建了一个列表,你就可以添加,删除,或者是搜索列表中的项目。
由于你可以增加或删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的。
列表是可以嵌套的。
元组和列表十分相似,不过元组是不可变的。
即你不能修改元组。
元组通过()中用逗号分隔的项目定义。
元组通常用在使语句或用户定义的函数能够安全的采用一组值的时候,即被使用的元组的值不会改变。
元组可以嵌套。
4-9.实践,给定以下赋值:
a=10
b=10
c=100
d=100
e=10.0
f=10.0
请问下面各表达式的输出是什么?
为什么?
(a)aisb
(b)cisd
(c)eisf
答案:
(a)true
(b)true
(c)false
【篇二:
python核心编程第二版第9章习题答案】
#)开头的行.这个字符被用做python,perl,tcl,等大多脚本文件的注释符号.附加题:
处理不是第一个字符开头的注释.答案:
f=open(test1.txt,r)
foreachlineinf:
ifeachline[0]==#:
continue
elif#ineachline:
loc=eachline.find(#)
printeachline[:
loc]
else:
printeachline,
9–2.文件访问.提示输入数字n和文件f,然后显示文件f的前n行.
答案:
n=int(raw_input(enteranumber:
))
f=raw_input(enterfilename:
)
f1=open(f,r)
allline=f1.readlines()
f1.close()
foriinrange(n):
printallline[i],
9–3.文件信息.提示输入一个文件名,然后显示这个文本文件的总行数.
答案:
f=raw_input(enterfilename:
)
f1=open(f,r)
sum=0
foriinf1:
sum+=1
f1=open(f,r)
sum=0
foriinf1:
sum+=1
printsum
方法二:
f=raw_input(enterfilename:
)
f1=open(f,r)
allline=f1.readlines()
f1.close()
printlen(allline)
9–4.文件访问.写一个逐页显示文本文件的程序.提示输入一个文件名,每次显示文本文件的25行,暂停并向用户提示按任意键继续.,按键后继续执行.
答案:
f=raw_input(enterfilename:
)
f1=open(f,r)
allline=f1.readlines()
f1.close()
sum=0
foriinallline:
printi,
sum+=1
ifsum==25:
a=raw_input(pressanykeytocontinue:
)
sum=0
方法二
importos
f=raw_input(plsinputafilename:
)
n=0
f=open(f,r)
foriinf:
printi,
n+=1
ifn==25:
n=0
os.system(pause)
f.close()
9-5考试成绩,改进你的考试成绩问题(练习5-3和6-4),要求能从多个文件中读入考试成绩。
文件的数据格式由你自己决定。
答案:
f=open(test1.txt,r)
scores=[]
foriinf:
if0=int(i.strip())=100:
scores.append(int(i.strip()))
else:
printscorewrong,pleaseagain
ifint(i.strip())60:
printscoreise,i
elifint(i.strip())70:
printscoreisd,i
elifint(i.strip())80:
printscoreisc,i
elifint(i.strip())90:
printscoreisb,i
else:
printscoreisa,i
f.close()
printaveragescoreis%.2f%(sum(scores)/len(scores))
9–6.文件比较.写一个比较两个文本文件的程序.如果不同,给出第一个不同处的行号和列号.
答案:
f1=raw_input(enterafilename:
)
f2=raw_input(enterafilename:
)
f1=open(f1,r)
f2=open(f2,r)
f1allline=f1.readlines()
f2allline=f2.readlines()
f1.close()
f2.close()
len1=len(f1allline)
len2=len(f2allline)
minlen1=min(len1,len2)
foriinrange(minlen1):
printf1allline[i],f2allline[i]
iff1allline[i]!
=f2allline[i]:
minlen2=min(len(f1allline[i]),len(f2allline[i]))
forjinrange(minlen2):
iff1allline[i][j]!
=f2allline[i][j]:
printrowis%d,columnis%d%(i+1,j+1)
break
else:
continue
else:
printtheyareequal\n
9–7.解析文件.win32用户:
创建一个用来解析windows.ini文件的程序.posix用户:
创建一个解析/etc/serves文件的程序.其它平台用户:
写一个解析特定结构的系统配置文件的程序.
答案:
这题没看懂,抄的别人
option={}
f=open(rc:
\windows\win.ini)
forlineinf:
ifline.startswith(;):
continue
ifline.startswith([):
iterm=[]
name=line[1:
line.rfind(])]
option.setdefault(name,iterm)
continue
if=inline:
option[name].append(line.strip())
printoption
9–8.模块研究.提取模块的属性资料.提示用户输入一个模块名(或者从命令行接受输入).然后使用dir()和其它内建函数提取模块的属性,显示它们的名字,类型,值.
答案:
m=raw_input(enteramodulename:
)
module=__import__(m)
m1=dir(module)
printm1
foriinm1:
printname:
i
printtyoe:
type(getattr(module,i))
printvalue:
getattr(module,i)
9–9.python文档字符串。
进入python标准库所在的目录。
检查每个.py文件看是否有__doc__字符串,如果有,对其格式进行适当的整理归类.你的程序执行完毕后,应该会生成一个漂亮的清单.里边列出哪些模块有文档字符串,以及文档字符串的内容.清单最后附上那些没有文档字符串模块的名字.附加题:
提取标准库中各模块内全部类(class)和函数的文档.
答案:
这是入口
#coding:
utf-8
importos
importsys
num=[]
将所有路径文件名全部提取出来
deffun(dirname):
foriinos.listdir(dirname):
ifos.path.isdir(dirname+\\+i):
fun(dirname+\\+i)
else:
num.append(dirname+\\+i)
fun(rc:
\python27\lib)
hasdoc=false
strtemp=
fileobj1=open(hasdoc.txt,a+)
fileobj2=open(nodoc.txt,a+)
foriinnum:
printi
fobj=open(i)
foreachlineinfobj:
if(nothasdoc)andeachline.startswith():
hasdoc=trueelifhasdocandeachline.startswith():
hasdoc=falsestrtemp+=eachlinebreakifhasdoc:
strtemp+=eachlineelse:
breakifstrtemp!
=:
fileobj1.write(filename:
+i+\n)fileobj1.write(__doc__+\n)fileobj1.write(strtemp+\n)else:
fileobj2.write(文件名:
+i+\n)
strtemp=
fobj.close()
fileobj1.close()
fileobj2.close()
9-10.家庭理财。
创建一个家庭理财程序。
你的程序需要处理储蓄、支票、金融市场,定期存款等多种账户。
为每种账户提供一个菜单操作界面,要有存款、取款、借、贷等操作。
另外还要提供一个取消操作选项。
用户退出这个程序时相关数据应该保存到文件里取(出于备份的目的,程序执行过程中也要备份)。
答案:
太难了,不会。
9-11.web站点地址.
a)编写一个url书签管理程序.使用基于文本的菜单,用户可以添加,修改或者删除书签数据项.书签数据项中包含站点的名称,url地址,以及一行简单说明(可选).另外提供检索功能,可以根据检索关键字在站点名称和url两部分查找可能的匹配.程序退出时把数据保存到一个磁盘文件中去;再次执行时候加载保存的数据.
b)改进a)的解决方案,把书签输出到一个合法且语法正确的html文件(.html或htm)中,这样用户就可以使用浏览器查看自己的书签清单.另外提供创建文件夹功能,对相关的书签进行分组管理.
附加题:
请阅读python的re模块了解有关正则表达式的资料,使用正则表达式对用户输入的url进行验证.
答案:
不会做,参考自
importre,os
defcheckurl(url):
r^(?
:
http|ftp)?
:
//#http:
//orhttps:
//
r(?
:
(?
:
[a-z0-9](?
:
[a-z0-9]{0,61}[a-z0-9])?
\.)+(?
:
[a-z]{2,6}\.?
|[a-z0-9-]{2,}\.?
)|rlocalhost#localhost
【篇三:
python核心编程(第二版)第十章习题答案】
注意这里我们问的并不是异常的原因。
a)用户;
b)解释器;
c)程序;
d)以上所有;
e)只有b)和c);
f)只有a)和c)。
答案:
f
10-2.引发异常。
参考上边问题的列表,哪些因素会在执行交互解释器时引发异常?
答案:
f
10-3.关键字。
用来引发异常的关键字有哪些?
答案:
raise
10-4.关键字。
try-except和try-finally有什么不同?
答案:
try-except:
当try代码块运行出错,except代码块才会被执行(匹配到相应异常时),处理完异常后try-except后的代码会继续往下执行;
try-finally:
不管try代码块是否出现异常,最终都会执行finally里的代码。
如果出现异常,执行完finally代码块后,异常会继续往上层抛。
10-5.异常。
下面这些交互解释器下的python代码段分别会引发什么异常(参阅表10.2给出的内建异常清单):
(a)if34then:
print3islessthan4!
(b)alist=[hello,world,anyone,home?
]
printthelaststringinalistis:
alist[len(alist)]
(c)x
(d)x=4%0
(e)importmath
i=math.sqrt(-1)
答案:
(a)syntaxerror:
invalidsyntax
(b)indexerror:
listindexoutofrange
(c)nameerror:
namexisnotdefined
(d)zerodivisionerror:
integerdivisionormodulobyzero
(e)valueerror:
mathdomainerror
10-6.改进的open()。
为内建的open()函数创建一个封装。
使得成功打开文件后,返回文件句柄:
若打开失败则返回给调用者none,而不是生成一个异常。
这样你打开文件就不需要额外的异常处理语句。
答案:
deftry_open(filename,mode=r):
try:
f=open(filename,mode)
exceptioerror:
returnnone
returnf
if__name__==__main__:
printtry_open(test1.txt)
10-7.异常。
下面两端python伪代码a)和b)有什么区别?
考虑语句a和b的上下文环境。
(这么细致的区别要感谢guido!
)
(a)try:
statement_a
except...:
...
else:
statement_b
(b)try:
statement_a
statement_b
except...:
...
答案:
情况1:
如果statement_a执行出错,则(a)和(b)都不会执行statement_b;
情况2:
如果statement_a执行正常,则(a)和(b)都会执行statement_b——但是,如果statement_b的执行也出错,(b)可以在except子句里捕获到异常并做处理,而(a)则只能将statement_b产生的异常抛给上层调用者。
10–8.改进的raw_input()。
本章的开头,我们给出了一个”安全”的float()函数,它建立在内建函数float()上,可以检测并处理float()可能会引发的两种不同异常。
同样,raw_input()函数也可能会生成两种异常,eoferror(文件末尾eof,在unix下是由于按下了ctrl+d在dos下是因为ctrl+z)或是keyboardinterrupt(取消输入,一般是由于按下了ctrl+c)。
请创建一个封装函数safe_input(),在发生异常时返回none。
答案:
defsafe_input(example):
symbol=none
try:
symbol=raw_input(example)
except(eoferror,keyboardinterrupt):
pass
returnsymbol
if__name__==__main__:
printsafe_input(pleaseinput:
)
10-9.改进的math.sqrt()。
math模块包含大量用于处理数值相关运算的函数和常量。
不幸的是,它不能识别复数,所以我们创建了cmath模块来支持复数相关运算。
请创建一个safe_sqrt()函数,它封装math.sqrt()并能处理负值,返回一个对应的复数。
答案:
importmath,cmath
defsafe_sqrt(x):
try:
num=math.sqrt(x)
exceptvalueerror:
num=cmath.sqrt(x)
returnnum
if__name__==__main__:
x=float(raw_input(pleaseinputanumber:
))
printsafe_sqrt(x)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 核心 编程 第二 答案