这是我的程序的简化,我很难理解错误发生的原因以及它的解决方案。
def test(n=0):
a = [];
b = [];
if n == 0:
return a,b
else:
a.append(1);
b.append(2);
for i in range(0,2):
x,y = test(i)
x和y在每次迭代时必须具有不同的值,但由于函数在某一点返回None,然后它想要覆盖它,它会因错误“TypeError”而崩溃 - 尽管有一个干净的解决方案,尽管使用某种尝试 - 抓住机制?
以下代码使程序运行,但感觉就像误用早期设计错误的try-catch机制一样。
def test(n=0):
a = [];
b = [];
if n == 0:
return a,b
else:
a.append(1);
b.append(2);
for i in range(0,2):
try:
x,y = test(i)
except TypeError:
continue;
答案 0 :(得分:0)
你的函数测试在这种情况下没有返回函数自动返回None,而在返回时你试图将返回的[0]放到x并返回[1]到y。返回的是None,它是不可迭代的。
正确代码:
def test(n=0):
a = [];
b = [];
if n == 0:
return a,b
else:
a.append(1);
b.append(2);
return a,b
for i in range(0,2):
x,y = test(i)
答案 1 :(得分:0)
目前尚不清楚你要对我做什么。
1)a和b是本地数组,因此它们永远不会包含多于1个元素。 这是为了吗?
2)然后你的func测试在else部分没有返回,所以它将返回None。 你尝试通过迭代无法完成而无法将x放入x和y中 给出错误