代码不适用于黑客等级!在Repl和Jupyter上工作

时间:2019-04-12 03:16:37

标签: python python-3.x

我正在对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()

1 个答案:

答案 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"