为什么我会在#excied'上出现语法错误?

时间:2017-06-02 03:29:34

标签: python syntax compiler-errors except

我不知道为什么我在' 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 个答案:

答案 0 :(得分:0)

您需要正确缩进代码,并在except之前添加try语句。您还需要使用&#39; ==&#39;来评估真实情况。而不是&#39; =&#39;。

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

答案 1 :(得分:0)

<强>解决方案:
首先,你必须缩进你的功能(不是主要错误)。现在开始下一个错误: 你必须在有一个除外之前有一个try语句。此外,您应该使用返回ValueError而不是重复相同的函数。在这里,我修改了代码但是按照你的意愿制作了它:

try:
    if gameLength <= 40 and gameLength >= 1:
        quit
    else:
        return ValueError
except ValueError: // or except ValueError == true
    length()
  1. 查看except ValueError = true:行。一个等号表示您将ValueError指定为等于true,就像您说x = 10一样。两个相等的符号意味着你在问,“它是否正确?”,就像说1 + 5 == 6将返回true,因为1 + 5 IS 6.现在回到你的ValueError。

    使用以下代码更改您的除外行:except ValueError == true。现在你问,“ValueError是否等于true?”而不是说,“ValueError必须等于真!”你也可以说except ValueError因为if语句和其他语句总是会返回true。例如,if true:将继续有效,或while true将继续有效,但if 1+1==3:将永远不会有效,因为1 + 1 == 3会返回false。

    < / LI>
  2. 在为其赋值之前将gameLength指定为全局变量。

  3. 将gameLength放入try语句中:

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

    为什么呢?因为如果你把它放在try语句之前并且输入是例如“hi”,你就不能把“hi”变成整数。尝试使用语句尝试来执行某些操作,并且在失败之后,不仅会放弃并返回错误,而是执行程序员希望它执行的操作。在这种情况下,我们希望它重复该函数,因此我们将对except执行length()。那就是

  4. 一遍又一遍地重复这个功能。

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

    最后,我还会改变一件事:

  5. 退出是一个功能。让它退出(),或者不会像你预期的那样退出。

  6. 输出(和代码)

    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中选择任意数字:
      :“我是一个字符串。”
       IDLE :请输入1-40之间的数字    IDLE :你想玩多少个单词?您可以从1-40中选择任意数字:
      :54919
       IDLE :请输入1-40之间的数字    IDLE :你想玩多少个单词?您可以从1-40中选择任意数字:
      :37.1
      *使数字为整数:37.1 =&gt; 37.
       CON :37
      退出Python。