第8周 Python面向对象编程刷题

单击题目,直接跳转到页面刷题,一周后公布答案。加入QQ群701657573,随时答疑交流。

  1. 218:类对象属性
  2. 219:坐标对象相加
  3. 220:计算周长
  4. 221:学生分数总和
  5. 222:车辆类中创建引擎类对象
  6. 223:调用父类方法
  7. 224:super()函数的使用
  8. 225:正方形的面积和周长

1. 218:类对象属性

编写一个程序来创建一个类并使用该类的方法来打印属性。

创建一个类:

  • 创建自行车Bicycle类。
  • 在类中,创建两个方法__init__()和print_attributes()。
  • 类有两个属性:gear’和speed,它们应该在__init__()中初始化。
  • 在print_attributes()方法中,将gear属性和speed属性分别打印在两行。

在类外:

  • 创建Bicycle类对象bicycle1。对象的gear和speed属性分别是4和80。
  • 使用bicycle1对象调用print_attributes()方法。
    更多提示,请看代码示例。

示例输出

4
80

参考源码:

# 创建Bicycle类 
class Bicycle:
    def __init__(self, gear, speed):
        # 初始化属性 
        self.gear = gear
        self.speed = speed
    
    # 创建print_atributes() 方法 
    def print_atributes(self):
        print(self.gear)
        print(self.speed)

# 创建对象, 4 和 80 作为初始化参数 
bicycle1 = Bicycle(4, 80)

# 调用 print_atributes() 方法 
bicycle1.print_atributes()

2. 219:坐标对象相加

编写一个程序,计算两个二维坐标类对象相加之和。

创建类:

  • 创建坐标类Coordinate,属性为x和y。
  • 使用__init__()方法来初始化属性。
  • 该类有add_coordinates()方法,参数为Coordinate类对象,计算两个对象的x和y分别相加之和,并作为新的属性返回一个新的Coordinate对象。

在类外:

  • 创建两个Coordinate类对象c1和c2。
  • c1的x和y属性分别为5和6。
  • c2的x和y属性分别为7和9。
  • 使用c1对象调用add_coordinates(),以c2为参数,并将结果赋值到c3变量中。
  • 打印c3的x属性。
  • 打印c3的y属性。

更多提示,请看代码示例。

示例输出

12
15

参考源码:

# 创建 Coordinate 类 
class Coordinate:
    # 初始化属性x 和 y,使用__init__() 函数
    def __init__(self, x, y):
        self.x = x
        self.y = y

    # 实现 add_coordinates() 方法 
    def add_coordinates(self, a):
        # b = Coordinate(0, 0)  # 创建新的Coordinate对象b
        # b.x = self.x + a.x
        # b.y = self.y + a.y
        # return b
        return Coordinate(self.x+a.x, self.y+a.y)

# 创建对象 c1 和 c2
c1 = Coordinate(5, 6)
c2 = Coordinate(7, 9)

# 对象c1调用add_coordinates()方法,参数为c2 
c3 = c1.add_coordinates(c2)

# 输出对象c3 的属性
print(c3.x)
print(c3.y)

3. 220:计算周长

编写一个程序来计算三角形的周长,使用面向对象方式来编程。

创建类:

  • 创建三角形Triangle类,有三个属性x,y,z。
  • 使用__init__()方法来初始化属性。
  • 创建get_perimeter()的方法来计算周长并返回。

在类外:

  • 输入三个整数,分别赋值给变量a、b和c。(三角形三边长度)。
  • 用a、b、c创建Triangle类对象。
  • 用该对象调用get_perimeter()方法,返回周长。
  • 打印周长。

输入格式

三个整数

示例输入

1
2
3

示例输出

6

参考源码:

# 创建三角形类Triangle
class Triangle:
    # 实现__init__()方法 ,初始化属性
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
    # 定义 get_perimeter() 方法 
    def get_perimeter(self):
        return self.x + self.y + self.z

# 输入三个整数 
a = int(input())
b = int(input())
c = int(input())

# 创建Triangle类对象,并用a、b、c作为参数初始化三边
my_tri = Triangle(a, b, c)

# 调用 get_perimeter() 计算周长
perimeter = my_tri.get_perimeter()

# 打印 周长 perimeter
print(perimeter)

4. 221:学生分数总和

编写一个程序来创建Student类,该类有一个方法返回存储在列表中的分数之和。

创建类:

  • 创建Student类,且有一个分数scores属性(类型为列表)。
  • 创建__init__()方法初始化scores属性。
  • 创建get_scores_sum()方法,将分数相加返回。可使用内置的 sum()函数。

类外部:

  • 创建列表scores值为[55, 75, 80, 62, 77]。
  • 创建Student类对象s1,并传入scores来初始化属性。
  • 调用get_scores_sum()方法,结果存入total变量。
  • 打印total变量。

示例输出

349

参考源码:

# 创建 Student 类 
class Student:
    # 使用 __init__() 方法来初始化 scores 属性  
    def __init__(self, scores):
        self.scores = scores
  
    # 创建get_scores_sum()方法,将分数相加返回
    def get_scores_sum(self):
        return sum(self.scores)
  
