5 python assert断言异常


  1. def add(a,b):
  2.         assert a < 0 or b < 0,"两个参数中不能有负数"
  3.         return a+b
  4. print(add(-123,456))
复制代码

本来应该返回异常,但是确返回的是333
经过测试发现,当
assert b < 0 时,异常才会出现
或者把or改成and
搞不懂这是为什么
实例中a才是小于0吧,而且or是(或),两个有一个对了,就应该可以返回异常啊,为什么是and(且)啊














请先 登录 后评论

4 个回答

可小可大
assert 后面的条件表达式为假时返回异常. or运算始终返回真,所以无异常
请先 登录 后评论
黑小黑咻
你需要把assert后面的表达式当成一个整体 使用or 是左右两边只要有一个为真 就返回True ,而and 是只要有一个只要有一个是假 就返回False,你这个地方返回参数有一个为真 所以 使用or 永远是返回的True 就不会报错
请先 登录 后评论
恰你恰
只要 今天天晴 又或者(or) 老闆加薪,我就出去玩
如果今天下雨了(False),但是老闆加薪(True),請問我該不該出去玩呢?(False) or (True) = True
答案:出去玩 (return True)

assert (表達式)
表達式:(True) or (False) = True
表達式:(False) or (False) = False
表達式:(True) or (False) = True
表達式:(True) or (True) = True

如上:只要 assert 後面表達式 True 就繼續,否則拋出異常

你的代碼:
  1. def add(a,b):
  2.         assert a < 0 or b < 0 # (True) or (Fasle) = True
  3.         return a+b

  4. print(add(-123,456))
复制代码


请先 登录 后评论
一个等待
这是把条件写反了,
assert a > 0 and b > 0,"两个参数中不能有负数"
理解为,a或b有一个不大于0的,就返回error
请先 登录 后评论
  • 4 关注
  • 0 收藏,563 浏览
  • 历经传奇 提出于 2021-09-11 21:14

相似问题