Python测试用例在Google Foobar挑战中失败



我学习了用于数据科学的python,最近Google邀请我接受foobar挑战。第一个问题非常简单,我能够在本地机器上获得所需的输出,但是在foobar中甚至没有一个测试用例通过。请找到下面的问题和代码。

给定两个几乎相同的工人ID列表x和y,其中一个列表包含一个额外的ID,编写一个函数解(x, y)来比较列表并返回额外的ID。

例如,给定列表x =[13, 5, 6, 2, 5]和y =[5, 2, 5, 13],函数解(x, y)将返回6,因为列表x包含整数6而列表y不包含整数6。给定列表x =[14, 27, 1, 4, 2, 50, 3, 1]和y =[2, 4, -4, 3, 1, 1, 14, 27, 50],函数解(x, y)将返回-4,因为列表y包含整数-4而列表x不包含整数-4。

下面是我写的第一个代码,它在我的本地机器上运行,但在foobar上的所有测试用例都失败了。

def solution(x,y):
set1=set(x)
set2=set(y)
answer=list(set1^set2)
for i in answer:
print(i)

经过研究,我可以理解foobar调用这个函数的方式是:solution.solution(x,y)所以我尝试在类中定义一个类和方法,这再次在我的本地机器上工作得很好,但像往常一样,在foobar中失败了所有测试用例。请找到我尝试过的代码的不同变体。下面所有的代码在我本地机器上的foobar的可见测试用例中工作得很好,但是在foobar上同样失败。

请帮帮我。我只剩下两天的时间来解决这个问题。

class solution:

def __init__(self,x,y):
self.x=x
self.y=y

def solution(x,y):
set1=set(x)
set2=set(y)
answer=list(set1^set2)
for i in answer:
print(i)
class solution:

def solution(x,y):
set1=set(x)
set2=set(y)
answer=list(set1^set2)
for i in answer:
print(i)
class solution:
@staticmethod
def solution(x,y):
set1=set(x)
set2=set(y)
answer=list(set1^set2)
for i in answer:
print(i)

函数解(x, y)将返回6

对于这类问题,非常仔细地阅读说明通常是一个很好的起点。:)我在你的代码中没有看到return

语句-打印和返回之间有很大的区别!…

return i将解决你的许多问题

下面的代码可以正常工作

def solution(x, y):
set1 = set(x)
set2 = set(y)
unique = list(set1 ^ set2)
return unique[0]