and和or的用法
Topic sourceprint(isinstance((1,2,3),list)) false print(isinstance((1,2,3),tuple)) true print(isinstance([1,2,3],list)) true print(isinstance([1,2,3],tuple)) false
print(isinstance((1,2,3),(list and tuple))) true print(isinstance((1,2,3),(list or tuple))) false
所以,一楼说的没错<<<<<<<<
能不能把你的评论删除啊,你在误导其他人好吧
看了你这个错误的评论,浪费我好多时间。
老师的课程根本没有使用or,and,你为什么要加进来?还学人尝试解析。
大家不要理他,按照老师的标准来用就好了: isinstance((1, 2, 3), (list, tuple))
楼主的理解是完全错误的。
and/or是表达式,你用list or tuple
计算结果是list,这和'a' or 'b'
计算结果是'a'
道理是一样的
isinstance((1, 2, 3), (list or tuple))
在调用函数isinstance()之前传入的参数就被计算为:
arg0 = (1, 2, 3) arg1 = list or tuple = list
所以你的代码就是 isinstance(arg0, list)
,arg0不是list所以结果是false
同理list and tuple
计算结果是tuple,跟isinstance()函数毫无关系。
bool(list) = True bool(tuple) = True list 和 tuple 都有布尔值的 所以list or tuple = list list and tuple = tuple tuple or list = tuple tuple and list = list 和isinstance()无关
- 1
小梦哒勒
or是从左到右计算表达式,返回第一个为真的 and :从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值 print(isinstance((1,2,3),(list or tuple)))#or是从左到右计算表达式,返回第一个为真的是list,(1,2,3)不是list所以结果为false print(isinstance((1,2,3),( tuple or list )))#or是从左到右计算表达式,返回第一个为真的是tuple,(1,2,3)是tuple所以结果是true print(isinstance((1,2,3),(list and tuple)))#从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值,(1,2,3)是tuple所以结果是true print(isinstance((1,2,3),(tuple and list )))#在与关系中返回的是最右边的部分,(1,2,3)不是list所以结果是false
以下内容来自white_wu博客给跟我一样疑惑的同学分享 and与or的用法1 or一真为真 a=raw_input('please input somting:') if a=='a' or a=='b': print 'it is a or b' else: print 'it is not a or b' 执行代码,输入a,b,ac,结果如下:
please input somting:a it is a or b
please input somting:b it is a or b
please input somting:ac it is not a or b
and 一假为假,全真为真 a=raw_input('please input somting:') if a!='a' and a!='b': print 'it is not a or b' else: print 'it is a or b'
执行代码,输入a,b,ac,结果如下: please input somting:a it is a or b
please input somting:b it is a or b
please input somting:ac it is not a or b 通过这个例子,我们可以看出,只有当条件同时满足a!='a' 和 a!='b'时,才会执行 print 'it is not a or b'
2.为了深入了解and or的用法,考虑到当a='a' or 'b'或者a='a' and 'b'时,会是怎么样子的呢。让我们先测试or的用法看下,测试代码如下: a=raw_input('please input somting:') if a=='a' or 'b': #注意这里b没有a= print 'it is a or b' else: print 'it is not a or b' 我们输入a,b,q,结果如下:
please input somting:a it is a or b
please input somting:b it is a or b
please input somting:q it is a or b
我们发现,无论输入什么,都满足a==‘a’ or 'b'这个条件,这是为什么呢?这时,我们看下or的运算原理:or是从左到右计算表达式,由于我们并没有将比较值‘a’ or 'b'用括号或者双引号集合起来,所以当我们输入q时,虽然输入q=='a'这个条件不成立,但是,此时判断条件变成了q=='a' or 'b',此时'b'不会空,不为空也为真,当两个条件之一有一个为真,这个判断条件就是Ture,所以无论我们输入什么,都是为Ture。 3.我们可以稍微修改代码,验证下or的运算原理:or是从左到右计算表达式,返回第一个为真的值。测试代码如下:
a=raw_input('please input somting:') if a==('a' or 'b'): print 'it is a or b' else: print 'it is not a or b' 我们输入a和b,结果如下:
please input somting:a it is a or b
please input somting:b it is not a or b 因为‘a’ or ‘b’这个被括起来的条件,‘a’为第一个真值,所以这个条件其实返回的是‘a’,所以只有当输入为a,时,才执行了 print 'it is a or b' 。
4.and :从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值。