一点儿也不饿 发表于 2022-3-8 15:33:30

python assert断言异常

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

晏明兴 发表于 2022-3-8 15:33:43


assert 后面的条件表达式为假时返回异常. or运算始终返回真,所以无异常

郝择喜 发表于 2022-3-8 15:33:52

你需要把assert后面的表达式当成一个整体 使用or 是左右两边只要有一个为真 就返回True ,而and 是只要有一个只要有一个是假 就返回False,你这个地方返回参数有一个为真 所以 使用or 永远是返回的True 就不会报错

朱婆婆老 发表于 2022-3-8 15:34:45

这是把条件写反了,
assert a > 0 and b > 0,"两个参数中不能有负数"
理解为,a或b有一个不大于0的,就返回error

清幽小仙 发表于 2022-3-8 15:35:07

只要 今天天晴 又或者(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 就繼續,否則拋出異常

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

print(add(-123,456))

页: [1]
查看完整版本: python assert断言异常