输入
[['1','2','3'],['a','b','c'],['6','7','8'],['e','f','g']]
输出应为:
^{pr2}$代码:
def print_row(los):
print ', '.join(los)
def print_table(los):
lose = []
if los == []:
return
else:
return print_row(los[0]) + print_table(los[1:])
目前:
print_table([['1','2','3'],['a','b','c'],['6','7','8'],['e','f','g']])
给出:
1, 2, 3 a, b, c 6, 7, 8 e, f, g TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'
我怎么解决这个问题?在
另一个答案解释了为什么你所拥有的不起作用,但这里有一个更简单的方法:
^{pr2}$相关文件
函数返回
None
(空的return
语句)。返回空字符串:您还有一个从未使用过的
lose
定义,您可以使用not los
测试空列表。最后但并非最不重要的是,由于return
提前退出函数,else:
语句是可选的。在接下来,
^{pr2}$print_row()
也将返回None
,因为您不会从中返回任何内容。只需丢弃它的返回值:请注意,您永远不会使用
print_table
的返回值,因此您最好不要返回任何内容;只需测试是否有任何要打印:现在您只需内联
print_row
函数(它只是一行代码):这仍然是递归的;Python在递归方面不是很强,但它可以很好地执行循环:
也可以简化为换行符上的连接:
相关问题 更多 >
编程相关推荐