EOFError в питоне
Я получил EOFError в строке 87 следующего кода:
import random
def printDice(diceList):
upperLine=" _____ _____ _____ _____ _____"
line1="|"
line2="|"
line3="|"
lowerLine=" ----- ----- ----- ----- -----"
for i in range(len(diceList)):
if(diceList[i]==1):
line1+=" "
elif(diceList[i]==2):
line1+="* "
elif(diceList[i]==3):
line1+="* "
elif(diceList[i]==4):
line1+="* *"
elif(diceList[i]==5):
line1+="* *"
else:
line1+="* *"
if(i==4):
line1+="|"
else:
line1+="| |"
for i in range(len(diceList)):
if(diceList[i]==1):
line2+=" * "
elif(diceList[i]==2):
line2+=" "
elif(diceList[i]==3):
line2+=" * "
elif(diceList[i]==4):
line2+=" "
elif(diceList[i]==5):
line2+=" * "
else:
line2+="* *"
if(i==4):
line2+="|"
else:
line2+="| |"
for i in range(len(diceList)):
if(diceList[i]==1):
line3+=" "
elif(diceList[i]==2):
line3+=" *"
elif(diceList[i]==3):
line3+=" *"
elif(diceList[i]==4):
line3+="* *"
elif(diceList[i]==5):
line3+="* *"
else:
line3+="* *"
if(i==4):
line3+="|"
else:
line3+="| |"
print upperLine
print line1
print line2
print line3
print lowerLine
tellMe="N"
print
print "The purpose of the game is to figure out the rule."
print "I can tell you three things:\n1. The name of the game is petals around a rose, the name is important.\n2. I can tell you whether or not your guess is right and the score of the dice.\n3. I can tell you that the score is always even or 0"
print
print "At any time you can quit by typing an odd number"
go="Y"
wrongGuesses=0
while(go=="Y"):
diceList=[]
score=0
rightWrong="N"
for i in range(5):
diceList.append(random.randrange(1,7))
for i in range(5):
if(diceList[i]==3):
score+=2
elif(diceList[i]==5):
score+=4
printDice(diceList)
print
while(rightWrong=="N"):
guess=input("What is your guess? ")
if(guess%2==1):
break
if(guess!=score):
print "Wrong"
wrongGuesses+=1
tellMe=raw_input("Tell you (Y or N)? ")
tellMe=tellMe.upper()
if(tellMe=="Y"):
print "The score was "+str(score)+"."
rightWrong="Y"
else:
rightWrong="Y"
print "Right"
if(wrongGuesses%13==0 and wrongGuesses!=0):
print"The name is very important."
if((wrongGuesses==30) and (wrongGuesses!=0)):
print "The maximum score is 20."
print
Я использовал сайт codepad.org для запуска этой программы. Я фактически запустил эту программу в IDE, но когда я использую этот сайт, появляется эта ошибка:
Каково ваше предположение?
Traceback (most recent call last):
Line 88, in <module>
guess=input("What is your guess? ")
EOFError
3 ответа
Ваша программа читает пользовательский ввод из стандартного ввода. При запуске на codepad.org пользовательский ввод отсутствует, и попытка чтения из стандартного ввода приведет к EOFError
,
Если вместо этого вы используете сайт ideone.com, он позволяет указать пользовательский ввод. Тем не менее, вам придется предоставлять весь ввод заранее, а не в интерактивном режиме. Если ваша программа попытается прочитать после конца предоставленного ввода, вы получите EOFError
снова.
Предполагая, что вы используете Python 2.x, это должно быть:
raw_input
и не input
,
raw_input
был изменен на input
в Python 3.x
Технически это не ошибка, скорее исключение. Это исключение возникает, когда одна из встроенных функций, чаще всего
input()
возвращает End-Of-File(EOF) без чтения каких-либо данных. Иногда все, что пытается сделать наша программа, - это извлечь что-то и изменить его. Но когда он не может получить, он вызовет это исключение.