本文,我们通过python2学习一下python中的while循环和for循环。
首先,通过这两种循环,编写python2代码,找2~100间的所有素数。
#通过while循环,找2~100间的所有素数
from math import sqrt
j=2
while j<=100:#依次判断2~100间的数,是否是素数
i=2
k=int(sqrt(j))
#依次判断2~k间的每一个数,检查j能否被其中的某个数整除
while(i<=k):
if j%i==0:#若j能够被2~k间的某个数整除,则说明j不是素数,通过break结束while循环。
break
i=i+1
#有2种情况会导致while循环结束
# 1》while循环中的条件i<=k不成立时,结束了while循环,此时,i>k,说明j是个素数
# 2》j%i==0为真,通过break结束了while循环,此时,i<=k,说明j不是素数
if (i>k):# i>k,说明j是个素数,输出该素数。
print j,
j=j+1#更新j的取值,判断下一个数是否是素数
运行结果如下:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
#通过for循环,找2~100间的所有素数
from math import sqrt
for j in range(2,101):#依次判断2~100间的数,检查其是否是素数
flag=1#判断整数j时,首先将flag置为1,表示初始时,假定j是素数
k=int(sqrt(j))
for i in range(2,k+1):#依次判断2~k间的每一个数,检查j能否被其中的某个数整除
if j%i==0:#若j能够被i整除,则将flag置为0,表示j不是素数,并且结束for循环
flag=0
break
if(flag==1):#若flag是1,说明j是素数,输出j
print j,
运行结果如下:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
循环中,经常使用break语句和continue语句,二者是有区别的:
break是打断循环,提前结束循环,继续执行循环之后的语句。
continue是结束本次循环,循环体中continue之后的语句不执行,继续执行下一次循环。
break举例如下:
s=0
i=1
while i<=5:
s+=1
if i==3:
break#打断while循环,提前结束while循环
print "i=%d,s=%d"%(i,s)
i+=1
运行结果如下:
i=1,s=1
i=2,s=2
continue举例如下:
s=0
i=1
while i<=5:
s+=1
i=i+1
if i==3:
continue#结束本次循环,循环体中continue后边的语句不执行,继续进行下一次循环
print "i=%d,s=%d"%(i,s)
运行结果如下:
i=2,s=1
i=4,s=3
i=5,s=4
i=6,s=5
python中,循环常常结合else使用:
如果循环代码从break处终止,跳出循环(不执行else代码)
如果循环代码正常结束,则执行else中的代码
举例如下:
1》循环代码正常结束,则执行else中的代码
k=5
for i in range(1,10):
if k==3:
break
else:
print i,
else: #输出for循环结束时,i 的值
print i
运行结果如下:
1 2 3 4 5 6 7 8 9 9
2》循环代码从break处终止,跳出循环(不执行else代码)
for i in range(1,10,2):
if i%5 == 0:
print "Bingo!"
break#条件成立时,结束for循环,else部分不执行
else:
print i
运行结果如下:
Bingo!