2015-07-26 5 views
0

У меня есть одна функция, которая генерирует список строк, с 8 строк помещается в немPython: возвращение между функциями

def MajorScale(s): 
    i = notes.index(s) 
    t = i 
    major_scale = [] 
    major_scale.append(notes[t]) 
    t = t+2 
    if t >= 12: 
     t = t-12 
    major_scale.append(notes[t]) 
    t = t+2 
    if t >= 12: 
     t = t-12 
    major_scale.append(notes[t]) 
    t = t+1 
    if t >= 12: 
     t = t-12 
    major_scale.append(notes[t]) 
    t = t+2 
    if t >= 12: 
     t = t-12 
    major_scale.append(notes[t]) 
    t = t+2 
    if t >= 12: 
     t = t-12 
    major_scale.append(notes[t]) 
    t = t+2 
    if t >= 12: 
     t = t-12 
    major_scale.append(notes[t]) 
    t = t+1 
    if t >= 12: 
     t = t-12 
    major_scale.append(notes[t]) 
    print(major_scale) 
    return major_scale 

Следующая функция вызывает MajorScale и полагается на список major_scale работать

def MajorChord(s): 
    MajorScale(s) 
    major_chord = [] 
    major_chord.append(major_scale[0]) 
    major_chord.append(major_scale[2]) 
    major_chord.append(major_scale[4]) 
    print(major_chord) 

Однако, когда я запускаю программу, я получаю сообщение об ошибке «major_scale не определен»

Я просто не уверен, что я делаю неправильно в этой точке. Если кто-нибудь увидит тупую ошибку, которую я делаю, мне бы хотелось узнать.

+1

Вы использовали капитал «M». – ajsp

+0

В этом случае? У меня есть функция MajorScale и список под названием major_scale, но они разные. –

ответ

5

Ваша функция MajorScale возвращает значение, которое вы не сохраняете в переменной в MajorChord.

def MajorChord(s): 
    MajorScale(s) 
    major_chord = [] 
    ... 

Таким образом, возвращаемое значение рассчитывается и сразу же выбрасывается. Поместите возвращаемое значение в переменную, как это для того, чтобы использовать его:

def MajorChord(s): 
    major_scale = MajorScale(s) 
    major_chord = [] 
    ... 
+0

Отлично! Не забывайте отмечать ответ как принятый: http://stackoverflow.com/help/accepted-answer –

0

вы могли бы использовать список понимание, чтобы сделать ваш код более читаемым

def MajorScale(note): 
    i = notes.index(note) 
    offsets = [0, 2, 4, 6, 7, 9, 11, 13, 14] 
    return [notes[(i+x)%12] for x in offsets] 

def MajorChord(note): 
    return MajorScale(note)[0:5:2] 
Смежные вопросы