Python:函数之间的返回
我有一个生成字符串列表的函数,其中有8个字符串Python:函数之间的返回,python,arrays,list,return,Python,Arrays,List,Return,我有一个生成字符串列表的函数,其中有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:
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并依赖于list 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)
然而,当我运行程序时,我得到一个错误,说“未定义主要刻度”
我只是不确定我现在做错了什么。如果有人能看到我犯的愚蠢错误,我很想找出答案。你的函数
MajorScale
返回一个值,你没有将其保存到MajorChord
中的变量中
def MajorChord(s):
MajorScale(s)
major_chord = []
...
因此,计算返回值并立即丢弃。将返回值放入如下变量中以使用它:
def MajorChord(s):
major_scale = MajorScale(s)
major_chord = []
...
函数
MajorScale
返回一个值,您不会将该值保存到MajorChord
中的变量中
def MajorChord(s):
MajorScale(s)
major_chord = []
...
因此,计算返回值并立即丢弃。将返回值放入如下变量中以使用它:
def MajorChord(s):
major_scale = MajorScale(s)
major_chord = []
...
您可以使用列表理解来提高代码的可读性
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]
您可以使用列表理解来提高代码的可读性
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]
您使用了大写字母“M”。在这种情况下?我有一个名为MajorScale的函数和一个名为MajorScale的列表,但它们是不同的东西。您使用了大写字母“M”。在这种情况下?我有一个叫做MajorScale的函数和一个叫做MajorScale的列表,但它们是不同的东西。太棒了!不要记得将答案标记为已接受:太好了!不要记得将答案标记为已接受: