我目前正在尝试制作一个程序,该程序采用 fiddle 乐谱并将给定的音符转换为弦乐上的位置,但我的问题是当我询问琴键是升调还是降调,以及有多少次升调时或降号在调号中 我发现我在做一堆乏味的 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'
您会发现,返回并稍作更改再发表另一条声明会变得非常烦人。我该如何解决这个问题?
对于那些不看乐谱的人: 基本上我想说的是,该算法将记录用户输入的音符,例如 A、G 或 D,并将它们转换为 fiddle 指板上的确切位置,这样您就不必手动搜索音符.该程序适用于缺乏乐谱阅读经验的 fiddle 初学者。
最佳答案
你可以使用字典:
transpositions = {
(sharp, 2): {'LE': 'D4', 'SC': 'A4'},
(sharp, 3): {'LE': 'D5', 'SC': 'G2'},
# etc.
}
note.update(transpositions.get((keysig, signum), {}))
这使用 (keysig, signum)
的元组作为键,映射到特定的音符转换。如果没有找到这样的签名,则不进行更新(使用空字典更新)。
关于python - 如何循环一个乏味的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36116988/