我试图用Python编写一个函数,返回一组k大小的元组,其和为n,我相当确定我已经正确地编写了该函数,但我一直得到我在标题中提到的类型错误
例如,组合(3,4)应返回以下内容: {(1,1,2)、(1,2,1)、(2,1,1)}
def compositions(k, n):
if k == 1:
return (n,)
comp = []
for SumIterator in range(1, n+1):
for FunctionRecall in compositions(k = k-1, n = n-SumIterator):
comp.append((SumIterator,) + FunctionRecall)
return set(comp)
您知道如何修复此函数以使其正确运行吗
谢谢
如果函数应该返回一组元组,则需要修改基本情况
这不会返回一组元组。它返回一个元组。试着把它放在一套里
此外,如果不希望任何元组包含零,我认为需要将第一个for循环的边界更改为
for SumIterator in range(1, n):
SumIterator是
1
(SumIterator,)
是元组(1,)
内部
for
循环通过compositions
返回的元素运行FunctionRecall,返回的元素可以是元组,也可以是集合或整数。因此,当你达到这一点时,你有:不能“添加”元组和标量。你想在这里干什么。。。元组合成?那就是(1,)+(2,)
相关问题 更多 >
编程相关推荐