鱼C论坛

 找回密码
 立即注册
查看: 2392|回复: 7

[已解决]Python 关于封装函数

[复制链接]
发表于 2017-7-25 19:37:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
老师之前让我们做了一个解析歌词的代码,输入秒数,自动获取对应的歌词,
代码如下:

a=float(input('请输入秒数:'))

musicLrc = """[00:03.50]传奇
[00:19.10]作词:刘兵 作曲:李健
[00:20.60]演唱:王菲
[00:26.60]
[04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
[04:49.00]
[02:47.44][00:43.69]再也没能忘掉你容颜
[02:54.83][00:51.24]梦想着偶然能有一天再相见
[03:02.32][00:58.75]从此我开始孤单思念
[03:08.15][01:04.30]
[03:09.35][01:05.50]想你时你在天边
[03:16.90][01:13.13]想你时你在眼前
[03:24.42][01:20.92]想你时你在脑海
[03:31.85][01:28.44]想你时你在心田
[03:38.67][01:35.05]
[04:09.96][03:39.87][01:36.25]宁愿相信我们前世有约
[04:16.37][03:46.38][01:42.47]今生的爱情故事 不会再改变
[04:24.82][03:54.83][01:51.18]宁愿用这一生等你发现
[04:31.38][04:01.40][01:57.43]我一直在你身旁 从未走远
[04:39.55][04:09.00][02:07.85]
"""


dict1={}
lrclinelist=musicLrc.splitlines()
for eachline in lrclinelist:
        lineList=eachline.split(']')
       
        for n in range(len(lineList)-1):
                timeStr1=lineList[n][1:]
       
                timeStr2 =timeStr1.split(':')
               
                f=float(timeStr2[0])*60+float(timeStr2[1])
               
                dict1[f]=lineList[-1]
               

list5=list(dict1.keys())
list5.sort(reverse=True)


for i in range(len(list5)):
        if a >= float(list5[i]):
                print(dict1[list5[i]])
                break
-------------------------------------




代码能正确运行,但是我想把整块代码放在一个函数里,然后直接调用函数,
但是就报错了,不知道为什么报错,代码如下,我把上面代码运行成功截图    下面代码报错截图都发一下 TIM截图20170725193539.png TIM截图20170725193557.png

-------------------------------------------------------------------------
def aa():
        a = float(input('请输入秒数:'))
       
        musicLrc = """[00:03.50]传奇
        [00:19.10]作词:刘兵 作曲:李健
        [00:20.60]演唱:王菲
        [00:26.60]
        [04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
        [04:49.00]
        [02:47.44][00:43.69]再也没能忘掉你容颜
        [02:54.83][00:51.24]梦想着偶然能有一天再相见
        [03:02.32][00:58.75]从此我开始孤单思念
        [03:08.15][01:04.30]
        [03:09.35][01:05.50]想你时你在天边
        [03:16.90][01:13.13]想你时你在眼前
        [03:24.42][01:20.92]想你时你在脑海
        [03:31.85][01:28.44]想你时你在心田
        [03:38.67][01:35.05]
        [04:09.96][03:39.87][01:36.25]宁愿相信我们前世有约
        [04:16.37][03:46.38][01:42.47]今生的爱情故事 不会再改变
        [04:24.82][03:54.83][01:51.18]宁愿用这一生等你发现
        [04:31.38][04:01.40][01:57.43]我一直在你身旁 从未走远
        [04:39.55][04:09.00][02:07.85]
        """
       
        dict1 = {}
        lrclinelist = musicLrc.splitlines()
        for eachline in lrclinelist:
                lineList = eachline.split(']')
               
                for n in range(len(lineList) - 1):
                        timeStr1 = lineList[n][1:]
                       
                        timeStr2 = timeStr1.split(':')
                       
                        f = float(timeStr2[0]) * 60 + float(timeStr2[1])
                       
                        dict1[f] = lineList[-1]
       
        list5 = list(dict1.keys())
        list5.sort(reverse=True)
       
        for i in range(len(list5)):
                if a >= float(list5[i]):
                        print(dict1[list5[i]])
                        break


