2016-06-06 4 views
0

Я пишу простой код в Python и получаю эту ошибку: Traceback (самый последний вызов последний): Файл «prog.py», строка 4, в EOFError: EOF при чтении строкиEOF ошибка питон

Мой код:

inp = [""] 
i=0 
while i==0: 
    answer = raw_input("") 
    if answer!="": 
     inp.append(answer) 
    else: 
     break 

for item in inp: 
    if item=="42": 
     break 
    else: 
     print item 

print "" 
+0

Когда вы получили эту ошибку? Я могу создать его с помощью 'python2 prog.py Dilettant

+1

Как вы запускаете свой скрипт? Есть [довольно много ответов относительно этого] (http://stackoverflow.com/search?q= [python] + raw_input + eoferror) уже здесь, поэтому, возможно, сначала вы должны прочитать некоторые из них. –

+0

Мой код также работает хорошо на компиляторе Codeacdemy.com, но на Ideone.com он дает эту ошибку –

ответ

1

Вы могли бы попытаться прочитать и понять этот ответ (чтобы помочь вам в вашем путешествии к знаниям Python):

#! /usr/bin/env python 
"""Short description what this module does.""" 
from __future__ import print_function 


inp = [] 
while True: 
    try: 
     answer = raw_input("") # in python v3 use input instead 
    except EOFError as e: 
     print("Ignored:", e) 
     answer = None 
    if answer: 
     inp.append(answer) 
    else: 
     break 

for item in inp: 
    if item == "42": 
     break 
    else: 
     print(item) 

print() 

Это только первый шаг в попытке более читаемого стиля кодирования.

Следующая будет точно попробовав оригинальный Python учебник по python.org ...

Вызов из вышеприведенного сценария, хранящегося в prog.py:

$> python2 prog.py < /dev/null 

, который делает программу чтения из /dev/null в качестве входных данных не вызывает больше этого:

Traceback (most recent call last): 
    File "prog.py", line 5, in <module> 
    answer = raw_input("") 
EOFError: EOF when reading a line 

, но вместо этого:

Ignored: EOF when reading a line 
[] 

, если вы хотите, чтобы просто не распечатать Ignored ... линии, и знаете, что это нормально, чтобы молча игнорировать, можно переписать, что, кроме строки/блока в

except EOFError: 
    answer = None 
+0

Большое вам спасибо. Хорошо, в последний раз: Итак, вы говорите, что для онлайн-компиляторов как ideone.com мы должны заменить все raw_inputs тем, кто пытается и ловит, и, пожалуйста, скажите мне, почему это происходит только в онлайн-интерпретаторах, таких как ideone, но есть никаких проблем с моим исходным кодом у других переводчиков –