Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在解决python异常时遇到错误_Python_Exception - Fatal编程技术网

我在解决python异常时遇到错误

我在解决python异常时遇到错误,python,exception,Python,Exception,问题是: 提示用户输入其姓名。然后程序会用他的名字来问候这个人,但是如果这个人的名字是“jack”,就会抛出一个异常,他会要求退出程序 我试过这个: import sys try: name = input("Enter your name : ") if name == "jack": except NameError: print("Invalid Name") sys.exit(0)

问题是:

提示用户输入其姓名。然后程序会用他的名字来问候这个人,但是如果这个人的名字是“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
这里有几件事。 首先,行名inpunter your name:将引发一个错误,因为它试图找到一个名为name的函数,但该函数不存在。改为使用name=inpunter输入您的姓名:

然而,这并不是抛出这个错误的原因。这里真正的问题是你根本不想使用try或except。 TryExcept所做的是尝试运行代码,并在出现错误时执行其他操作。你所描述的是试图自己提出错误。这是通过raise完成的,例如:

raise Name错误无效的名称 将出现以下错误: NameError:无效的名称 所以试试这个代码

name=输入您的姓名: 如果name==Jack: raise Name错误无效的名称 欢迎,姓名 值得注意的是,它没有使用sys模块。这是因为引发错误将自动退出代码

第一件事:try,except和finally应位于相同的缩进级别,就像if、elif和else一样

第三行中还缺少一个=符号,它应该是:

name = input("Enter your name : ")
在这种情况下,您应该只使用raise关键字来raise NameError。你不需要尝试,除了这里

应该是这样的:

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

由于出现异常,程序将自动退出,因此您不必为此使用sys.exit。

您需要重新阅读正在阅读的任何教程。在Python中,您需要非常精确地使用缩进-而且名称输入。。。语法没有什么意义…非常感谢,非常感谢