-2

我正在尝试了解吉他上的哪些音符,所以我希望能够输入弦的调音以及我正在演奏的音品,并让程序告诉我它是什么音符或输入音符和取回我可以玩的所有不同的地方。

到目前为止,我有一个程序可以根据琴弦和音品告诉我音符是什么,但我只是写了很长的路,它需要大量的处理能力。根据用户输入的字符串调整到的内容,它会为该字符串打开一个函数,询问正在使用什么音品,然后根据音品运行elif我单独输入的多个 s 之一。

例如:

elif fret == '3':
    print('That note is E')

我知道有一种方法可以用几乎没有那么多的代码来做到这一点,但我对清晰的编程真的很陌生,而且不能完全想出逻辑。

4

1 回答 1

4

构建一对将音符名称映射到音高并返回的字典,您可以构建一个简单的函数来执行此操作,例如:

NOTES = {"C" : 0, "C#" : 1,  "D": 2, "D#" : 3, "E": 4, "F": 5, 
   "F#" : 6, "G":  7, "G#" : 8, "A": 9, "A#" : 10, "B": 11}


NAMES = dict([(v, k) for (k, v) in NOTES.items()])


def GetNote(stringNote, fretNum):
   baseNote = NOTES[stringNote]
   fretNoteNum = (baseNote + fretNum) % 12
   return NAMES[fretNoteNum]

>>> GetNote("E", 0)
'E'
>>> GetNote("E", 1)
'F'
>>> GetNote("A", 7)
'E'
>>> GetNote("G", 6)
'C#'
于 2014-11-19T22:38:32.073 回答