2017-06-02 62 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。

    相关问题