加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何循环繁琐的if语句

发布时间:2020-12-20 12:10:12 所属栏目:Python 来源:网络整理
导读:我现在正在尝试制作一个用小提琴制作乐谱并将给定音符??翻译成弦乐上的位置的程序,但我的问题是,当我问一个键是锋利的还是平的,以及有多少锐利或平面是在那个关键签名中,我发现我正在制作一堆繁琐的if / then语句,例如: if keysig == sharp and signum == 2
我现在正在尝试制作一个用小提琴制作乐谱并将给定音符??翻译成弦乐上的位置的程序,但我的问题是,当我问一个键是锋利的还是平的,以及有多少锐利或平面是在那个关键签名中,我发现我正在制作一堆繁琐的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,并将它们转换为小提琴指板上的确切位置,这样您就不必手动搜索音符.本课程适用于缺乏阅读乐谱经验的小提琴初学者.

解决方法

你可以使用字典:

transpositions = {
    (sharp,2): {'LE': 'D4','SC': 'A4'},(sharp,3): {'LE': 'D5','SC': 'G2'},# etc.
}

note.update(transpositions.get((keysig,signum),{}))

这使用(keysig,signum)元组作为键,映射到特定的音符转置.如果未找到此类签名,则不进行更新(使用空字典更新).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读