5

试图解决一个问题,但 Hackerrank 的编译器在解析时不断抛出错误 EOFError:不知道哪里错了。

#!usr/bin/python

b=[]
b=raw_input().split()
c=[]
d=[]
a=raw_input()
c=a.split()
f=b[1]
l=int(b[1])
if(len(c)==int(b[0])):          
    for i in range(l,len(c)):
        d.append(c[i])
        #print c[i]
    for i in range(int(f)):
        d.append(c[i])
        #print c[i]
for j in range(len(d)):
    print d[j],

我也尝试尝试捕获来解决它,但没有得到任何输入。

try:
    a=input()
    c=a.split()
except(EOFError):
    a=""

输入格式是开头的 2 个间隔整数,然后是数组

回溯错误是:

Traceback (most recent call last):
  File "solution.py", line 4, in <module>
    b=raw_input().split()
EOFError: EOF when reading a line
4

5 回答 5

5

有几种方法可以处理 EOF 错误。

1.抛出异常:

while True:
  try:
    value = raw_input()
    do_stuff(value) # next line was found 
  except (EOFError):
    break #end of file reached

2.检查输入内容:

while True:
  value = raw_input()
  if (value != ""):
    do_stuff(value) # next line was found 
  else:
    break 

3.使用sys.stdin.readlines()将它们转换成列表,然后使用for-each循环。更详细的解释是为什么标准输入()会导致EOF错误

import sys 

# Read input and assemble Phone Book
n = int(input())
phoneBook = {}
for i in range(n):
    contact = input().split(' ')
    phoneBook[contact[0]] = contact[1]

# Process Queries
lines = sys.stdin.readlines()  # convert lines to list
for i in lines:
    name = i.strip()
    if name in phoneBook:
        print(name + '=' + str( phoneBook[name] ))
    else:
        print('Not found')
于 2017-08-01T19:34:15.543 回答
2

我遇到了同样的问题。这是我注意到的。我还没有看到您的“主要”功能,但 Hackerrank 已经为我们读取了所有数据。我们不必阅读任何内容。例如,这是一个函数def doSomething(a, b):a 和 b,无论它是数组还是整数,都将为我们读取。我们只需要专注于我们的主要代码而不用担心阅读。最后还要确保你的功能有return()什么,否则你会得到另一个错误。Hackerrank 也负责打印最终输出。他们的代码示例和常见问题解答有点误导。根据我的测试,这是我的观察结果。您的测试可能会有所不同。

于 2017-10-28T16:41:15.357 回答
1

这是因为您的函数需要输入,但未提供。提供自定义输入并尝试编译它。它应该工作。

于 2020-03-01T17:27:27.240 回答
0

我不知道,但提供自定义输入并编译它并让我进入!并通过了所有案例,甚至没有改变任何东西。

于 2017-03-28T19:48:40.223 回答
0

在 HackerRank 的主要可见代码下方隐藏着一些代码。

您需要扩展该代码(观察出现错误的行号并通过扩展检查该行)代码并且这些代码是有效的,您需要将顶部可见代码与隐藏代码匹配。

对于我的情况,如下所示:

regex_integer_in_range = r"___________" # Do not delete 'r'.
regex_alternating_repetitive_digit_pair = r"__________" # Do not delete 'r'.

我刚刚填写了上面的空白,如下所示,它使用给定的隐藏代码工作正常:

regex_integer_in_range = r"^[0-9][\d]{5}$"  # Do not delete 'r'.
regex_alternating_repetitive_digit_pair = r"(\d)(?=\d\1)"   # Do not delete 'r'.
于 2020-08-27T19:17:07.973 回答