Golang 011. 删除字符串中的星号

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: Golang 011. 删除字符串中的星号

《铃儿响叮当》是一首脍炙人口的经典圣诞歌曲,今晚平安夜我来用python奏起来——

用最原始的winsound库函数Beep()来演奏,用法如下:

>>> import winsound
>>> help(winsound.Beep)
Help on built-in function Beep in module winsound:
Beep(frequency, duration)
    A wrapper around the Windows Beep API.
    frequency
      Frequency of the sound in hertz.
      Must be in the range 37 through 32,767.
    duration
      How long the sound should play, in milliseconds.



先找来do,re,mi等音符的频率表:

   '''休止符及do re mi等对应的频率数'''


   Tone = [[0,0,0,0,0,0],

       [523,262,1046,554,277,1109],

       [578,294,1175,622,311,1245],

       [659,330,1318,659,330,1318],

       [698,349,1493,740,370,1556],

       [784,392,1568,831,415,1661],

       [880,440,1760,932,466,1865],

       [988,494,1976,988,494,1976]]


然后找一分最简版的《铃儿响叮当》简谱:

2510285f331947cfb2cb1c1b3315e867.png


照此编制乐谱,自定义一个规则,每个音符为一个元组:(音符,音长,音阶)

简谱的每个音符用一个三元素元组表示,其中:

第一个元素 1~7 对应do re mi fa so la si 0=休止符

第二个元素 1拍=1;半拍=0.5 四分之一拍=0.25 以此类推  

第三个元素一般就为0,低音=1 高音=2 对应的半阶音=3 4 5

这样定义方便乐谱的编制,代码如下:



from winsound import Beep
'''休止符及do re mi等对应的频率数'''
Tone = [[0,0,0,0,0,0],
  [523,262,1046,554,277,1109],
  [578,294,1175,622,311,1245],
  [659,330,1318,659,330,1318],
  [698,349,1493,740,370,1556],
  [784,392,1568,831,415,1661],
  [880,440,1760,932,466,1865],
  [988,494,1976,988,494,1976]]
'''乐谱编制'''
t1 = '33333335123'
t2 = '444333322125'
t3 = t1
t4 = '4444433355421'
'''对应的音长'''
p1 = [1,1,2,1,1,2,1,1,1.5,0.5,4]
p2 = [1,1,2,1,1,2,1,1,1,1,2,2]
p3 = p1
p4 = [1,1,1.5,0.5,1,1,1,1,1,1,1,1,4]
t = list(map(int,t1+t2+t1+t4))
p = p1+p2+p1+p4
Tune = list(zip(t,p,[0]*len(t))) #配曲音符都为中音,音阶值全为0
'''演奏乐谱'''
Pai = 360  #一拍的毫秒数,可以调节
for t in Tune:
    Beep(Tone[t[0]][t[2]],int(t[1]*Pai))



按下运行键,动听的演奏开始了:

“叮叮当,叮叮当, 铃儿响叮当.

我们滑雪多快乐,我们坐在雪橇上...”

c1a652a0787e28032f1daec2758d23d1.jpg




祝大家平安夜快乐,全家平安幸福!


为方便初学者理解怎样把简谱转换成Tune列表,另附一首《两只老虎》:

from winsound import Beep
'''休止符及do re mi等对应的频率数'''
Tone = [[0,0,0,0,0,0],
  [523,262,1046,554,277,1109],
  [578,294,1175,622,311,1245],
  [659,330,1318,659,330,1318],
  [698,349,1493,740,370,1556],
  [784,392,1568,831,415,1661],
  [880,440,1760,932,466,1865],
  [988,494,1976,988,494,1976]]
'''按照简谱编制乐谱'''
t = [None]*4
t[0] = [(1,1,0),(2,1,0),(3,1,0),(1,1,0)] #两只老虎
t[1] = [(3,1,0),(4,1,0),(5,2,0)] #跑得快
t[2] = [(5,0.75,0),(6,0.25,0),(5,0.75,0),
      (4,0.25,0),(3,1,0),(1,1,0)] #一只没眼睛|尾巴
t[3]= [(1,1,0),(5,1,1),(1,2,0)] #真奇怪
'''导入乐谱'''
Tune = []
for i in range(4):
    Tune.extend(t[i]*2)
'''演奏乐谱'''
Pai = 360  #一拍的毫秒数,可以调节
for t in Tune*2:
    Beep(Tone[t[0]][t[2]],int(t[1]*Pai))



相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
目录
相关文章
|
5月前
|
Go
golang力扣leetcode 467.环绕字符串中唯一的子字符串
golang力扣leetcode 467.环绕字符串中唯一的子字符串
40 0
|
5月前
|
Go
golang力扣leetcode 438.找到字符串中所有字母异位词
golang力扣leetcode 438.找到字符串中所有字母异位词
33 0
|
1月前
|
Go
Golang语言基本数据类型默认值及字符串之间互相转换案例
这篇文章讲解了Golang语言中基本数据类型的默认值、类型转换的概述以及整型、浮点型、字符串之间的相互转换案例,包括如何将基本数据类型转换为字符串类型和字符串类型转换为基本数据类型,以及字符串与字节切片之间的转换。
15 2
|
1月前
|
Go
Golang语言基础数据类型之字符串常用的操作
这篇文章介绍了Golang语言中字符串的定义、常用操作,包括字符串长度查看、遍历、类型转换、子串统计、比较、查找位置、替换、切割、大小写转换、剔除字符、前缀后缀判断、拼接、子串包含判断以及字符串join操作,同时提供了官方文档的查看方法。
15 1
|
2月前
|
Go
[golang]字符串拼接
[golang]字符串拼接
|
2月前
|
存储 程序员 编译器
Golang 中的字符串:常见错误和最佳实践
Golang 中的字符串:常见错误和最佳实践
|
2月前
|
Go 开发者
|
4月前
|
Go
【golang】golang 字符串切片排序
【golang】golang 字符串切片排序
54 1
|
4月前
|
Go
【golang】Go 判断字符串是否包含指定字符
【golang】Go 判断字符串是否包含指定字符
54 1
|
5月前
|
存储 Go 开发者
Golang深入浅出之-Go语言字符串操作:常见函数与面试示例
【4月更文挑战第20天】Go语言字符串是不可变的字节序列,采用UTF-8编码。本文介绍了字符串基础,如拼接(`+`或`fmt.Sprintf()`)、长度与索引、切片、查找与替换(`strings`包)以及转换与修剪。常见问题包括字符串不可变性、UTF-8编码处理、切片与容量以及查找与替换的边界条件。通过理解和实践这些函数及注意事项,能提升Go语言编程能力。
118 0