我正在对Hackerrank进行测试。我的代码似乎从未起作用,甚至没有一个测试用例通过。
我尝试使用Jupyter并回复它对他们非常有效
def findNumber(arr, k):
ls = []
for x in arr:
if k == x:
ls.append(x)
elif k != x:
continue
if len(ls) > 0:
print("YES")
else:
print("NO")
File "solution.py", line 42, in <module>
fptr.write(res + '\n')
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
它说stdouput: 对stdout无响应
在第20行之后,我什至没有写任何东西。这是他们自己的内置函数。那我无法删除。
f __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
arr_count = int(input().strip())
arr = []
for _ in range(arr_count):
arr_item = int(input().strip())
arr.append(arr_item)
k = int(input().strip())
res = findNumber(arr, k)
fptr.write(res + '\n')
fptr.close()
答案 0 :(得分:1)
看看他们的代码如何运行您的函数:
res = findNumber(arr, k)
fptr.write(res + '\n')
fptr.close()
期望函数findNumber
返回的字符串值加到\n
,但是默认情况下,函数返回None
,并且您未指定任何返回值。因此,它正在尝试在None + '\n'
内部进行fptr.write()
并出错。
因此,根据Ken Y-N的建议,您应该返回字符串,而不要自己打印它们。
if len(ls) > 0:
return "YES"
else:
return "NO"