为什么标准 input() 会导致 EOF 错误
Why does standard input() cause an EOF error
当我在代码中遇到以下问题时,我正在解决 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
我输入了以下代码:
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")
我不知道为什么会在 HackerRank 引擎中出现此错误。
谢谢
我不知道您究竟想通过您的代码实现什么,但是由于行 inp=input()
,您收到了一个错误,该行试图将字符串作为输入,而它的设计目的是在 python 2.7
中取 int
、float
或 string entered with quotes
。使用 raw_input()
而是将完整的行作为字符串输入,然后用 space
作为分隔符将其拆分。
我按照你提供的 link 进行了操作,我发现给定的问题需要使用 dictionaries
来解决。因此,不是附加 name
和 number
,而是将其作为 key-value
对存储在 dictionary
中,对于每个查询,只需检查字典中是否存在键或不是。如果不是,则打印 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"
希望对您有所帮助!
我在 HackerRank 中编码时遇到了类似的 EOF 问题。实际上,有两个问题:
- 在 Python3 中使用
input()
并在 Python2 中使用 raw_input()
。
- 如果你知道输入的确切数量,你可以用N-number for-loop来处理每个
input()
。然而,困难在于您不知道将有多少输入。在这种情况下,您将不得不使用 sys.stdin.readlines()
将它们转换为列表,然后使用 for-each 循环。
以下代码来自"Editorial" of https://www.hackerrank.com/challenges/30-dictionaries-and-maps/
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')
当我在代码中遇到以下问题时,我正在解决 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
我输入了以下代码:
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")
我不知道为什么会在 HackerRank 引擎中出现此错误。 谢谢
我不知道您究竟想通过您的代码实现什么,但是由于行 inp=input()
,您收到了一个错误,该行试图将字符串作为输入,而它的设计目的是在 python 2.7
中取 int
、float
或 string entered with quotes
。使用 raw_input()
而是将完整的行作为字符串输入,然后用 space
作为分隔符将其拆分。
我按照你提供的 link 进行了操作,我发现给定的问题需要使用 dictionaries
来解决。因此,不是附加 name
和 number
,而是将其作为 key-value
对存储在 dictionary
中,对于每个查询,只需检查字典中是否存在键或不是。如果不是,则打印 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"
希望对您有所帮助!
我在 HackerRank 中编码时遇到了类似的 EOF 问题。实际上,有两个问题:
- 在 Python3 中使用
input()
并在 Python2 中使用raw_input()
。 - 如果你知道输入的确切数量,你可以用N-number for-loop来处理每个
input()
。然而,困难在于您不知道将有多少输入。在这种情况下,您将不得不使用sys.stdin.readlines()
将它们转换为列表,然后使用 for-each 循环。
以下代码来自"Editorial" of https://www.hackerrank.com/challenges/30-dictionaries-and-maps/
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')