Python中==、!=运算符及or逻辑用法困惑求解
我最近刷编程练习题的时候遇到个小坎儿:代码跑出来的结果总不对,排查半天没找到问题,最后发现是自己对or运算符的用法有点混淆。为了搞清楚,我特意用13到19的数字范围做了测试,终于把逻辑捋顺了!
测试代码
我用这段循环来调用测试函数:
for i in range(13,20): func(i)
函数1:基于or的正向判断
先写了第一个版本的函数:
def func(n): if n == 15 or n == 16: pass else: n = 0
运行结果:0 0 15 16 0 0 0
这个逻辑很直观:如果n是15或者16,就什么都不做;其他情况把n设为0。
函数2:基于and的反向判断
为了验证逻辑,我又写了一个反向逻辑的版本:
def func(n): if n != 15 and n != 16: n = 0 else: pass
运行结果:0 0 15 16 0 0 0
这个逻辑是:如果n既不是15也不是16,就把n设为0;反之则跳过操作。
总结
之前我总在or和and的逻辑转换上犯懵,这次通过两个等价逻辑的函数测试,终于确认了它们的正确性——其实这两个函数的逻辑是完全等价的,只是一个用正向条件判断,一个用反向条件判断,最终的运行结果完全一致,也帮我彻底理清了or运算符的用法。
内容的提问来源于stack exchange,提问作者ron_g
相关产品推荐
相关产品推荐

