0

我正在用 Python 语言在hackerrank.com 上进行挑战,我很难理解我收到的错误消息。

这是代码:

for i in range(1):
    in1 = int(input())
    if in1 > 1000:
        print('error')
        break
    else:
        roll1 = set(input().split())
        in2 = int(input())
    if in2 >  1000:
        print('error')
        break
    else:
        roll2 = set(input().split())
    if len(roll1.union(roll2)) > 1000:
        print('error')
        break
    else:
        print(len(roll1.union(roll2)))

这是我不明白的错误:

Runtime Error
Error (stderr)
Traceback (most recent call last):
  File "Solution.py", line 6, in <module>
  File "<string>", line 1
    1 2 3 4 5 6 7 8 9
      ^
SyntaxError: invalid syntax

这是输入:

Input (stdin)
9
1 2 3 4 5 6 7 8 9
9
10 1 2 3 11 21 55 6 8

这是预期的输出:

Expected Output
13

我不指望你为我解决这个挑战。我只是不明白这个错误信息。它也在我以前的解决方案中。它是关于什么的?

谢谢 :-)。

4

3 回答 3

2

我可以重现错误。此代码在 Python 2 中产生错误,因为它input()被定义为eval(raw_input()). 在 Python 3 中,raw_input被重命名为input. 添加input = raw_input到程序的顶部可以解决错误。在 Python 3 下运行程序也可以。

您可以使用以下内容在两个版本中产生相同的错误:

>>> eval("1 2 3 4 5 6 7 8 9")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    1 2 3 4 5 6 7 8 9
      ^
SyntaxError: invalid syntax

回溯中的 存在File "<string>", line 1表明错误来自对 的调用eval

于 2020-02-05T09:26:22.890 回答
1

1 2 3 4 5 6 7 8 9 python 正在将所有这些作为字符串读取,请尝试: listX = list(map(int, input.split()))

在需要的地方使用 listX

于 2020-02-05T08:45:05.557 回答
0

这是 python 2 的错误,您的代码在 python 3 中,所以请确保您在hackerrank 中选择了 python 3

于 2020-06-22T10:49:31.210 回答