基本上我应该做的是制作一个程序,它可以获得半个音阶线,并输出几步之遥的电源线。我得到了它的工作,但我不知道我需要为我的string_to_list函数做什么,我应该将字符串分割为传递给函数然后遍历我分成的列表创建元组。
如果有人可以提供帮助,我真的很感激。
def string_to_list(chords_str):
return chords_str.split()
答案 0 :(得分:0)
如果我正确地读你,我相信这样的代码会让你得到你想要的东西:
chord_str = 'D D#m Fsus2 Bbmaj7'
test = chord_str.split(' ')
new_list_of_tuples = []
for chord in test:
if '#' in chord or 'b' in chord:
new_list_of_tuples.append((chord[:2], chord[2:]))
else:
new_list_of_tuples.append((chord[:1], chord[1:]))
print(new_list_of_tuples)
[('D', ''), ('D#', 'm'), ('F', 'sus2'), ('Bb', 'maj7')]
您检查和弦名称中是否有尖锐或平坦以调整分割字符串的位置,然后将其余字符串添加到元组中。
答案 1 :(得分:0)
希望这能解决您的问题: 在你的转置函数中,我看到你正在创建一个我认为是根列表的比例。
所以我传递chors字符串并缩放到string_to_list函数。 然后对于每个和弦,如果它以一个根开始分裂,根上的和弦给你两个项目1.根,2。变化,因此你可以形成元组。
def string_to_list(chords_str, scale):
tuple_list = []
chord_list = chords_str.split()
for chord in chord_list:
for root in scale:
if chord.startswith('root'):
value = (root, chord.split(root)[1])
tuple_list.append(value)
break
return tuple_list