PYTHON基础内容笔记(while for 循环后的break)
这里有一个题目:
1. 求1-100中的素数 我的代码如下:
# test2
l3 = [] #定义一个列表
for x in range(2,101): #循环遍历2-101,因为1不是素数所以不遍历
for y in range(2,x//2+1): #每次都取2-本身的余
if x % y == 0: #如果有数能被除尽
l3.append(0) #在列表中追加0
continue #并且跳出循环,进行下一次循环
else: #若不被整除
l3.append(1) #在列表中添加1
if all(l3): #all函数判断列表中的数是否都为一
print(x,end = ",") #若都为1,说明都不能被整除,为素数 输出
l3.clear() #然后列表清空进行下一个数的寻找
else: #若列表中有数为0,则不是素数
l3.clear() #然后列表清空进行下一个数的寻找
print()
2.而老师的代码如下:
# test2
l = []
for i in range(101):
if i < 2:
continue
else:
for j in range(2,i//2+1):
if i % j == 0:
break
else:
l.append(i)
在代码中用到了break,带着用while循环可以实现for循环大多数功能,我将其改为while,结果却不尽如人意,发现while中的break和for中的break作用后代码退出不停。于是做了以下实验:
test1:
break后显然没有执行最后的else
test2:
break后显然没有执行最后的else,这个else是在迭代完成后才执行的的,在这里,else迭代后执行和break后执行容易搞混。那么基于这个实验,我们就可以很容易的理解老师写出的代码。
也就是说:一个数一次被除,当它不能被其所有数整除(迭代完成),那么就执行else,将其添加到列表中。若只要有一个数能将其整除,则break,进行下一次循环。