博客
关于我
Python面向对象程序设计期末考试复习题及答案(含编程题)
阅读量:253 次
发布时间:2019-03-01

本文共 5706 字,大约阅读时间需要 19 分钟。

一、选择题

1、关于面向过程和面向对象,下列说法错误的是(B)。

A.面向过程和面向对象都是解决问题的一种思路

B.面向过程是基于面向对象的
C.面向过程强调的是解决问题的步骤
D.面向对象强调的是解决问题的对象

2、关于类和对象的关系,下列描述正确的是(D)。

A.类是面向对象的核心

B.类是现实中事物的个体
C.对象是根据类创建的,并且一个类只能对应一个对象
D.对象描述的是现实的个体,它是类的实例

3、构造方法的作用是(C)。

A.一般成员方法 B.类的初始化

C.对象的初始化 D.对象的建立

4、构造方法是类的一个特殊方法,Python 中它的名称为(C)。

A.与类同名 B. _construct C. init D. init

5、Python 类中包含一个特殊的变量(A),它表示当前对象自身,可以访问类的成员

A. self B. me C.this D.与类同名

二、填空题

1、Python安装扩展库常用的是___工具。(pip

2、Python程序文件扩展名主要有__和__两种,其中后者常用于GUI程序。(py、pyw

3、查看变量类型的Python内置函数是______。(type()

4、列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为 _____。(None

5、查看变量内存地址的Python内置函数是_______。(id()

6、Python源代码程序编译后的文件扩展名为___。(pyc

7、为了提高Python代码运行速度和进行适当的保密,可以将Python程序文件编译为扩展名____的文件。(pyc

8、____命令既可以删除列表中的一个元素,也可以删除整个列表。(del

三、判断题

1、在 Python 中定义类时,如果某个成员名称前有 2 个下划线则表示是私有成员。(

2、在类定义的外部没有任何办法可以访问对象的私有成员。(错)

3、Python 中一切内容都可以称为对象。(

4、在一个软件的设计与开发中,所有类名、函数名、变量名都应该遵循统一的风格和规范。 (

5、定义类时所有实例方法的第一个参数用来表示对象本身,在类的外部通过对象名来调用

实例方法时不需要为该参数传值。(

6、对于 Python 类中的私有成员,可以通过“对象名._类名__私有成员名”的方式来访问。 (

7、使用内置函数 open()且以”w”模式打开的文件,文件指针默认指向文件尾。(

8、使用内置函数 open()打开文件时,只要文件路径正确就总是可以正确打开的。(

9、假设已导入 random 标准库,那么表达式 max([random.randint(1,10) for i in range(10)]) 的值一定是 10。(

10、Python是一种跨平台、开源、免费的高级动态编程语言。(

11、 Python 3.x完全兼容Python 2.x。(

12、 使用内置函数open()且以”w”模式打开的文件,文件指针默认指向文件尾。(

13、 使用内置函数open()打开文件时,只要文件路径正确就总是可以正确打开的。(

14、 Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型(

15、 Python采用的是基于值得自动内存管理方式。(

16、 在定义函数时,某个参数名字前面带有一个*符号表示可变长度参数,可以接收任意多个普通实参并存放于一个元组之中。(

17、 在定义函数时,某个参数名字前面带有两个*符号表示可变长度参数,可以接收任意多个关键参数并将其存放于一个字典之中。(

18、 定义函数时,带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认值的参数右边不允许出现没有默认值的参数。(

19、 在调用函数时,可以通过关键参数的形式进行传值,从而避免必须记住函数形参顺序的麻烦。(

20、 在调用函数时,必须牢记函数形参顺序才能正确传值。(

21、 调用函数时传递的实参个数必须与函数形参个数相等才行。(

四、解答题

1、阅读下面的代码,并分析假设文件“D:\test.txt”不存在的情况下两段代码可能发生的问

题。
代码 1:

>>> try: fp = open(r'd:\test.txt') print('Hello world!', file=fp) finally: fp.close()

代码 2:

>>> try: fp = open(r'd:\test.txt', 'a+') print('Hello world!', file=fp) finally: fp.close()

答: 假设文件"D:\test.txt"不存在,那么第一段代码会抛出异常,提示fp没有定义;第二段代码执行正常。原因是第二段代码使用内置函数open()打开指定文件时如果不存在则会创建该文件,从而不会抛出异常。

2、写出下面代码的优化版本,提高运行效率。

x = list(range(500)) for item in x: t = 5**5 print(item+t)

答:

x = list(range(500))
t = 5**5
for item in x:
print(item+t)

3、写出下面代码的运行结果。

def Sum(a, b=3, c=5): return sum([a, b, c]) print(Sum(a=8, c=2)) print(Sum(8)) print(Sum(8,2))

答: 13 16 15

4、阅读下面的程序,判断其是否可以正常运行,如果可以运行则写出执行结果,如果不能
运行则写出理由。

class Test: def __init__(self, value): self.__value = value @property def value(self): return self.__value t = Test(3) t.value = 5 print(t.value)

答:不能运行,程序中定义的是只读属性,不能修改属性的值。

五、代码设计题

(部分题目略,考试后忘了题目后期补充)

1、

import revalue = []print("请输入:")items=[x for x in input().split(',')]for p in items:   if len(p)<6 or len(p)>12:       continue   else:       pass   if not re.search("[a-z]",p):       continue   elif not re.search("[0-9]",p):       continue   elif not re.search("[A-Z]",p):       continue   elif not re.search("[$#@]",p):       continue   elif re.search("\s",p):       continue   else:       pass   value.append(p)print (",".join(value))

2、

x=input("x=")l=x.split()d={   }for i in l:  d[i]=d.get(i,0)+1  l2=sorted(d)for i in l2:  print("{}:{}".format(i,d[i]))  l=[]for i in range(3):  x=int(input("x="))l.append(x)l.sort()for i in l:  print(i,end=" ")

3、小明爱跑步和吃东西。

1)小明体重75.0公斤

2)每次跑步会减肥0.5公斤
3)每次吃东西体重会增加1公斤
4)小美的体重是45.0公斤

class Person:   def __init__(self, name, weight):       self.name = name       self.weight = weight   def __str__(self):       return '我的名字叫 %s 体重是 %.2f' % (self.name, self.weight)   def run(self):       print ('%s 爱跑步' % self.name)       self.weight -= 0.5   def eat(self):       print ('%s 吃东西' % self.name)       self.weight += 1xx = Person('小明', 75.0)xx.run()xx.eat()print (xx)xm = Person('小美', 45.0)xm.run()xm.eat()print (xm)print (xx)

4、摆放家具

需求:
1)房子有户型,总面积和家具名称列表
新房子没有任何的家具
2)家具有名字和占地面积,其中
床:占4平米
衣柜:占2平面
餐桌:占1.5平米
3)将以上三件家具添加到房子中
4)打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表

class Home:   def __init__(self,home_type,area):       self.home_type = home_type       self.area = area       self.freearea = area  #初始值等于总面积       self.jiaju = []   def __str__(self):       #输出:户型,总面积,剩余面积,家具名称列表       return (' 户型:%s \n 总面积:%.2f \n 剩余面积:%.2f \n 家具名 %s'               %(self.home_type,self.area,self.freearea,self.jiaju))   def add_jiaju(self,itm):       print('要添加%s'%itm)       #判断家具的面积       if itm.area > self.freearea:           print('%s的面积太大,无法添加!'%(itm.name))           return       #将家具的名称添加到列表       self.jiaju.append(itm.name)       #计算剩余面积       self.freearea -=itm.areaclass jiaju():   def __init__(self,name,area):       self.name = name       self.area = area   def __str__(self):       return "[ %s ]:占地 [ %.2f ] 平米"%(self.name,self.area)#创建家具bed = jiaju("床",4)chest = jiaju('衣柜',2)table = jiaju('餐桌',1.5)print('bed:',bed)print('bed:',bed.name)print('bed:',bed.area)print(chest)print(table)#创建房子myhome = Home('三室一厅',100)myhome.add_jiaju(bed)myhome.add_jiaju(chest)myhome.add_jiaju(table)print(myhome)

5、需求:

1)士兵瑞恩有一把AK47
2)士兵可以开火(士兵开火扣动的是扳机)
3)枪能够发射子弹(把子弹发射出去)
4)枪能够装填子弹 --增加子弹的数量

class Gun(object):   def __init__(self,model):       self.model = model       self.bullet_count = 0   def add_bullet(self,count):       self.bullet_count += count   def shoot(self):       if self.bullet_count <= 0 :           print('%s没有子弹' %(self.model))       else:           self.bullet_count -= 1           print('%s的子弹数量为%s' %(self.model,self.bullet_count))class Soldier(object):   def __init__(self,name):       self.name =name       self.gun = None   def fire(self):       if self.gun == None:           print('%s没有枪' %(self.name))       else:           self.gun.add_bullet(5)           self.gun.shoot()ak47 = Gun('AK47')ak47.add_bullet(10)ak47.shoot()ruien = Soldier('RE')ruien.gun = ak47ruien.fire()

转载地址:http://igvt.baihongyu.com/

你可能感兴趣的文章
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>
MySQLIntegrityConstraintViolationException异常处理
查看>>
mysqlreport分析工具详解
查看>>
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>