python3 程序设计 第7章课后题答案

您所在的位置:网站首页 python程序设计金松林课后答案第五章 python3 程序设计 第7章课后题答案

python3 程序设计 第7章课后题答案

2024-07-16 10:16:02| 来源: 网络整理| 查看: 265

目录

1.选择题:

2.简答题:

(1)什么是对象?什么是类?类与对象的关系是什么?

(2)面向对象语言有哪三个特性?

(3)什么是面向对象编程的继承性?有什么优点?

(4)类变量与成员变量的区别是什么?

(5)构造方法和析构方法名字都是什么?

(6)构造方法的作用是什么?它与成员方法有什么不同?

(7)请列举出五种重载的运算符及其对应的方法。

3.阅读程序

运行下面的程序,输出结果是什么?说明程序的执行过程。

4.编程题:

(1)设计一个Group类,该类包括:一个数据成员score(每个学生的分数)、两个类成员total(班级的总分)和 count (班级的人数)。成员方法setScore0用于设置分数,成员方法sum(用于累计总分,类方法averageO用于求平均值。交互式输人某组学生的成绩,显示该组的总分和平均分。

(2)为二次方程式ax^2+bx+c=0 设计一个名为Equation的类,这个类包括:

(3)设计一个描述自由落体运动的类,要求能获得任意时刻的速度及位移,并进行测试。已知重力加速度为9.8m/s^2。

1.选择题:

1.A 2.A 3.D 4.C 5.D 6.A 7.C 8.B 9.C 10.D

部分题的解析:

6.重写不是面向编程的基本特征之一,重写通常是子类可以重写父类的方法以改变其行为,是继承的一部分

8.类方法:@classmethod 静态方法:@staticmethod

10.这段代码有两个用test命名的函数,在python中,方法的重载并不像其他语言那样直接支持,因为python会覆盖先前定义的同名方法,所以只有最后一个定义的test方法会被保留,而前一个会被覆盖,在python中,self是用来指代当前对象实例的参数,它需要显式地传递给每个类的方法。所以在定义类的方法时,self参数时必须的,不能省略,在定义类方法是,self时第一个参数,它表示当前对象实例的引用。当你调用类的方法时,python会自动将当前对象实例作为第一个参数传递给该方法,因此你在方法内部可以通过self来访问该对象的属性和方法

2.简答题: (1)什么是对象?什么是类?类与对象的关系是什么?

对象:对应客观世界的事物 类:具有相同或相似性质的对象的抽象就是类

类与对象的关系:对象的抽象就是类,类的具体化就是对象。

(2)面向对象语言有哪三个特性?

1.封装性 2.继承性 3多态性

(3)什么是面向对象编程的继承性?有什么优点?

继承性:描述类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的数据和操作

优点:增强了代码的复用性,提高了开发效率而且为程序的修改补充提供了便利。

(4)类变量与成员变量的区别是什么?

类变量:

类变量是定义在类中,但在所有实例之外的变量。它们属于整个类,而不属于类的特定实例。

类变量可以通过类名直接访问,也可以通过类的任何一个实例来访问。所有该类的实例都共享同一个类变量的值。

类变量通常用于表示该类的特性或共享的状态,比如全局计算器、常量值等。

成员变量:

成员变量是定义在类中,但在方法中使用self关键字声明的变量。每个实例都有自己的一组成员变量,它们属于实例。

成员变量在类的每个实例之间是独立的,每个实例可以有不同的成员变量。

成员变量通常用于表示实例的特定状态或属性

区别:类变量是属于整个类的,成员变量是属于类的实例的,类变量在整个类中共享,而成员变量则是每个实例独有的。

(5)构造方法和析构方法名字都是什么? 构造方法的名字: __init__() 析构方法的名字: __del__() (6)构造方法的作用是什么?它与成员方法有什么不同?

构造方法的作用:一般用于为对象数据成员设置初始值或进行其他必要的初始化工作,如果未定义构造方法,python将提供一个默认的构造方法。

不同:构造方法用于初始化对象的状态,在创建对象时自动调用;而成员方法则是定义类的行为或操作的普通方法,它们可以被对象调用来实现特定的功能。

(7)请列举出五种重载的运算符及其对应的方法。 x+y,x+=y :__add__ x-y,x-=y :__sub__ x/y,x/=y :__div__ x*y,x*=y :__mul__ x%y,x%=y :__mod__ 3.阅读程序 运行下面的程序,输出结果是什么?说明程序的执行过程。 class MyClass:    value=100    def function1(self):        print("self.value=",self.value)        print("MyClass.value=",MyClass.value)         class UClass(MyClass):    value=200    def function1(self):        super().function1()        print("super().value=",super().value)        print("self.value=",self.value)        print("UClass.value=",UClass.value) cc=UClass() cc.function1() print("用对象访问,cc.value=",cc.value) print("用类访问,UClass.value=",UClass.value) #输出结果: self.value=100 MyClass.value=100 super().value=100 self.value=200 UClass.value=200 用对象访问,cc.value=200 用类访问,UClass.value=200 ''' cc=UClass() #只是在内存中分配了一个UClass类的实例,并将其赋给变量cc. cc.function1() #这个是调用UClass类中的function1函数打印上面的值. super().value   #访问父类MyClass中的value属性.由于super()返回的是代理对象,因此此时获取的是父类中的值。 我觉的要注意的就这些''' 4.编程题: (1)设计一个Group类,该类包括:一个数据成员score(每个学生的分数)、两个类成员total(班级的总分)和 count (班级的人数)。成员方法setScore0用于设置分数,成员方法sum(用于累计总分,类方法averageO用于求平均值。交互式输人某组学生的成绩,显示该组的总分和平均分。 class Group:    total=0  #类成员变量,记录班级的总分    count=0  #类成员变量,记录班级人数        def __init__(self):        self.score=0   #每个学生的分数        def setScore(self,score):        self.score=score        Group.total+=score  #累加班级总分        Group.count+=1    #累加班级人数        @classmethod    def sum(cls):        return cls.total #返回班级总分        @classmethod    def average(cls):        if cls.count==0:            return 0        else:            return cls.total/cls.count #返回平均分        @staticmethod    def input_scores(group):        while True:            try:                score=float(input("请输入学生成绩(输入负数结束输入):"))                if score < 0:                    break                group.setScore(score)            except ValueError:                print("请输入有效的成绩(数字)!")   #主程序 group=Group()   #创建Group类的实例 group.input_scores(group)   #调用函数输入成绩 #显示该组的总分和平均分 print("该组的总分为:",Group.sum()) print("该组的平均分:",Group.average()) (2)为二次方程式ax^2+bx+c=0 设计一个名为Equation的类,这个类包括:

代表3个系数的成员变量a、b、c;

一个参数为a、b、c的构造方法;

一个名为getDiscrimimant()的方法返回判别式的值;

一个名为getRoot1()和getRoot2()的方法返回等式的两个根,如果判别式为负,这些方法返回0。

import math ​ class Equation:    def __init__(self, a, b, c):        self.a = a        self.b = b        self.c = c        def getDiscriminant(self):        return self.b**2 - 4 * self.a * self.c        def getRoot1(self):        discriminant = self.getDiscriminant()        if discriminant < 0:            return 0        else:            return (-self.b + math.sqrt(discriminant)) / (2 * self.a)        def getRoot2(self):        discriminant = self.getDiscriminant()        if discriminant < 0:            return 0        else:            return (-self.b - math.sqrt(discriminant)) / (2 * self.a) ​ # 示例用法 a=int(input("a=")) b=int(input("b=")) c=int(input("c=")) equation = Equation(a, b, c) print("判别式:", equation.getDiscriminant()) print("第一个根:", equation.getRoot1()) print("第二个根:", equation.getRoot2()) (3)设计一个描述自由落体运动的类,要求能获得任意时刻的速度及位移,并进行测试。已知重力加速度为9.8m/s^2。 class FreeFall:    def __init__(self,gravity=9.8):        self.gravity=gravity ​    def velocity(self,time):        return self.gravity*time ​    def displacement(self,time):        return (1/2)*self.gravity*time**2 #主程序 time=float(input("(t为整数)t:")) free=FreeFall(time) print(f"{time}时刻的速度是",free.velocity(time)) print(f"{time}时刻的位移是",free.displacement(time))


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