aa()
最佳答案
2017-7-25 20:24:08
你确定你的代码没问题??

  1. def fmusicLrc(time, musicLrc):
  2.     dict1={}
  3.     lrclinelist=musicLrc.splitlines()
  4.     for eachline in lrclinelist:
  5.             lineList=eachline.split(']')
  6.             
  7.             for n in range(len(lineList)-1):
  8.                     timeStr1=lineList[n][1:]
  9.             
  10.                     timeStr2 =timeStr1.split(':')
  11.                     
  12.                     f=float(timeStr2[0])*60+float(timeStr2[1])
  13.                     
  14.                     dict1[f]=lineList[-1]
  15.                     
  16.     list5=list(dict1.keys())
  17.     list5.sort(reverse=True)

  18.     for i in list5:
  19.             if time >= float(i):
  20.                     return dict1.get(float(i),"没找到")
  21.                     break

  22. a=float(input('请输入秒数:'))

  23. musicLrc = """[00:03.50]传奇
  24. [00:19.10]作词:刘兵 作曲:李健
  25. [00:20.60]演唱:王菲
  26. [00:26.60]
  27. [04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
  28. [04:49.00]
  29. [02:47.44][00:43.69]再也没能忘掉你容颜
  30. [02:54.83][00:51.24]梦想着偶然能有一天再相见
  31. [03:02.32][00:58.75]从此我开始孤单思念
  32. [03:08.15][01:04.30]
  33. [03:09.35][01:05.50]想你时你在天边
  34. [03:16.90][01:13.13]想你时你在眼前
  35. [03:24.42][01:20.92]想你时你在脑海
  36. [03:31.85][01:28.44]想你时你在心田
  37. [03:38.67][01:35.05]
  38. [04:09.96][03:39.87][01:36.25]宁愿相信我们前世有约
  39. [04:16.37][03:46.38][01:42.47]今生的爱情故事 不会再改变
  40. [04:24.82][03:54.83][01:51.18]宁愿用这一生等你发现
  41. [04:31.38][04:01.40][01:57.43]我一直在你身旁 从未走远
  42. [04:39.55][04:09.00][02:07.85]
  43. """


  44. print(fmusicLrc(a, musicLrc))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-7-25 20:24:08 | 显示全部楼层    本楼为最佳答案   
你确定你的代码没问题??

  1. def fmusicLrc(time, musicLrc):
  2.     dict1={}
  3.     lrclinelist=musicLrc.splitlines()
  4.     for eachline in lrclinelist:
  5.             lineList=eachline.split(']')
  6.             
  7.             for n in range(len(lineList)-1):
  8.                     timeStr1=lineList[n][1:]
  9.             
  10.                     timeStr2 =timeStr1.split(':')
  11.                     
  12.                     f=float(timeStr2[0])*60+float(timeStr2[1])
  13.                     
  14.                     dict1[f]=lineList[-1]
  15.                     
  16.     list5=list(dict1.keys())
  17.     list5.sort(reverse=True)

  18.     for i in list5:
  19.             if time >= float(i):
  20.                     return dict1.get(float(i),"没找到")
  21.                     break

  22. a=float(input('请输入秒数:'))

  23. musicLrc = """[00:03.50]传奇
  24. [00:19.10]作词:刘兵 作曲:李健
  25. [00:20.60]演唱:王菲
  26. [00:26.60]
  27. [04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
  28. [04:49.00]
  29. [02:47.44][00:43.69]再也没能忘掉你容颜
  30. [02:54.83][00:51.24]梦想着偶然能有一天再相见
  31. [03:02.32][00:58.75]从此我开始孤单思念
  32. [03:08.15][01:04.30]
  33. [03:09.35][01:05.50]想你时你在天边
  34. [03:16.90][01:13.13]想你时你在眼前
  35. [03:24.42][01:20.92]想你时你在脑海
  36. [03:31.85][01:28.44]想你时你在心田
  37. [03:38.67][01:35.05]
  38. [04:09.96][03:39.87][01:36.25]宁愿相信我们前世有约
  39. [04:16.37][03:46.38][01:42.47]今生的爱情故事 不会再改变
  40. [04:24.82][03:54.83][01:51.18]宁愿用这一生等你发现
  41. [04:31.38][04:01.40][01:57.43]我一直在你身旁 从未走远
  42. [04:39.55][04:09.00][02:07.85]
  43. """


  44. print(fmusicLrc(a, musicLrc))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-7-25 21:00:31 | 显示全部楼层
