笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册
查看: 5975|回复: 4

[已经解决] python assert断言异常

[复制链接]

新手上路

Rank: 1

积分
6
发表于 2022-3-8 15:33:30 | 显示全部楼层 |阅读模式
  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(且)啊

清幽小仙已获得悬赏 10 C币

最佳答案

只要 今天天晴 又或者(or) 老闆加薪,我就出去玩 如果今天下雨了(False),但是老闆加薪(True),請問我該不該出去玩呢?(False) or (True) = True 答案:出去玩 (return True) assert (表達式) 表達式:(True) or (F ...
回复

使用道具 举报

新手上路

Rank: 1

积分
5
发表于 2022-3-8 15:33:43 | 显示全部楼层

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

使用道具 举报

新手上路

Rank: 1

积分
2
发表于 2022-3-8 15:33:52 | 显示全部楼层
你需要把assert后面的表达式当成一个整体 使用or 是左右两边只要有一个为真 就返回True ,而and 是只要有一个只要有一个是假 就返回False,你这个地方返回参数有一个为真 所以 使用or 永远是返回的True 就不会报错
回复

使用道具 举报

新手上路

Rank: 1

积分
12
发表于 2022-3-8 15:34:45 | 显示全部楼层
这是把条件写反了,
assert a > 0 and b > 0,"两个参数中不能有负数"
理解为,a或b有一个不大于0的,就返回error
回复

使用道具 举报

新手上路

Rank: 1

积分
2
发表于 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 就繼續,否則拋出異常

你的代碼:
  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))
复制代码


回复

使用道具 举报

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

本版积分规则

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-9-8 09:40 , Processed in 0.064604 second(s), 24 queries .

© 2001-2020

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