美文网首页
day16_python_歌词作业讲解

day16_python_歌词作业讲解

作者: mmlong_07 | 来源:发表于2018-09-10 20:46 被阅读0次

歌词解析

class Lyric:
    def __init__(self, time, word):
        self.time = time
        self.word = word

    def __str__(self):
        return '%.2f %s' % (self.time, self.word)

    def __gt__(self, other):
        return self.time > other.time


class LyricAnalysis:
    """歌词解析类"""
    # 创建解析器对象的时候告诉我这个解析器是要解析哪首歌
    def __init__(self, song_name):
        # 保证一个歌词解析器对象对应一首歌
        self.song_name = song_name
        # 一首歌对应一个容器
        self.all_lyric = []
        # 解析歌词
        self.__collect_lyric()

    def __get_time_word(self, content):
        """提取歌词和时间"""
        contents = content.split(']')
        # 词
        word = contents[-1]
        for time in contents[:-1]:
            # 将时间转换秒
            times = time[1:].split(':')
            fen = float(times[0])
            miao = float(times[1])
            new_time = fen*60 + miao
            # 根据时间和词创建歌词对象
            lyric = Lyric(new_time, word)
            # 保存歌词对象
            self.all_lyric.append(lyric)

    def __collect_lyric(self):
        """将时间和词提取出来"""
        # 读歌词文件中的内容
        try:
            with open('./files/%s.txt' % self.song_name, 'r', encoding='utf-8') as f:
                # 一行一行的读
                line = f.readline()
                while line:
                    # 将每一行中的内容的词和时间弄出来
                    self.__get_time_word(line)
                    line = f.readline()
                # 排序
                self.all_lyric.sort(reverse=True)
                # for lyric in self.all_lyric:
                #     print(lyric)

        except FileNotFoundError:
            print('文件不存在')

    def get_word(self, time):
        """根据时间获取歌词"""
        for lyric in self.all_lyric:
            if lyric.time <= time:
                return lyric.word

an1 = LyricAnalysis('蓝莲花')
print(an1.get_word(120))

an1 = LyricAnalysis('蓝莲花')
将蓝莲花输入 song_name = '蓝莲花' self.all_lyric = []
调用 .__collect_lyric() .打开蓝莲花TXT .逐行读取.
第一行进入__get_time_word
content.split(']') 分割 .将词存入 word .将时间 换算成秒.
新得到的秒数和 词 进入 class Lyric.返回'时间+歌词'的Lyric类的对象.加人到self.all_lyric中.
第二行进入__get_time_word . an1.all_lyric中加人第二个
直到读完.用all_lyric.sort将元素倒序
完成

an1.get_word(120)
将120 输入get_word time=120
将self.all_lyric中的每一个'时间+歌词'的Lyric类的对象取出
判断 如果有一个对象的时间性质小于等于120.立即输入它的词

相关文章

  • day16_python_歌词作业讲解

    歌词解析 an1 = LyricAnalysis('蓝莲花')将蓝莲花输入 song_name = '蓝莲花' ...

  • #作业------歌词

    林俊杰 去到底部 因你而在 > 运行效果

  • 歌词作业

    Document #1">去底部 #2">去指定位置 这是我个人的博客 流浪 ht...

  • 讲解员之歌(歌词)

    文/余光 虞山是英雄的丰碑, 湖水在哗哗歌唱, 我们是纪念馆的讲解员, 怀着豪情充满理想。 新四军的伟业永记心上,...

  • 28作业讲解

    js中不希望别人改我,就大写 这个用parent的题目相比用x的题目可以知道,我们不要这样给id起名parent1...

  • 作业视频讲解

    0周: http://suo.im/6k9qsu 0周/电脑:修改名片和视频教学.mp4http://suo.im...

  • 讲解作业

    小学六年级的数学对我们来说,有点困难,儿子数学班级进入复习阶段,发现数学有一些题目还是不会。结合着app给孩子讲解...

  • 网课这些日子

    刚刚批着学生的作业,血压飙升,真要吐血。下午上了直播课,讲解了重点内容。在作业反馈环节讲解了作业本上的作业,结果,...

  • Flink 整合 Apollo,动态更新 Flink 作业配置

    本人自己录的视频,讲解 Flink 整和 Apollo,动态更新作业配置,无需重启作业! 在上一篇讲解 Flink...

  • 初三期末备考第13天

    一、视频讲解 趣味动漫小视频教你: 二、作业练习 昨日作业答案 今日作业

网友评论

      本文标题:day16_python_歌词作业讲解

      本文链接:https://www.haomeiwen.com/subject/ixeegftx.html