And*_*eda 3 python if-statement translate music-notation
我现在正在尝试制作一个用小提琴制作乐谱并将给定音符翻译成弦乐上的位置的程序,但我的问题是,当我问一个琴键是锋利的还是扁平的,以及有多少锐利或平面是在那个关键签名中,我发现我正在制作一堆繁琐的if/then语句,例如:
if keysig == sharp and signum == 2:
note['LE'] == 'D4'
note['SC'] == 'A4'
elif keysig == sharp and signum == 3:
note['LE'] == 'D5'
note['SC'] == 'G2'
Run Code Online (Sandbox Code Playgroud)
你会发现回去做一个稍微改变的另一个陈述变得非常烦人.我怎样才能解决这个问题?
对于那些不阅读乐谱的人:基本上我想说的是这个算法将记录用户输入的音符,如A,G或D,并将它们转换为小提琴指板上的确切位置所以你不必手动搜索笔记.本课程适用于缺乏阅读乐谱经验的小提琴初学者.
Mar*_*ers 11
你可以使用字典:
transpositions = {
(sharp, 2): {'LE': 'D4', 'SC': 'A4'},
(sharp, 3): {'LE': 'D5', 'SC': 'G2'},
# etc.
}
note.update(transpositions.get((keysig, signum), {}))
Run Code Online (Sandbox Code Playgroud)
这使用元组(keysig, signum)
作为键,映射到特定的音符转置.如果未找到此类签名,则不进行更新(使用空字典更新).