1 break只能跳出一层循环
while True: for x in range(10): y = 2 * x + 1 print(y) if y > 9: break 这是一个死循环i从0到5后,跳出内层循环,外层还是个条件一直为真的循环,一直重复i从0到5
for n in range(100,1,-1): 计算100内的最大的质数,算法中排除偶然,遍历到数字的根号值, if n%2==0: 大的for循环内,有三个部分if,for和else. continue for i in range(3,int(n**0.5)+1,2): if n%i==0: break else: print(n) break 97
内循环用来测试特定的整数n是否为质数,如果其中的break语句得到执行则说明n不是质数,并且由于循环提前结束而不会执行后面的else子句。如果某个整数n为质数,则内循环中的break语句不会执行,内循环自然结束后执行后面else子句中的语句,输出质数n之后执行break语句跳出外循环。
for i in range(5): #寻找3*3,大循环内有三块,内层for,else,和break ,程序顺序执行这三块 print("i:", i) for j in range(4): print("j:", j) if i * j == 9: print(i,j) break else: print(u"退出第一次FOR") continue break print(u"退出第二次FOR") 结果 i: 0 j: 0 j: 1 j: 2 j: 3 退出第一次FOR i: 1 j: 0 j: 1 j: 2 j: 3 退出第一次FOR i: 2 j: 0 j: 1 j: 2 j: 3 退出第一次FOR i: 3 j: 0 j: 1 j: 2 j: 3 3 3 退出第二次FOR
1,对于带有else子句的循环结构,如果循环因为条件表达式不成立或序列遍历结束而自然结束时则执行else结构中的语句,如果循环时因为执行了break语句而导致循环提前结束则不会执行else中的语句。
2,一旦break语句被执行,将使得break语句所属层次的循环提前结束;continue语句的作用时提前结束本次循环,忽略continue之后的所有语句,提前进入下一次循环。
2 for
from math import sqrt for n in range(84,80,-1): root=sqrt(n) print(root) if root == int(root): print (n) break else: print("didn't find it") 结果打印出9 root是浮点数,除了81时
a1='apple' for i in a1: print(i,end=' ') print() b1=['red','white','green'] for i in b1: print(i,end=' ') print() b2=['red','white','green'] for i in range(3): print(i,end=' ') #没有遍历b2 print() b3=['red','white','green'] for i in range(3): print(i,b3[i],end=' ') print() b4=['red','white','green'] for i in range(len(b4)): print(i,b4[i]) 用这一种,或者enumerate方法遍历键和值 结果 a p p l e red white green 0 1 2 0 red 1 white 2 green 0 red 1 white 2 green
char='apple' list=['one',2,'three'] tem=('one',2,'three') dict={'one':'red',2:'blue',"three":'black'} for i in char: print(i) for i in list: print(i) for i in tem: print(i) for i in dict: print(i) 结果 a p p l e one 2 three one 2 three one 2 three 对字典遍历时,时对‘键’的遍历
digits=[1,2,3] for n in range(2): 这一次时用来决定遍历的次数的 result=[] count=0 for i in digits: for j in digits: for k in digits: result.append(i*100+j*10+k) count+=1 print(result,count) 如果print和外层for同样的缩进,看上去就显示了1次结果,其实还是执行了2次的 结果 打印了2次 [111, 112, 113, 121, 122, 123, 131, 132, 133, 211, 212, 213, 221, 222, 223, 231, 232, 233, 311, 312, 313, 321, 322, 323, 331, 332, 333] 27 [111, 112, 113, 121, 122, 123, 131, 132, 133, 211, 212, 213, 221, 222, 223, 231, 232, 233, 311, 312, 313, 321, 322, 323, 331, 332, 333] 27
3 选择
3.1 单分支选择结构
if 表达式:
语句块
当表达式值为True或其他与True等价的值时,表示条件满足,语句块被执行,否则该语句块不被执行,而是继续执行后面的代码,如果有的话。
3.2 双分支选择结构
if 表达式:
语句块1
else:
语句块2
语句块1和2总有一个会执行
3.3多分支选择结构
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
else:
语句块 n
从上往下,遇到真就结束。