python中关于for循环的理解
能明白while循环中else的作用,但不是很清楚for循环中的else。想请教下,for循环中的else在什么情况下才会执行,什么时候又不会被执行。就拿这个素数的代码,来举例。这里的else的执行条件是什么。
for a in range(2,11):
for b in range(2,a):
if a%b==0 :
print(a,'=',b,'*',a//b)
break
else:
print(a,"是一个素数")
本人是萌新,各位希望各位大佬能解释的通俗易懂一些,太专业的术语可能看不明白 本帖最后由 sunrise085 于 2020-7-17 16:06 编辑
for…else…中的else是当for循环正常执行完的时候执行的,若for循环遇到break跳出循环,则不执行else
例如你的这个找素数的程序
当a=5的时候,内层循环,for b in range(2,a),b取值为2,3,4,分别进行if判断,都不会进入if语句块,即不会执行到break,for循环正常执行完,然后才会去执行else语句块的print(a,"是一个素数") ,进行输出;
当a=6的时候,内层循环,for b in range(2,a),b取值为2,3,4,5,分别进行if判断,当b取值为2的时候,进入了if语句块,遇到了break,跳出了for循环,这时则会不会执行else语句块。
for 循环配合的 else ,是只有当 for 循环全部正常迭代执行完才会执行 else 的代码
而 for 循环中若遇到 break ,就算中途终止循环,也就算我们说的不正常循环退出循环~
for a in range(2,11):
for b in range(2,a):
if a%b==0 :
print(a,'=',b,'*',a//b)
break #在这里 for 循环过程中只要不遇到 break ,for 循环结束时候就会执行 else
else:
print(a,"是一个素数")
sunrise085 发表于 2020-7-17 16:01
for…else…中的else是当for循环正常执行完的时候执行的,若for循环遇到break跳出循环,则不执行else
例 ...
就是说和while一样,只有循环自己本身遇到不满足循环的条件,才会执行下面对应的else。而不是说加了break跳出循环,就会执行else后面的语句,对么? Congratulate 发表于 2020-7-17 16:10
就是说和while一样,只有循环自己本身遇到不满足循环的条件,才会执行下面对应的else。而不是说加了break ...
对的。两种循环都是正常迭代完毕,才能执行else;非正常中止(遇到break)则不会执行else 循环就好比人的一生,正常老死的属于喜事,就会执行 else,如果是夭折的就不会执行,for 和 while 都一样。就楼主所举的实例而言,else 属于内层循环,当内层循环结束(b == a)时,就会执行 else 语句块的语句。
页:
[1]