给我一首歌的时间

阅读文本大概需要 6.6 分钟

写在前面

公号出生有一段时间了,看着她一点一点的长大,感到满满的全是幸福。未来的我们都要为人父母,在我看来呵护公号就像父母呵护自己的孩子一般,只不过一个是智慧的结晶,一个是爱情的结晶。

当她刚出生时,激动、兴奋、幸福,你会感觉到全世界都是你的,小心翼翼地为她付出你全部的爱。慢慢的,更多的会变成责任与担当,你既希望她如钻石般耀眼优秀,却更希望她健康成长。

创办公号我有我的初心,利他才能利己。我希望她小而美,能给关注她的人真正带来技术上的提升和产生更多对于生活的思考与认知。也许这一路走来会很漫长,但我更希望她健康的成长,因为我相信时间会给自己想要的答案。

「技术和人生都是需要沉淀的,看得见的未来也许并不是你想要到达的彼岸」每日一思,分享给大家。

Python编程

接下来开始今天的学习,昨天分享了关于Python字典的知识,今天原本打算介绍函数的使用,但为了大家能更好地巩固之前的学习,我们今天做个练习,有点难度的哦!

希望大家在学完每一天的知识后都能勤加练习,学以致用,才能学有所成,切勿眼高手低。在这里也欢迎大家积极地留言打卡,练习有问题的可以私发我,同时想一起督促学习的,可以加我微信,日后一起交流指正,共同提升。

01

代码块与笔记

运行歌词

1

思路简介

  1. 选取歌词「青花瓷」
  2. 以行切割歌词
  3. 处理每行歌词,以字典存储结果
  4. 将无序字典处理成“有序”的
  5. 输入时间,输出对应歌词
  6. 运行歌词,让歌词跑起来

2

温馨提醒

  1. 思路简介的 5、6「水火不容」,运行 5 时请将 6 注释掉
  2. 看最终效果时,所有的 prin() 语句可以注释掉,Mark加上是为了让您更清楚每一步的结果

选取歌词1

# 青花瓷

# 导入时间模块,之后会学
import time

# 定义字典
lrcDict = {}

musicLrc = """[00:01.11]青花瓷
[03:36.49]
[00:21.39]素眉勾勒秋千话北风龙转丹 
[00:26.08]屏层鸟绘的牡丹一如你梳妆
[00:30.46]黯然腾香透过窗心事我了然 
[00:34.93]宣纸上皱边直尺各一半
[00:39.49]油色渲染侍女图因为被失藏 
[00:43.83]而你嫣然的一笑如含苞待放
[00:48.30]你的美一缕飘散 
[00:50.77]去到我去不了的地方
[02:23.97][00:55.77]
[03:01.92][02:25.63][00:56.90]天正在等烟雨 
[03:03.57][02:27.91][00:58.99]而我在等你 
[03:05.92][02:30.44][01:00.93]炊烟袅袅升起 
[03:07.76][02:32.25][01:03.49]隔江千万里

"""

2 以行切割歌词

# 歌词按行切割成列表

musicLrcList = musicLrc.splitlines()

# ['[00:01.11]青花瓷', '[03:36.49]', ...]

print(musicLrcList)

处理每行歌词,以字典存储结果3

# 以字典存储结果,如{1.11: '青花瓷'}

for lrcLine in musicLrcList:

    # 按照"]"切割每行歌词
    lrcLineList = lrcLine.split("]")

    # ['[00:01.11', '青花瓷']
    print(lrcLineList)


    # 遍历处理过的每行歌词

    # len(lrcLineList)-1 只抓取时间,不要歌词
    for index in range(len(lrcLineList) - 1):

        # [1:] 从第2个位置开始
        timeStr = lrcLineList[index][1:]

        # 00:01.11
        print(timeStr)

        timeList = timeStr.split(":")

        # ['00', '01.11']
        print(timeList)

        seconds = float(timeList[0]) * 60 + float(timeList[1])

        # 播放时间 1.11
        print(seconds)

        # 对应歌词 青花瓷
        print(lrcLineList[-1])

        lrcDict[seconds] = lrcLineList[-1]

# {1.11: '青花瓷'}
print(lrcDict)

4将无序字典处理成“有序”的

# 以列表存储字典的键,并按照时间排序

allTimeList = []

