python基础练习.docx
- 文档编号:23781395
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:10
- 大小:18KB
python基础练习.docx
《python基础练习.docx》由会员分享,可在线阅读,更多相关《python基础练习.docx(10页珍藏版)》请在冰豆网上搜索。
python基础练习
python面向对象程序设计练习
1填写新的函数用来设置学生专业,然后生成该类对象并显示信息。
答:
importtypes
classPerson(object):
#基类必须继承于object,否则在派生类中将无法使用super()函数
def__init__(self,name='',age=20,sex='man'):
self.setName(name)
self.setAge(age)
self.setSex(sex)
defsetName(self,name):
ifnotisinstance(name,str):
print('namemustbestring.')
return
self.__name=name
defsetAge(self,age):
ifnotisinstance(age,int):
print('agemustbeinteger.')
return
self.__age=age
defsetSex(self,sex):
ifsex!
='man'andsex!
='woman':
print('sexmustbe"man"or"woman"')
return
self.__sex=sex
defshow(self):
print(self.__name)
print(self.__age)
print(self.__sex)
classStudent(Person):
def__init__(self,name='',age=30,sex='man',major='Computer'):
#调用基类构造方法初始化基类的私有数据成员
super(Student,self).__init__(name,age,sex)
self.setMajor(major)#初始化派生类的数据成员
defsetMajor(self,major):
ifnotisinstance(major,str):
print('majormustbeastring.')
return
self.__major=major
defshow(self):
super(Student,self).show()
print(self.__major)
if__name__=='__main__':
zhangsan=Person('ZhangSan',19,'man')
zhangsan.show()
lisi=Student('LiSi',32,'man','Math')
lisi.show()
2设计一个三维向量类,并实现向量的加法、减法以及向量与标量的乘法和除法运算。
classVecter3:
def__init__(self,x=0,y=0,z=0):
self.X=x
self.Y=y
self.Z=z
def__add__(self,n):
r=Vecter3()
r.X=self.X+n.X
r.Y=self.Y+n.Y
r.Z=self.Z+n.Z
returnr
def__sub__(self,n):
r=Vecter3()
r.X=self.X-n.X
r.Y=self.Y-n.Y
r.Z=self.Z-n.Z
returnr
def__mul__(self,n):
r=Vecter3()
r.X=self.X*n
r.Y=self.Y*n
r.Z=self.Z*n
returnr
def__truediv__(self,n):
r=Vecter3()
r.X=self.X/n
r.Y=self.Y/n
r.Z=self.Z/n
returnr
def__floordiv__(self,n):
r=Vecter3()
r.X=self.X//n
r.Y=self.Y//n
r.Z=self.Z//n
returnr
defshow(self):
print((self.X,self.Y,self.Z))
v1=Vecter3(1,2,3)
v2=Vecter3(4,5,6)
v3=v1+v2
v3.show()
v4=v1-v2
v4.show()
v5=v1*3
v5.show()
v6=v1/2
v6.show()
3面向对象程序设计的三要素分别为封装、继承和多态。
4简单解释Python中以下划线开头的变量名特点。
答:
在Python中,以下划线开头的变量名有特殊的含义,尤其是在类的定义中。
用下划线作为变量前缀和后缀来表示类的特殊成员:
✍_xxx:
这样的对象叫做保护变量,不能用'frommoduleimport*'导入,只有类对象和子类对象能访问这些变量;
✍__xxx__:
系统定义的特殊成员名字;
✍__xxx:
类中的私有成员,只有类对象自己能访问,子类对象也不能访问到这个成员,但在对象外部可以通过“对象名._类名__xxx”这样的特殊方式来访问。
Python中没有纯粹的C++意义上的私有成员。
5与运算符“**”对应的特殊方法名为__pow__(),与运算符“//”对应的特殊方法名为__floordiv__()。
Ptyhon文件操作练习
1假设有一个英文文本文件,编写程序读取其内容,并将其中的大写字母变为小写字母,小写字母变为大写字母。
答:
f=open(r'd:
\1.txt','r')
s=f.readlines()
f.close()
r=[i.swapcase()foriins]
f=open(r'd:
\2.txt','w')
f.writelines(r)
f.close()
2编写程序,将包含学生成绩的字典保存为二进制文件,然后再读取内容并显示。
importpickle
d={'张三':
98,'李四':
90,'王五':
100}
print(d)
f=open('score.dat','wb')
pickle.dump(1,f)
pickle.dump(d,f)
f.close
f=open('score.dat','rb')
pickle.load(f)
d=pickle.load(f)
f.close()
print(d)
3使用shutil模块中的move()方法进行文件移动。
答:
>>>importshutil
>>>shutil.move(r'd:
\1.txt',r'e:
\1.txt')
'e:
\\1.txt'
4简单解释文本文件与二进制文件的区别。
答:
(1)文本文件
文本文件存储的是常规字符串,由若干文本行组成,通常每行以换行符'\n'结尾。
常规字符串是指记事本或其他文本编辑器能正常显示、编辑并且人类能够直接阅读和理解的字符串,如英文字母、汉字、数字字符串。
文本文件可以使用字处理软件如gedit、记事本进行编辑。
(2)二进制文件
二进制文件把对象内容以字节串(bytes)进行存储,无法用记事本或其他普通字处理软件直接进行编辑,通常也无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取、显示、修改或执行。
常见的如图形图像文件、音视频文件、可执行文件、资源文件、各种数据库文件、各类office文档等都属于二进制文件。
5编写代码,将当前工作目录修改为“c:
\”,并验证,最后将当前工作目录恢复为原来的目录。
答:
>>>importos
>>>os.getcwd()
'C:
\\Python34'
>>>os.chdir(r'c:
\\')
>>>os.getcwd()
'c:
\\'
>>>os.chdir(r'c:
\Python34')
>>>os.getcwd()
'c:
\\Python34'
6编写程序,用户输入一个目录和一个文件名,搜索该目录及其子目录中是否存在该文件。
答:
importsys
importos
directory=sys.argv[1]
filename=sys.argv[2]
paths=os.walk(directory)
forroot,dirs,filesinpaths:
iffilenameinfiles:
print('Yes')
break
else:
print('No')
importsys
importos
directory=sys.argv[1]
filename=sys.argv[2]
paths=os.walk(directory)
forroot,dirs,filesinpaths:
iffilenameinfiles:
print'Yes'
break
else:
print'No'
Python异常处理结构与程序调试练习
1Python异常处理结构有哪几种形式?
答:
比较常用的形式有:
1)标准异常处理结构
try:
try块#被监控的语句,可能会引发异常
exceptException[,reason]:
except块#处理异常的代码
如果需要捕获所有异常时,可以使用BaseException,代码格式如下:
try:
……
exceptBaseException,e:
except块#处理所有错误
上面的结构可以捕获所有异常,尽管这样做很安全,但是一般并不建议这样做。
对于异常处理结构,一般的建议是尽量显式捕捉可能会出现的异常并且有针对性地编写代码进行处理,因为在实际应用开发中,很难使用同一段代码去处理所有类型的异常。
当然,为了避免遗漏没有得到处理的异常干扰程序的正常执行,在捕捉了所有可能想到的异常之后,您也可以使用异常处理结构的最后一个except来捕捉BaseException。
2)另外一种常用的异常处理结构是try...except...else...语句。
3)在实际开发中,同一段代码可能会抛出多个异常,需要针对不同的异常类型进行相应的处理。
为了支持多个异常的捕捉和处理,Python提供了带有多个except的异常处理结构,这类似于多分支选择结构,一旦某个except捕获了异常,则后面剩余的except子句将不会再执行。
语法为:
try:
try块#被监控的语句
exceptException1:
except块1#处理异常1的语句
exceptException2:
except块2#处理异常2的语句
4)将要捕获的异常写在一个元组中,可以使用一个except语句捕获多个异常,并且共用同一段异常处理代码,当然,除非确定要捕获的多个异常可以使用同一段代码来处理,并不建议这样做。
5)最后一种常用的异常处理结构是try...except...finally...结构。
在该结构中,finally子句中的内存无论是否发生异常都会执行,常用来做一些清理工作以释放try子句中申请的资源。
语法如下:
try:
……
finally:
......#无论如何都会执行的代码
2异常和错误有什么区别?
答:
异常是指因为程序执行过程中出错而在正常控制流以外采取的行为。
严格来说,语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象,或者试图访问不存在的文件,等等。
3使用pdb模块进行Python程序调试主要有哪几种用法?
答:
主要有三种方式,
1)在交互模式下使用pdb模块提供的功能可以直接调试语句块、表达式、函数等多种脚本。
2)在程序中嵌入断点来实现调试功能
在程序中首先导入pdb模块,然后使用pdb.set_trace()在需要的位置设置断点。
如果程序中存在通过该方法调用显式插入的断点,那么在命令提示符环境下执行该程序或双击执行程序时将自动打开pdb调试环境,即使该程序当前不处于调试状态。
3)使用命令行调试程序
在命令行提示符下执行“python–mpdb脚本文件名”,则直接进入调试环境;当调试结束或程序正常结束以后,pdb将重启该程序。
4Python内建异常类的基类是BaseException。
5断言语句的语法为assert。
6Python上下文管理语句是with。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 基础 练习