try:/except: returns 尝试 运行 模块时 Python 中的语法错误

try:/except: returns a syntax error in Python when trying to run module

下面是我的代码,错误在第 4 行 "except" 给出语法错误...(这是一个调试和错误捕捉任务。我看不出它有什么问题)

while True:
        try:
                userInputOne = input(int("How much time in hours a week, do you spend practicing? ")
        except TypeError:
                print("Oops! Practice time must be rounded to the nearest integer. It also needs to be a numerical value! ")
                break
    else:
        userInputTwo = str(input"How good to do want to be? Enter 'very good', 'good', mediocre, 'not good' ")
        if userInputTwo not in ('very good', 'good', 'mediocre', 'not good'):
            print("Please use one of the options. ")
        else:
            print("Let's calculate...")
            break

您的代码:

while True:
        try:
                userInputOne = input(int("How much time in hours a week, do you spend practicing? ")
        except TypeError:
                print("Oops! Practice time must be rounded to the nearest integer. It also needs to be a numerical value! ")
                break
    else:
        userInputTwo = str(input"How good to do want to be? Enter 'very good', 'good', mediocre, 'not good' ")
        if userInputTwo not in ('very good', 'good', 'mediocre', 'not good'):
            print("Please use one of the options. ")
        else:
            print("Let's calculate...")
            break

首先,应该如下所示:

while True:
    try:
        userInputOne = input(int("How much time in hours a week, do you spend practicing? "))
    except TypeError:
        ...
        ...

我喜欢捕捉并解决这个问题的一些方法:

  • 运行 pylint 在你的文件上。它会告诉您哪里存在错误,并对可以改进的代码发出警告。
  • 使用 vim 和命令 == 将尝试进行一些自动缩进。

但最重要的是要理解whitespace is important in Python。整个文件中存在空格语法错误。您需要在代码中使用四个空格而不是八个。此外,如上面的评论所述,您有一些不平衡的括号会破坏您的代码。此外,您有一个没有 ifelse 语句。周围有很多问题,所以我建议一次重新编写几行代码,并确保它在继续之前有效。此外,您不能将字符串转换为整数,否则至少会得到意想不到的结果。

我附上了工作代码。 语法错误是由缺少括号和错误缩进引起的。看看你的 else: 声明。它与 try: 语句不在同一高度。 TypeError 意味着,您不必将输入转换为字符串,因为它们已经是。否则我建议你创建一些变量并在你想用它们计算时通过 int() 转换它们。

while True:
    try:
        userInputOne = input("How much time in hours a week, do you spend practicing? ")
    except TypeError:
        print("Oops! Practice time must be rounded to the nearest integer. It also needs to be a numerical value! ")
        break
    else:
        userInputTwo = input("How good to do want to be? Enter 'very good', 'good', mediocre, 'not good' ")
        if userInputTwo not in ('very good', 'good', 'mediocre', 'not good'):
            print("Please use one of the options. ")
        else:
            print("Let's calculate...")
            break

编辑: 我建议使用 PyCharm(如果你不这样做)及其自动缩进功能和漂亮的 "indent guidelines"。所以你可以更容易地看到很多错误。