对ideone的代码实现有不同寻常的要求:
n = 42
new= []
m = 0
def convert(n,m):
print "round #:", m,"n :", n
a = ((n+1) % 3)-1
if n:
new.append(a); print 'new :', new
print 'call convert(' (n+1)//3,',',m+1,'):',convert((n+1)//3,m+1)
print 'after convert(' , n, ',' ,m, ')','\n'
else:
print 'n==',n, 'new: ::: ', new,'\n\n',
return new, n
print convert(n,m), "<<---- None returned ? "
我不知道为什么在下面的输出中打印“无”。输出“无”打印在两个位置(大小写):
情况1。打印'after convert(',n,',',m,')','\ n'
案例2。打印convert(n,m),“ << ----没有返回值吗?”
我根本不清楚为什么如果默认情况'n = 0'具有列表'new'的适当值,那么在情况2中如何返回“ None”呢?
据我说,在第二种情况下,应该打印“新”内容。
更令人困惑的是:为什么案例1每次对于非零值“ n”都返回“无”?
根据我的说法,案例1应该没有“无”字样。
如果要避免将None作为输出,我们必须确保您的函数返回一个值。
在您的情况下,该语句中有一个return语句,else
但没有该if
语句。
您可以为if
零件引入return语句,也可以更改函数return语句的缩进。
n = 42
new= []
m = 0
def convert(n,m):
print "round #:", m,"n :", n
a = ((n+1) % 3)-1
if n:
new.append(a); print 'new :', new
print 'call convert(' + str((n+1)//3,) + ',',m+1,'):',convert((n+1)//3,m+1)
print 'after convert(' , n, ',' ,m, ')','\n'
else:
print 'n==',n, 'new: ::: ', new,'\n\n',
return new, n
print convert(n,m)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句