好文档 - 专业文书写作范文服务资料分享网站

第9章 面向对象编程习题及答案 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

1、 关于python类 说法错误的是:

A 类的实例方法必须创建对象后才可以调用 B 类的实例方法必须创建对象前才可以调用 C 类的类方法可以用对象和类名来调用 D 类的静态属性可以用类名和对象来调用 答案:B

2、 如下类的定义,下列描述错误的是?

class A(object): pass class B(A): pass b=B()

A、 isinstance(b,A)==True

B、 isinstance(b,object)==True C、 issubclass(B,A)==True D、 issubclass(b,B)==True 答案:D

3、 定义类如下

class Hello():

def __init__(self,name) self.name=name

def showInfo(self) print(self.name) 下面代码能正常执行的:

A、 h = Hello h.showInfo() B、 h = Hello()

h.showInfo(‘张三’) C、 h = Hello(‘张三’) h.showInfo() D、 h = Hello(‘admin’)

showInfo 答案:C

4、 导入模块的方式错误的是:

A、 import mo B、 from mo import * C、 import mo as m D、 import m from mo

答案:D

5、 以下关于模块说法错误的是:

A、 一个xx.py就是一个模块

B、 任何一个普通的xx.py文件可以作为模块导入

C、 模块文件的扩展名不一定是 .py

D、 运行时会从制定的目录搜索导入的模块,如果没有,会报错异常 答案:C

6、 多重继承的执行顺序,请解答以下输出结果是什么?并解释。 class A(object): def __init__(self): print('A')

super(A, self).__init__() class B(object): def __init__(self): print('B')

super(B, self).__init__() class C(A): def __init__(self): print('C')

super(C, self).__init__() class D(A): def __init__(self): print('D')

super(D, self).__init__() class E(B, C): def __init__(self): print('E')

super(E, self).__init__() class F(C, B, D): def __init__(self): print('F')

super(F, self).__init__() class G(D, B): def __init__(self):

print('G')

super(G, self).__init__() g = G() f = F() 答案:

G D A B F C B D A

7、 编写程序,创建类Temperature,其包含成员变量degree(表示温度)以及实例方法

ToFahrenheit(将摄氏温度转换为华氏温度)和ToCelsius(将华氏温度转换为摄氏温度),其中,(华氏度-32)*5/9=摄氏度,摄氏度*9/5+32=华氏度

答案:

class Temperature:

def __init__(self, degree): self.degree = degree def toFahrenheit(self):

return self.degree*9/5 + 32 def toCelsius(self):

return (self.degree -32) * 5/9

n1 = float(input(\请输入摄氏温度:\t1 = Temperature(n1)

print(\摄氏温度 = {0:.2f}, 华氏温度 = {1:.2f}\n2 = float(input(\请输入华氏温度:\t2 = Temperature(n2)

print(\摄氏温度 = {0:.2f}, 华氏温度 = {1:.2f}\

8、 定义一个至少有两个方法的类: getString:从控制台输入获取字符

串 printString:打印输入字符串对应的大写形式。 答案:

class InputOutString(object): def __init__(self):

self.s = \

def getString(self):

print('请输入字符串:') self.s = input() def printString(self): print(self.s.upper())

strObj = InputOutString() strObj.getString() strObj.printString()

9、 定义一个学生Student类。有下面的类属性:1)姓名 name 2)年龄 age 3)成绩 score

(语文,数学,英语) [每课成绩的类型为整数]

类方法:1)获取学生的姓名:get_name() 2)获取学生的年龄:get_age() 3)返回3门科目中最高的分数。

写好类以后,可以定义2个同学测试下: zm = Student('zhangming',20,[69,88,100]) 返回结果: zhangming 20 100

答案:

class Student(): # 构造函数

# 对当前对象的实例的初始化 def __init__(self, name, age, score): self.name = name self.age = age self.score = score

def get_name(self): return self.name

def get_age(self): return self.age

def get_course(self): a = max(self.score) if isinstance(a, int): return a

zm = Student('zhangming', 20, [69, 88, 100])

print(zm.get_name()) print(zm.get_age()) print(zm.get_course())

10、 编程实现如下要求。

1)创建员工类Employee,属性有姓名name、能力值ability、年龄age(能力值为100-年龄),功能有doWork(),该方法执行一次,该员工的能力值-10。

2)创建老板类Boss,属性有金钱money,员工列表employeeList(存储员工类对象),工作量work,功能有雇佣员工addEmployee(),雇佣后将员工添加至列表中,雇佣一人money减5000,金额不足时不能雇佣新员工;开始工作startWork(),工作开始后,依次取出员工列表中的员工开始工作,员工能力值减少的同时总的工作量work也减少,当工作量work为0时,工作结束,如果所有员工使用完后,依然没有完成工作,则提示老板需要雇佣新员工,并打印剩余工作量

