2017-08-14 11 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的原因是因爲我在學校在線編程。 –