我使用Python脚本为各种模数计算Pascal的三角形,然后吐出Lilypond可以读取的格式化字符串。这是一首音乐。
我可以使用以下方法完美打印三角形:
rows_and_mod = 2
rows = rows_and_mod ** 2
def lily_string(rows):
for rownum in range (rows):
newValue=1
PrintingList = [newValue]
for iteration in range (rownum):
newValue = newValue * (rownum-iteration) * 1 / ( iteration + 1 )
PrintingList.append(int(newValue % rows_and_mod))
for n,i in enumerate(PrintingList):
if i==0:
PrintingList[n]='r8'
elif i==1:
PrintingList[n]='g8'
elif i==2:
PrintingList[n]="b16 b"
elif i==3:
PrintingList[n]="\\tuplet 3/2 { d'16 d' d' }"
elif i==4:
PrintingList[n]="f'32 f' f' f'"
formatted_tri = " ".join(PrintingList)
print formatted_tri
final_tri = lily_string(rows)
打印哪些:
G8
g8 g8
g8 r8 g8
g8 g8 g8 g8
但是当我用返回替换最后的打印时,它只返回列表的第一项。例如:
formatted_tri = " ".join(PrintingList)
return formatted_tri
final_tri = lily_string(rows)
print final_tri
仅打印一个g8。
我想我一定不知道如何使用或放置Return。
答案 0 :(得分:1)
return
立即结束该功能。当它只是return
而没有参数时,这显然更加明显。一个函数调用只能执行一个return
,因为一旦它执行,它就会消失。
>>> def f():
... print 1
... return
...
... # Doesn't happen.
... print 2
...
>>> f()
1
如果您想要从程序中发送输出(例如,Lilypond可以使用它),您需要print
。如果要将数据发送到调用该函数的程序部分,则需要return
。在这里,您需要print
。如果要对Python程序中的字符串执行进一步处理,则需要return
单个字符串或字符串列表。
最后,您已经混合了标签和空格以进行缩进。如果你继续这样做,你会遇到奇怪的错误,你的程序的某些部分在错误的时间,太多次或根本没有被执行,并且经过几个小时的挫折之后,你会发现Python正在阅读你的缩进与你阅读它的方式不同。避免这些问题;不要混合标签和空格。