python 006课后问题
2个问题1.第四题中提到了‘短路逻辑’ 写的很详细,但是对0 or 0 or 4 or 6 or 9的判断,我觉得答案还是0啊,按照小甲鱼老师课程里说的
0 or 0 == 0
0 or 4 == 0
0 or 6 == 0
依次类推,那最后答案应该是0
2.i = 0
while i <= 100:
if i % 2 != 0:
print(i, end=' ')
i += 1
else:
i += 1
这个代码我试着把i += 1修改为 i += 2和去掉这两种
第一种情况得到的是一样的结果
第二种情况是无线循环1
这个能给解释下是为什么吗? 我想第一题应该是这样的吧(猜测的。。):
0 or 0 ==0
0 or 4 ==4 }
取true值,因为or和and不同,不用和and一样需要二个值都为true的,只要有一个就好
0 or 6 ==6 }
然后可能是
4 or 6 ==4
取第一个是true值,不关心下一个值是什么,所以是4吧
{:10_256:}不知道对不对 第一个问题:or是取真值的,0 or 4也就是4是真,所以是4。逻辑短路,也就是后面的就不再计算了。
第二个问题:没看懂楼主修改后代码的意思,最好是贴出来 i = 0
while i <= 100:
if i % 2 != 0:
print(i, end=' ')
i += 1
else:
i += 1 i = 0
while i <= 100:
if i % 2 != 0:
print(i, end=' ')
i += 1
else:
i += 1
改成
i = 0
while i <= 100:
if i % 2 != 0:
print(i, end=' ')
i += 2或者 i += 3或者直接去掉这一行
else:
i += 1 roy135 发表于 2016-5-18 13:07
i = 0
while i
i = 0
while i <= 100:
if i % 2 != 0:
print(i, end=' ')
i += 1
else:
i += 1
改成
i = 0
while i <= 100:
if i % 2 != 0:
print(i, end=' ')
i += 2或者 i += 3或者直接去掉这一行 #+=2还是可以得出结果,+=3 就会漏数了。如果去掉就会进入死循环
else:
i += 1 看到你这两个问题,觉得题主是真新手(纯的),哈哈!
问题1,and和or逻辑运算符是很多人容易搞错的问题,要弄明白首先要明白一下3点:
(1),and逻辑运算符 ,要and两边同为真,才为真,比如 x and y ,首先判断x,如果x=0,短路,这个表达式=0;如果x!=0,再来判断y,如果y等于0,短路,表达式=0;如果y也不等于0,表达式=y。
(2) or逻辑运算符,or两边有一个为真,即为真,比如 x or y ,首先判断x,如果x!=0,短路,表达式=x;如果x=0,判断y,如果y!=0,则表达式=y;如果y也等于0,则表达式=0
(3)在and和or同时存在时,and优先级高于or;比如: 1 or 0 and 2 =1而不是等于 2
弄懂了这些,上面简直不要太简单,0 or 0=0,然后0 or 4 =4 然后后面都是or,直接短路,式子=4
问题2:
这段代码就是打印100以内的奇数,i从0 开始,i是偶数时,i的值增1,i是奇数时,打印i,i的值增1,
再来看,你把i+=1改成i+=2,改的一定是if条件下吧,改成2时,i=0时,执行else,i自增变为1,再循环
,执行if语句,打印1,i自增2变为3,再执行if语句,打印3,i自增2变为5.。。。。一直到i=100,
因为奇数并没有改变,所以结果不变。当你把它去掉是,循环执行到i=1时,执行if 打印1,然后i的值没发生改变,所以再次执行if语句,再打印1,相当于if永远为真,所以就无限打印1喽。 python大法好 发表于 2016-5-18 19:46
看到你这两个问题,觉得题主是真新手(纯的),哈哈!
问题1,and和or逻辑运算符是很多人容易搞错的问题, ...
谢谢,没错,是纯新手。24K纯的 我也是纯的新手。
页:
[1]