for t in lrcDict:
    allTimeList.append(t)

# 此时键是无序的
print(allTimeList)

allTimeList.sort()

# [1.11, ...]
print(allTimeList)

5输入时间,输出对应歌词

while 1:

    getTime = float(input("请您输入一个时间:"))

    for j in range(len(allTimeList)):

        tempTime = allTimeList[j]

        print(tempTime)

        if getTime < tempTime:
            break

    if j == 0:
        print("歌曲还没开始播放")

    else:
        print(lrcDict[allTimeList[j - 1]])

6运行结果(gif)

运行歌词,让歌词跑起来7

getTime = 20

while 1:

    for j in range(len(allTimeList)):

        tempTime = allTimeList[j]

        print(tempTime)

        # 输入的时间小于存储歌词时间时,返回前一句歌词
        if getTime < tempTime:
            break

    lrc = lrcDict[allTimeList[j - 1]]

    if lrc is None:
        pass
    else:
        print(lrc)

    time.sleep(1)

    getTime += 4

运行结果(gif)8

02

练习题

哈哈,这就是一首歌的时间能够做到的事情,是不是感觉到Python很Cool呢,可我要告诉你,这仅仅是个开始,未来我们能用Python玩更多更炫酷的东西,只有你想不到的,没有Python做不到的,心动不如行动,赶紧上车吧!明天我们将开始函数的学习,大家一起加油!

好了,今天的分享就到这了,觉得写得不错的,点赞转发支持下。

点赞转发、留言鼓励是对于原创作者最大的鼓励,您的一次点赞、留言也许在您看来没有什么,可是在Mark看来那是大家对自己的肯定与鼓励。未来,我们一起努力

原创不易,感谢分享

原文发布于微信公众号 - Python梦工厂(AzMark950831)

原文发表时间:2018-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有趣的Python和你

人生苦短,我用python大道至简的python

916
来自专栏https://www.cnblogs.com/L

Hbase篇--HBase中一对多和多对多的表设计

PS:说明,两张表User表和Role表, User表中定义两个列族,第一个列族是名字,第二个列族中  多个列定义为具体的角色,列的内容定义为具体的值,即优先级...

823
来自专栏BestSDK

详解移动端UI分隔黄金比例,一条线可能就颠覆你的APP

乍一看许多APP的布局并不复杂,感觉换成自己也能设计出来,但是当你真的开始着手设计这么一个APP的原型的时候,会发现事情并不是那么简单。看着别人已经设计完成的设...

2554
来自专栏钱曙光的专栏

一周极客热文:微软将推新编程语言M#:系统编程级别的C#

据国外媒体VB报道,微软正在开发一款新的编程语言:M# 。它在C#的基础上添加了系统编程特性,可用来构建各种类型的应用,尤其是云计算应用。 微软员工Joe Du...

1906
来自专栏阿凯的Excel

文本替换原来可以这么玩~

今天是第三期朋友提问解答分享~ 今天提问的是我的一位好兄弟,和我同年入职某公司,后来离职独自执剑闯天涯。如今已经事业有成,每天为了心中的理想奋斗,而我还在苦逼的...

2552
来自专栏我是攻城师

亚马逊工程师论各种编程语言的优缺点

4148
来自专栏互联网杂技

行走在消失中的5种编程语言

不少编程语言的寿命很长,因为企业和机构往往不愿意花费时间和资源去用新语言重写关键任务软件,因此一些重要系统上经常会有很多运行了数十年高龄的编程语言写的代码,例如...

33313
来自专栏杨建荣的学习笔记

改和看别人的代码是一种什么感受

工作里面可能会沉淀下来很多的东西,比如文档,代码/脚本,或者图片,甚至你留下的趣事或者“案底”。 对于修改代码,我很多年前就体验过一次,是修改自己写的代码,记...

3528
来自专栏量化投资与机器学习

几种编程语言的优缺点

我的旋风式简介会讲C、C++、Lisp、Java、Perl 、Ruby (我就是喜欢) 和 Python,把 Python 加进来是因为 —— 好吧,你看了就知...

45311
来自专栏智能算法

各种编程语言的优缺点

文章转载自伯乐在线 原文地址:http://blog.jobbole.com/18587/ 【译注】:圣经记载:在远古的时候,人类都使用一种语言,全世界的人决定...

3956

扫码关注云+社区