gpt4 book ai didi

Python:无法摆脱 TypeError:+ 不支持的操作数类型: 'NoneType' 和 'NoneType'

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:40 27 4
gpt4 key购买 nike

输入

[['1','2','3'],['a','b','c'],['6','7','8'],['e','f','g']]

输出应该是:

1, 2, 3a, b, c6, 7, 8e, f, g

Code:

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, 3a, b, c6, 7, 8e, f, gTypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

我该如何解决这个问题?

最佳答案

您的函数返回 None(一个空的 return 语句)。而是返回一个空字符串:

if los == []:
return ''

您还有一个从未使用过的 lose 定义,您可以使用 not los 测试空列表。最后但同样重要的是,由于 return 提前退出函数,因此 else: 语句是可选的。

接下来,print_row() 也返回 None,因为您没有从它返回任何。简单地丢弃它的返回值:

def print_table(los):
if not los:
return ''
print_row(los[0])
return print_table(los[1:])

请注意,您永远不会使用 print_table 的返回值,因此您最好不要返回任何内容;简单地测试是否有任何打印:

def print_table(los):
if los:
print_row(los[0])
print_table(los[1:])

现在您可以直接内联 print_row 函数(这只是一个单行代码):

def print_table(los):
if los:
print ', '.join(los[0])
print_table(los[1:])

这仍然是递归的; Python 在递归方面不是那么强大,但它可以很好地进行循环:

def print_table(los):
for sublist in los:
print ', '.join(sublist)

也可以简化为换行符:

def print_table(los):
print '\n'.join(', '.join(sublist) for sublist in los)

关于Python:无法摆脱 TypeError:+ 不支持的操作数类型: 'NoneType' 和 'NoneType',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14176958/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com