3)创建Boss类对象,默认执行雇佣3个员工,年龄分别为30,40,50,然后死循环开始工作,直至工作完成。

答案:

class Employee:

def __init__(self,name,age): self.name = name self.age = age

self.ability = 100-age def doWork(self):

if self.ability >=10:

print(self.name,\开始工作\ self.ability -= 10 return 5 else:

print(\员工需要休息\ return 0 class Boss:

def __init__(self,money,work): self.money = money self.work = work self.employeeList =[]

def addEmployee(self,employee): if self.money >= 5000:

self.employeeList.append(employee) self.money -= 5000 else:

print(\资金不足\

def startwork(self):

for employee in self.employeeList: if self.work == 0:

print(\工作完成\ break

while employee.ability != 0:

self.work -= employee.doWork() if self.work == 0:

print(\工作完成\ break if self.work != 0:

print(\工作未完成,请继续雇佣员工,剩余工作量为\

boss = Boss(1000000,100)

employee1 = Employee(\张三\employee2 = Employee(\李四\employee3 = Employee(\王五\boss.addEmployee(employee1) boss.addEmployee(employee2) boss.addEmployee(employee3)

boss.startwork() 11、 编程实现如下要求。

1)创建Person类,属性有姓名、年龄、性别,创建方法personInfo,打印这个人的信息

2)创建Student类,继承Person类,属性有学院college,班级class,重写父类personInfo方法,除调用父类方法打印个人信息外,将学生的学院、班级信息也打印出来。创建方法learn参数为Teacher对象,调用Teacher类的teach方法,接收老师教授的知识点,然后打印‘老师xxx,我终于学会了!’xxx为老师的teach方法返回的信息。

3)创建Teacher类,继承Person类,属性有学院college,专业professional,重写父类personInfo方法,除调用父类方法打印个人信息外,将老师的学院、专业信息也打印出来。创建teachObj方法,返回信息为‘今天讲了如何用面向对象设计程序’

4)创建三个学生对象,分别打印其详细信息 5)创建一个老师对象,打印其详细信息 6)学生对象调用learn方法

答案:

class Person:

def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex

def printInfo(self):

print(\我叫\年龄\性别\

class Student(Person):

def __init__(self,name,age,sex,college,banji): super().__init__(name,age,sex) self.college = college self.banji = banji

def printInfo(self):

print(\我叫\年龄\性别\,我是\的\班的学生\

def learn(self,teacher):

print(\我是\老师,\我终于学会了\

class Teacher(Person):

def __init__(self,name,age,sex,college,professional): super().__init__(name,age,sex) self.college = college

self.professional = professional

def printInfo(self):

print(\我叫\年龄\性别\,我是来自\的一名\讲师\

def teach(self):

return \今天讲了面向对象编程\

stu1 = Student(\张三\男\计算机学院\stu2 = Student(\李四\女\计算机学院\stu3 = Student(\王五\男\计算机学院\stu1.printInfo() stu2.printInfo() stu3.printInfo()

tea = Teacher(\张老师\男\计算机学院\tea.printInfo() stu1.learn(tea) stu2.learn(tea) stu3.learn(tea)

12、 修改第11题,使用模块化来实现,即:将Person、Student和Teacher分别放在

不同的模块中,然后再创建一个文件,在其中1)创建三个学生对象,分别打印其详细信息;2)创建一个老师对象,打印其详细信息;3)学生对象调用learn方法 答案:

Person.py参考第11题中的class Person

Student.py和Teacher.py分别在第11题的class Student(Person)和class Teacher(Person)前增加from Person import Person 主程序文件:

from Student import Student from Teacher import Teacher

stu1 = Student(\张三\男\计算机学院\stu2 = Student(\李四\女\计算机学院\stu3 = Student(\王五\男\计算机学院\stu1.printInfo() stu2.printInfo() stu3.printInfo()

tea = Teacher(\张老师\男\计算机学院\tea.printInfo() stu1.learn(tea) stu2.learn(tea) stu3.learn(tea)

第9章 面向对象编程习题及答案 - 图文

1、关于python类说法错误的是:A类的实例方法必须创建对象后才可以调用B类的实例方法必须创建对象前才可以调用C类的类方法可以用对象和类名来调用D类的静态属性可以用类名和对象来调用答案:B2、如下类的定义,下列描述错误的是?classA(object):passclassB(A):passb=B
推荐度:
点击下载文档文档为doc格式
1d9zs9v02548fsc2a7r62i4cx3q5al00q6a
领取福利

微信扫码领取福利

微信扫码分享