>>> def collision2(tab1,tab2):
... for i in range(len(tab1)):
... for j in range(len(tab2)):
... if (tab1[i]==tab2[j]):
... return i,j
... return -1
...
>>> x, y = collision2([1, 2, 3], [3, 4, 5]) # there is a match, no error
>>> x, y = collision2([1, 2, 3], [10, 10, 10]) # now, there is no match
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
修复它的一种方法是返回-1, -1元组,而不是只返回-1:
def collision2(tab1,tab2):
for i in range(len(tab1)):
for j in range(len(tab2)):
if (tab1[i] == tab2[j]):
return i,j
return -1, -1
您当前看到的错误是元组解包错误,如果tab1和tab2中没有公共元素,则当您将所有函数设置为:
y未被赋值,导致引发异常
因此,您可以实现如下功能:
有两点需要注意:
enumerate(iterable)
返回iterable的索引和该索引处的值。这种做法被认为是肾盂。你知道吗希望这有帮助。你知道吗
我猜想,问题在于如何返回和解释函数的结果。如果存在匹配项,则函数返回一个元组,如果不匹配,则返回
-1
。您可能解包函数的结果,如果不匹配,则会出现以下错误:修复它的一种方法是返回
-1, -1
元组,而不是只返回-1
:相关问题 更多 >
编程相关推荐