[英]Why are print and return giving me different results?
我正在使用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方面缺少一些东西。
return
立即终止该功能。 当它只是return
,没有参数时,这显然更加明显。 函数调用只能执行一次return
,因为一旦执行,它就消失了。
>>> def f():
... print 1
... return
...
... # Doesn't happen.
... print 2
...
>>> f()
1
如果要从程序中发送输出(例如,使Lilypond可以使用它),则需要print
。 如果要将数据发送到程序中调用该函数的部分,则需要return
。 在这里,您需要print
。 如果要对Python程序中的字符串执行进一步的处理,则需要return
单个字符串或字符串列表。
最后,您混合了制表符和空格以进行缩进。 如果继续这样做,您将遇到奇怪的错误,其中程序的某些部分在错误的时间,太多的时间或根本没有执行,并且经过数小时的挫败之后,您会发现Python正在读取您的缩进方式与阅读方式有所不同。 避免这些问题; 不要混用制表符和空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.