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