2017-06-02 101 views
-3

我不知道爲什麼我在'excpet'上出現語法錯誤。一切似乎都對我很好!這是我的代碼:爲什麼我在'excpet'上得到語法錯誤?

def length(): 
gameLength = int(input("How many words do you want to play? You can chose anywhere from 1-40: ")) 
global gameLength 
if gameLength <= 40 and gameLength >= 1: 
    quit 
else: 
    int(input("Please choose a number between 1 & 40 ")) 
except ValueError = True: 
    int(input("Please choose a number between 1 & 40 ")) 
return gameLength 
+2

可能是因爲您輸入'except'錯誤? – Li357

+1

我很驚訝,你只會得到一個錯誤*有*。隨着您演示的代碼顯示出來,您應該首先獲得許多其他錯誤。假設這是Python(不要忘記語言標籤!)。 –

+1

另外,在發佈有關錯誤的問題時,請將實際的錯誤輸出複製粘貼到問題中。作爲文本,完整,完整且無需編輯。 –

回答

0

您需要正確縮進代碼,並在except之前添加try語句。你還需要用'=='而不是'='來評估真值。

def length(): 
    global gameLength 
    gameLength = int(input("How many words do you want to play? You can chose anywhere from 1-40: ")) 
    if gameLength <= 40 and gameLength >= 1: 
     quit 
    else: 
     try: 
      int(input("Please choose a number between 1 & 40 ")) 
     except ValueError == True: 
      int(input("Please choose a number between 1 & 40 ")) 
    return gameLength 
0

解決方案:
首先,你得縮進功能(不是主要的錯誤)。現在到下一個錯誤: 1.你必須有一個try語句,然後纔有except。此外,而不是重複相同的功能,你應該使用返回ValueError。在這裏,我修改了代碼,但它做你想要的是什麼:

try: 
    if gameLength <= 40 and gameLength >= 1: 
     quit 
    else: 
     return ValueError 
except ValueError: // or except ValueError == true 
    length() 
  • 看與except ValueError = true:行。一個等號表示您將ValueError分配爲true,就像您說的x = 10。兩個等號意味着你問「這是否等於真?」,就像說
    1 + 5 == 6將返回true,因爲1 + 5是6.現在回到你的ValueError。

    更改您的除外行:except ValueError == true。現在你問,「ValueError是否等於真?」而不是說「ValueError必須等於真實!」您還可以說except ValueError,因爲如果語句和其他語句總是返回true,則返回true。例如,if true:將工作或while true將永遠繼續,但if 1+1==3:將永遠不會工作,因爲1 + 1 == 3返回false。

  • 將gameLength指定爲全局變量,然後爲其指定一個值。

  • 認沽gameLength try語句:

    try: 
        gameLength = int(input("How many...")) 
    

    爲什麼?因爲如果你把它放在try語句之前,並且輸入是例如「hi」,那麼你就不能使「hi」成爲一個整數。嘗試語句嘗試做些事情,並在失敗後,不只是放棄並返回一個錯誤,而是做程序員希望它做的事情。在這種情況下,我們希望它重複該函數,所以我們將在except函數上使用length()。這就是

  • 反覆重複該功能。

    except ValueError: 
        print("Please type a number from 1-40.") 
        length() 
    

    最後,我會改的一件事:

  • 退出是一個函數。如你所願,讓它退出(),否則它不會退出。

  • 輸出(和代碼)

    def length(): 
        global gameLength 
    
        try: 
         gameLength = int(input("How many words do you want to play? You can choose any number from 1-40: ")) 
         if gameLength <= 40 and gameLength >= 1: 
          quit() 
         else: 
          return ValueError 
        except ValueError: 
         print("Please type a number from 1-40.") 
         length() 
        return gameLength 
    
    length() 
    

    IDLE:多少個字你要玩嗎?您可以從1-40中選擇任意數字:
    ME:「我是一個字符串。」
    IDLE:請從1-40中鍵入數字。
    IDLE:你想玩多少單詞?您可以選擇從1-40任意數目:
    ME:54919
    IDLE:請從1-40中鍵入數字。
    IDLE:多少個字你要玩嗎?選擇從1-40任意數:
    ME:37.1
    *製作數目的整數:37.1 => 37.
    CON:37
    退出的Python。