# 创建列表 scores 
scores = [55, 75, 80, 62, 77]

# 传递分数scores作为参数创建Student类对象
s1 = Student(scores)

# 对象s1调用方法get_scores_sum()
total = s1.get_scores_sum()

# 打印 total
print(total)

5. 222:车辆类中创建引擎类对象

编写写一个程序,在一个类中创建另一个类的对象。

创建类:

  • 创建两个类:发动机类Engine,属性为动力power;车辆类Vehicle,属性为: 轮子wheels和发动机engine。
  • Engine类__init__()方法,带两个参数。self和power来创建并初始化Engine类的power属性。
  • Vehicle类__init__()方法,带两个参数self和wheels来初始化Vehicle类的wheels属性。
  • 在Vehicle的__init__()方法中,engine属性应该为一个Engine类的对象,其power属性等于400。
  • 在Vehicle类中创建get_power()方法,打印 属性engine的power属性。

在类外:

  • 创建车辆Vehicle类对象,轮子wheels属性等于4。
  • 调用该对象的get_power()方法。

更多提示,请看代码示例。

示例输出

400

参考源码:

# 创建Engine类 
class Engine:
    # __init__() 方法初始化 power 属性 
    def __init__(self, power):
        self.power = power

# 创建 Vehicle 类 
class Vehicle:
    #  __init__() 方法初始化 wheels 属性 
    def __init__(self, wheels):
        self.wheels = wheels
        # 引擎属性enginer应该是引擎类的一个对象,power属性为400
        self.engine = Engine(400)
    
    # 创建 get_power() 方法 
    def get_power(self):
        # 打印引擎属性的功率属性(engine是引擎类的一个对象)。
        print(self.engine.power)

# 创建车辆Vehicle类对象
my_car = Vehicle(4)

# 调用get_power()方法 
my_car.get_power()

6. 223:调用父类方法

编写一个程序,使用派生类(子类)对象调用基类(父类)的方法:

创建类:

  • 创建动物Animal基类。该类中,创建eat()方法,打印 “我在吃东西”。
  • 创建一个继承于Animal类的Dog类。该类中,创建bark()方法,打印 “我在叫”。

在类外:

  • 创建Dog类对象。
  • 用该对象调用eat()方法。

示例输出

我在吃东西

参考源码:

# 创建Animal类 
class Animal:
    def eat(self):
        print("我在吃东西")
# 创建 Dog 类,继承于 Animal类 
class Dog(Animal):
    def bark(self):
        print("我在叫")

# 创建Dog类对象 
my_dog = Dog()

# 调用对象的 eat() 方法 
my_dog.eat()

7. 224:super()函数的使用

编写一个程序,使用super()函数在派生类的方法中调用基类的方法。

创建类:

  • 创建动物Animal基类。该类中,创建eat()方法,打印 “我在吃东西”。
  • 创建一个继承于Animal类的Dog类。该类中,创建bark()方法,打印 “我在叫”。
  • 在Dog类中定义eat()方法,使用supper()调用父类Animal类的eat()方法。

在类外:

创建Dog类对象,用该对象调用eat()方法。

示例输出

我在吃东西

参考源码:

# 创建Animal类 
class Animal():
    def eat(self):
        print("我在吃东西")

# 创建 Dog 类,继承于 Animal类 
class Dog(Animal):
    def bark(self):
        print("我在叫")
    
    def eat(self):
        # 通过super() 函数来调用父类的eat方法
        super().eat()

# 创建Dog类对象 
my_dog = Dog()

# 调用对象的 eat() 方法 
my_dog.eat()

8. 225:正方形的面积和周长

编写一个程序,用类来计算一个正方形的面积和周长。(正方形是一个边长相等的矩形)

创建一个类。

  • 创建正方形Square类,且有一个长度length属性。
  • 使用__init__()来初始化 length 属性。
  • 创建compute_area()方法来计算正方形的面积并返回。
  • 创建compute_perimter()方法来计算正方形的周长并返回。

在类外:

  • 输入一个整数并赋值给length变量。
  • 通过传递length作为参数,创建一个Square类对象。
  • 调用compute_area()方法并打印面积。
  • 调用compute_perimeter()方法并打印周长。

正方形的面积等于length * length,正方形的周长等于4 * length。

输入格式

一个整数

示例输入

2

示例输出

4
8

参考源码:

# 创建正方形类Square
class Square:
    # 实现 __init__() 函数,初始化属性 
    def __init__(self, length):
        self.length = length

    # 实现面积方法 get_area() ,并返回面积
    def  get_area(self):
        return self.length ** 2

    # 实现周长方法 get_perimeter() ,并返回周长
    def get_perimeter(self):
        return 4 * self.length

# 输入一个整数 
length = int(input())

# 创建Square类对象
my_square = Square(length)

# 调用 get_area() 方法并打印面积
print(my_square.get_area())

# 调用 get_perimeter() 方法并打印周长
print(my_square.get_perimeter())
  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

趣学算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值