Python:在函数之间返回

0 python arrays return list

我有一个函数生成一个字符串列表,其中放置了8个字符串

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
Run Code Online (Sandbox Code Playgroud)

下一个函数调用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)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行该程序时,我收到错误消息"major_scale未定义"

我只是不确定我在这一点上做错了什么.如果有人能看到我正在制造的愚蠢错误,我很想知道.

Ste*_*lla 5

您的函数MajorScale返回一个值,您不将其保存到变量中MajorChord.

def MajorChord(s):
    MajorScale(s)
    major_chord = []
    ...
Run Code Online (Sandbox Code Playgroud)

因此,计算返回值并立即丢弃.将返回值放入这样的变量中以便使用它:

def MajorChord(s):
    major_scale = MajorScale(s)
    major_chord = []
    ...
Run Code Online (Sandbox Code Playgroud)