所以我正试图用python为我的女朋友编写一个程序,以自动获取给定音阶的所有音符。
我想做一个笔记列表:
notes = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
按以下间隔跳过它们的索引:
intervals = [2, 1, 2, 2, 1, 2, 2]
提前感谢!
我试着手动做,但我真的想自动化所有的过程。
可以使用模运算类似江户Akse写的-
notes = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
intervals = [2, 1, 2, 2, 1, 2, 2]
idx = 3
for interval in intervals:
print(notes[idx])
idx += interval
idx %= len(notes)
结果
D#
F
F#
G#
A#
B
C#
为注释使用索引,从需要的地方开始,并在循环中将每个间隔添加到索引中。如果已经过了列表的末尾,则减去列表的长度以循环注释列表。
notes = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
intervals = [2, 1, 2, 2, 1, 2, 2]
idx = 3
for interval in intervals:
print(notes[idx])
idx += interval
if idx > len(notes):
idx -= len(notes)
输出D#
F
F#
G#
A#
B
C#