Python 断言错误,当存在';不可能

Python 断言错误,当存在';不可能,python,python-3.x,assertion,Python,Python 3.x,Assertion,当我键入不是4位数字的数字时收到断言错误。除了ValueError或AssertionError:应该是除了(ValueError,AssertionError): 当您执行或操作时,您没有捕获异常AssertionError除了ValueError或AssertionError:应该是除了(ValueError,AssertionError): 当您执行或时,您没有捕获异常断言错误让我们分析一个代码结构。我添加了括号来表示Python是如何工作的 解释器将语句分组 try: guess

当我键入不是4位数字的数字时收到断言错误。

除了ValueError或AssertionError:
应该是
除了(ValueError,AssertionError):


当您执行
操作时,您没有捕获异常
AssertionError

除了ValueError或AssertionError:
应该是
除了(ValueError,AssertionError):


当您执行
时,您没有捕获异常
断言错误

让我们分析一个代码结构。我添加了括号来表示Python是如何工作的 解释器将语句分组

try:
    guess = str(int(input("Please enter your guess: ")))
    assert len(guess) == 4
except ValueError or AssertionError:
    print("Please enter a 4 digit number as your guess not a word or a different digit number. ")
让我们检查一下要捕获的异常的定义发生了什么。引述:

表达式
x或y
首先计算
x
;如果
x
为真,则返回其值;否则,将计算
y
,并返回结果值

“If
x
为真”实际上是指
x
在布尔上下文中为真(Python2中
x.
()
的值,Python3中
x.
)。除非另有实现,否则所有对象(包括类)都是隐式真实的

try:
    do_something()
except (ValueError or AssertionError):
    handle_error()
在考虑了类的布尔上下文和有关布尔运算的引用文档之后,我们可以安全地假设
(ValueError或AssertionError)
的计算结果为
ValueError

要捕获多个异常,需要将它们放入元组中:

# No exception is raised in either case
assert ValueError
assert AssertionError
# both values after conversion are True
assert bool(ValueError) is True
assert bool(AssertionError) is True

让我们分析一个代码结构。我添加了括号来表示Python是如何工作的 解释器将语句分组

try:
    guess = str(int(input("Please enter your guess: ")))
    assert len(guess) == 4
except ValueError or AssertionError:
    print("Please enter a 4 digit number as your guess not a word or a different digit number. ")
让我们检查一下要捕获的异常的定义发生了什么。引述:

表达式
x或y
首先计算
x
;如果
x
为真,则返回其值;否则,将计算
y
,并返回结果值

“If
x
为真”实际上是指
x
在布尔上下文中为真(Python2中
x.
()
的值,Python3中
x.
)。除非另有实现,否则所有对象(包括类)都是隐式真实的

try:
    do_something()
except (ValueError or AssertionError):
    handle_error()
在考虑了类的布尔上下文和有关布尔运算的引用文档之后,我们可以安全地假设
(ValueError或AssertionError)
的计算结果为
ValueError

要捕获多个异常,需要将它们放入元组中:

# No exception is raised in either case
assert ValueError
assert AssertionError
# both values after conversion are True
assert bool(ValueError) is True
assert bool(AssertionError) is True