【问题标题】:I am getting error in solving python exceptions我在解决 python 异常时遇到错误
【发布时间】:2021-05-20 19:43:21
【问题描述】:

问题是:

提示用户输入他的名字。然后程序会用他的名字向这个人打招呼,但如果这个人的名字是“jack”,则会抛出异常并要求他退出程序。

我试过这个:

import sys
try:
  name = input("Enter your name : ")
  if name == "jack":
    except NameError:
      print("Invalid Name")
      sys.exit(0)
      finally:
        print("Welcome",name)

这就是我遇到的错误。

File "main.py", line 5
    except NameError:
         ^
SyntaxError: invalid syntax

【问题讨论】:

  • 您需要重新阅读您正在阅读的任何教程。您需要非常准确地了解 Python 中的缩进——name(input(... 语法毫无意义......

标签: python exception


【解决方案1】:

这里有几件事。
首先,name(input("Enter your name : ")) 行将引发错误,因为它试图找到一个不存在的名为name 的函数。而是使用name = input("Enter your name : ")


但是,这不是引发此错误的原因。这里真正的问题是您根本不想使用tryexcept
try except 所做的是尝试运行代码,并在引发错误时执行其他操作。您的描述是试图自己提出错误。这是通过raise 完成的,例如:

raise NameError("Invalid Name")

会报如下错误:
名称错误:名称无效
所以试试这段代码

name = input("Enter your name : ")

if name == "Jack":
    raise NameError("Invalid Name")

print("Welcome", name)

值得注意的是,它没有使用sys 模块。这是因为引发错误会自动退出代码

【讨论】:

  • 非常感谢兄弟
【解决方案2】:

第一件事:tryexceptfinally 应该在同一缩进级别上,就像 ifelifelse 一样。

另外,您在第三行缺少= 符号,应该是:

name = input("Enter your name : ")

在这种情况下,您应该只使用raise 关键字来引发NameError。这里不需要tryexcept

应该是这样的:

name = input("Enter your name : ")
if name == "jack":
    raise NameError("Invalid Name")
else:
    print("Welcome", name)

程序会因为异常而自动退出,所以你不必为此使用sys.exit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-09
    • 2014-10-28
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2013-08-08
    相关资源
    最近更新 更多