为什么标准输入()会导致 EOF 错误

Yaj*_*yal 5 python eoferror

当我在我的代码中遇到以下问题时,我正在解决 HackerRank 上的一个问题。我在我的 Python (2.7.10) IDLE 上测试了它,它工作正常。但它在 HackerRank 上显示以下错误:

Traceback (most recent call last):
  File "solution.py", line 13, in <module>
    input_2=input()
EOFError: EOF when reading a line
Run Code Online (Sandbox Code Playgroud)

我输入了以下代码:

import sys 
input_2=""
n=int(input())
m=0
l=0
array=[]
main_array=[]
for i in range (0,n):
    inp=input()
    array=(inp.split(" "))
    main_array+=array   
for no in range(0,100000,1):    
    input_2=input()
    for m in range(0,len(main_array),2):
        l=0
        if input_2==main_array[m]:
            l+=1
            print (main_array[m]+"="+main_array[m+1])
    if l==0:
        print ("Not found")
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这个错误出现在 HackerRank 引擎中。谢谢

Jar*_*vis 0

我不知道您到底想通过代码实现什么目标,但是由于该行inp=input()尝试将字符串作为输入,而它被设计为采用int, float, 或string entered with quotesin ,因此您收到了错误python 2.7。使用raw_input()相反将完整的行作为字符串输入,然后将其space作为分隔符分割。

我按照您提供的链接进行操作,我发现给定的问题需要使用 来解决dictionaries。因此,不要附加nameand number,而是将其作为dictionarykey-value对存储,并且对于每个查询,只需检查该键是否存在于字典中。如果没有,则打印Not found,否则打印键及其对应的值。这是供参考的代码:

import sys
input_2=""
n = input()
m=0
l=0
array=[]
main_array={}
for i in range (0,n):
    inp=raw_input()
    array=(inp.split())
    main_array[array[0]] = array[1]
for i in range(0,n):
    take = raw_input()
    if take in main_array :
        print take+"="+main_array[take]
    else :
        print "Not found"
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !