找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1450|回复: 4

[求助] python assert断言异常

0

主题

0

帖子

0

积分

贫民

积分
0
baiker 发表于 2021-8-17 10:05:36 | 显示全部楼层 |阅读模式

  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(且)啊













回复

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2021-8-18 16:53:47 | 显示全部楼层
assert 后面的条件表达式为假时返回异常. or运算始终返回真,所以无异常
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
Mc新国 发表于 2021-8-19 18:34:34 | 显示全部楼层
你需要把assert后面的表达式当成一个整体 使用or 是左右两边只要有一个为真 就返回True ,而and 是只要有一个只要有一个是假 就返回False,你这个地方返回参数有一个为真 所以 使用or 永远是返回的True 就不会报错
回复 支持 反对

使用道具 举报

0

主题

102

帖子

102

积分

侠客

积分
102
傻眼貓咪 发表于 2021-8-24 13:36:36 | 显示全部楼层
只要 今天天晴 又或者(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 or b < 0 其實就是 assert (a < 0 or b < 0) # 要先確定括號裡面的表達是最終是 True 還是 False,assert 才開始執行判斷

回复 支持 反对

使用道具 举报

0

主题

22

帖子

22

积分

贫民

积分
22
lazycat79 发表于 2021-8-31 15:27:07 | 显示全部楼层
这是把条件写反了,
assert a > 0 and b > 0,"两个参数中不能有负数"
理解为,a或b有一个不大于0的,就返回error
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表