ba21 发表于 2017-7-25 20:24
你确定你的代码没问题??

我的第一个代码有问题,丢人啦,
这是改正的

for i in range(len(list5)):
        if a >= float(list5[i]):
                print(dict1[list5[i]])
                break
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-25 21:01:36 | 显示全部楼层
本帖最后由 Castieler 于 2017-7-25 21:02 编辑

第一个代码也不正确,这部分
是正确的
for i in range(len(list5)):
        if a >= float(list5[i]):
                print(dict1[list5[i]])
                break
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-25 21:13:16 | 显示全部楼层
ba21 发表于 2017-7-25 20:24
你确定你的代码没问题??

感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-25 21:30:41 | 显示全部楼层
不管是哪个代码都在我这里都是不能运行的,你是怎么执行成功的???????????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-25 21:37:51 | 显示全部楼层
这样就可以执行了
  1. def example():
  2.         a=float(input('请输入秒数:'))

  3.         musicLrc = """[00:03.50]传奇
  4. [00:19.10]作词:刘兵 作曲:李健
  5. [00:20.60]演唱:王菲
  6. [00:26.60]
  7. [04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
  8. [04:49.00]
  9. [02:47.44][00:43.69]再也没能忘掉你容颜
  10. [02:54.83][00:51.24]梦想着偶然能有一天再相见
  11. [03:02.32][00:58.75]从此我开始孤单思念
  12. [03:08.15][01:04.30]
  13. [03:09.35][01:05.50]想你时你在天边
  14. [03:16.90][01:13.13]想你时你在眼前
  15. [03:24.42][01:20.92]想你时你在脑海
  16. [03:31.85][01:28.44]想你时你在心田
  17. [03:38.67][01:35.05]
  18. [04:09.96][03:39.87][01:36.25]宁愿相信我们前世有约
  19. [04:16.37][03:46.38][01:42.47]今生的爱情故事 不会再改变
  20. [04:24.82][03:54.83][01:51.18]宁愿用这一生等你发现
  21. [04:31.38][04:01.40][01:57.43]我一直在你身旁 从未走远
  22. [04:39.55][04:09.00][02:07.85]
  23. """


  24.         dict1={}
  25.         lrclinelist=musicLrc.splitlines()
  26.         for eachline in lrclinelist:
  27.                 lineList=eachline.split(']')
  28.                
  29.                 for n in range(len(lineList)-1):
  30.                         timeStr1=lineList[n][1:]
  31.                
  32.                         timeStr2 =timeStr1.split(':')
  33.                         
  34.                         f=float(timeStr2[0])*60+float(timeStr2[1])
  35.                         
  36.                         dict1[f]=lineList[-1]
  37.                         

  38.         list5=list(dict1.keys())
  39.         list5.sort(reverse=True)


  40.         for i in range(len(list5)):
  41.                 if a >= float(list5[i]):
  42.                         print(dict1[list5[i]])
  43.                         break

  44. if __name__ == '__main__':
  45.         example()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-26 10:20:36 | 显示全部楼层
Krant5 发表于 2017-7-25 21:37
这样就可以执行了

if __name__ == '__main__'          这是什么知识,我还没学到,你能给我指点一下吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-28 23:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表