2017-08-14 12 views
0

我一直在一个叫做https://repl.it的网站上编码。 PEP8在最后一行返回了一个错误:E901或TokenError:EOF在多行声明上repl.it

E901, or TokenError: EOF in multi-line statement`. 

我试图重写部分,重做缩进和重命名变量。

-EDIT- 我检查了缩进和if语句,所以这里是新的代码。它仍然提出相同的问题。请注意,我并不擅长代码,可能不会明白你的意思。我也会尝试在代码中添加注释。

from random import randint 
from time import sleep 
advList = ["Crawl", "Walk", "Run", "Sprint"] 
atkList = ["[A] Punch", "[B] Kick", "[C] Magic"] 
restart = 1 
myHp = 50 
zomHp = 50 
battle = 50 

#Game Over Screen 
if myHp <= 0: 
    print("YOU DIED") 
    print("GAME OVER") 
    quit() 

#Endless Game Function 
for i in range(0, reset): 

    #Traveling Loop 
    while battle > 5: 
     print(advList) 
     trv = str(input("How would you like to advance?")) 

     if trv == advList[0]: 
      sleep(8) 
      myHp = myHp + 10 
      battle = randint(0, 40) 
     if trv == advList[1]: 
      sleep(4) 
      myHp = myHp + 5 
      battle = randint(0, 30) 
     if trv == advList[2]: 
      sleep(2) 
      myHp = myHp + 2 
      battle = randint(0, 20) 

     if trv == advList[3]: 
      sleep(1) 
      myHp = myHp + 1 
      battle = randint(0, 10) 

#Max Health Cap 
     if myHp >= 50: 
      myHp = 50 
     print("My Hp: ", myHp) 
     print('') 


#Battle Sequence 
    if battle <= 5: 
     print ("A zombie approaches!!!") 
     sleep(1) 
     while battle <= 5: 
      print (atkList) 
      atk = str(input("How do you attack?")) 
      #Randomizes Hit Chance 
      khit = randint(0, 2) 
      phit = randint(0, 1) 
      mhit = randint(0, 5) 
      zhit = randint(0, 4) 
#Kick Attack 
      if atk == "B": 
       dmg = randint(1, 25) 
       if khit != 1: 
        print ("Your Attack Missed...") 

       if khit == 1: 
        zomHp = zomHp - dmg 
        print (("The Attack Hits for %s damage") %(dmg)) 
#Punch Attack 
      if atk == "A": 
       dmg = randint(1, 10) 
       if phit == 0: 
        print ("Your Attack Missed...") 

       if phit == 1: 
        zomHp = zomHp - dmg 
        print (("The Attack Hits for %s damage") %(dmg)) 
#Magic Attack 
      if atk == "C": 
       dmg = randint(1, 50) 
       if mhit != 0: 
        print ("Your Attack Missed...") 

       if mhit == 0: 
        zomHp = zomHp - dmg 
        print (("The Attack Hits for %s damage") %(dmg) 
#Zombie's Hit 
      if zhit == 0: 
       zdmg = randint(1, 10) 
       myHp = myHp - zdmg 
       print (("The Zombie's attack Hits for %s damage")(zdmg)) 
       print ("My Hp:", myHp) 
#Zombie Miss 
      if zhit != 0: 
      print ("My Hp:", myHp) 
#Zombie Dies 
      if zomHp <= 0: 
       print ("You defeated the Zombie!!!") 
       battle = 50 
#Round End 
    print("Zombie's HP:", zomHp) 
    print('') 
+1

'else zhit!= 0:'是无效的Python代码,下面一行没有正确缩进。使那个'elif zhit!= 0:',或者简单地'else:',因为那个条件在那时不可能是错误的。 – jasonharper

回答

0

我就行了

File "<ipython-input-3-252d942b8c20>", line 82 
if zhit == 0: 
      ^
SyntaxError: invalid syntax 

所以,我注意到,“zhit”不应与比较运算这个冲突被初始化为零得到一个错误。其次,如果您可以向代码添加注释以了解游戏的目的,这将会很有帮助。至于pep8上的EOF错误,pep8的文档可能很有用,EOF901指向E901 SyntaxError或IndentationError。在Python中,正确的缩进是最重要的。我希望这有助于http://pep8.readthedocs.io/en/release-1.7.x/intro.html

将此代码复制到文本编辑器(如Sublime,Atom或Visual Studio)并切换到调试模式以逐行执行代码也是一个好主意。我试了Jupyter笔记本上的代码,并没有发现这个错误,尽管是一个不同的。 https://repl.it/languages/python3网站也有它自己的调试环境。也许,这会帮助你找出这个错误的根源。

+0

非常感谢!我使用repl.it的原因是因为我在学校在线编程。 –