首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何遍历冗长的if语句

如何遍历冗长的if语句
EN

Stack Overflow用户
提问于 2016-03-20 17:25:03
回答 1查看 77关注 0票数 3

我目前正在尝试制作一个程序,该程序以小提琴为乐谱,并将给定的音符转换成字符串上的一个位置,但我的问题是,当我询问某个键是尖的还是平的,以及该键的签名中有多少尖利或平调时,我发现我正在做一堆乏味的if / to语句,例如:

代码语言:javascript
运行
复制
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,然后把它们转换成小提琴手指板上的精确位置,这样你就不用手动搜索音符了。这个课程是为那些缺乏阅读乐谱经验的初学小提琴的人而设计的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-20 17:28:13

你可以用字典:

代码语言:javascript
运行
复制
transpositions = {
    (sharp, 2): {'LE': 'D4', 'SC': 'A4'},
    (sharp, 3): {'LE': 'D5', 'SC': 'G2'},
    # etc.
}

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

这使用(keysig, signum)的一个元组作为键,映射到特定的便笺转换。如果没有找到此类签名,则不会进行任何更新(使用空字典进行更新)。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36116988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档