day15_作业

"""author == 廖诚凯"""

1. 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。 再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD属性,并且重新实现方法覆盖加速、减速的方法

class Auto:

    def __init__(self, wheel, color, weight, speed):
        self.wheel = wheel
        self.color = color
        self.weight = weight
        self.speed = speed

    def speed_up(self):
        print('加速10')
        self.speed += 10
        print(f'速度为{self.speed}')

    def speed_down(self):
        if self.speed > 10:
            print('减速10')
            self.speed -= 10
            print(f'速度为{self.speed}')
        else:
            print('车速过低,不能再减速了')

    def stop(self):
        print('停车')
        self.speed = 0
        print(f'速度为{self.speed}')


class CarAuto(Auto):

    def __init__(self, kt, cd, wheel, color, weight, speed):
        super().__init__(wheel, color, weight, speed)
        self.kt = kt
        self.cd = cd

    def speed_up(self):
        print('直接加速100')
        self.speed += 100
        print(f'这时的速度为{self.speed}')

    def speed_down(self):
        if self.speed > 50:
            print('直接减速50')
            self.speed -= 50
            print(f'这时的速度为{self.speed}')
        else:
            print('车速过低,不能再减速了')

c1 = CarAuto('美的', '要什么cd', 4, '红色', '3吨', 100)
c1.speed_up()

2. 创建一个Person类,添加一个类字段用来统计Perosn类的对象的个数

class Person:
    # 人类
    num = 0
    def __init__(self):
        self.__class__.num += 1

p1 = Person()
p2 = Person()
print(Person.num)

3. 创建一个动物类,拥有属性:性别、年龄、颜色、类型

要求打印这个类的对象的时候以'/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/' 的形式来打印

class Animals:
    # 动物
    def __init__(self, gender, age, color, type):
        self.gender = gender
        self.age = age
        self.color = color
        self.type = type

    def __repr__(self):
        return f'{self.__class__.__name__}的对象:性别-{self.gender} 年龄-{self.age} 颜色-{self.color} 类型-{self.type}'

a = Animals('男', 18, '红色', '蠢狗')
print(a)

4. 写一个圆类, 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值

import math


class InputError(Exception):

    def __str__(self):
        return '瓜皮,这里不能手动写入!!'


class Cricle:
    # 圆
    def __init__(self, radius, ):
        self.radius = radius
        self._area = 0
        self._perimeter = 0

    @property
    def area(self):
        return math.pi * self.radius ** 2

    @area.setter
    def area(self, value):
        raise InputError

    @property
    def perimeter(self):
        return math.pi * self.radius

    @perimeter.setter
    def perimeter(self, value):
        raise InputError


c1 = Cricle(5)
print(c1.area)
print(c1.perimeter)

5. (尝试)写一个类,其功能是:1.解析指定的歌词文件的内容 2.按时间显示歌词 提示:歌词文件的内容一般是按下面的格式进行存储的。歌词前面对应的是时间,在对应的时间点可以显示对应的歌词

def show_lrc(lrc_file):
    with open(lrc_file, encoding='utf-8') as f:
        list1 = f.readlines()
        print(list1)
    lrc_list = [x[:-1] for x in list1[:-1]]
    lrc_list.append(list1[-1])
    lrc = []
    for i in lrc_list:
        lrc_line = i.split(']')
        # print(lrc_line)
        times = [item[1:] for item in lrc_line[:-1]]
        for time in times:
            # 时间转换
            time_s = int(time[:2]) * 60 + int(time[3:5]) + int(time[-2:]) / 100
            lrcs = f'{time}:{lrc_line[-1]}'
            lrc.append((time_s, lrcs))
    lrc.sort(key=lambda x: x[0], reverse=True)
    lrc_dict = dict(lrc)
    time = int(input('请输入要查看多少秒的歌词:'))
    try:
        for t in lrc_dict:
            if time > t:
                print(f'第{time}秒的歌词为:\n{lrc_dict[t]}')
                break
    except:
        print('请正确输入')

a = show_lrc('lyric.txt')

你可能感兴趣的:(day15_作业)