学习过程中遇到这个问题来交流下。
首先我们来看这个循环:
for i in range(1,6):
for k in range(1,i):
print (k,end='')#可以设置end参数为空字符串防止输出一个字符就自动换行
else:
print ("\n")
输出结果:
1
12
123
1234
再来看这个:
for i in range(1,6):
for k in range(1,i):
print (k,end='')
print ("\n")
输出结果:
1
12
123
1234
那结果是可以吗?来看下for...else的说明:
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,如果没有break,加不加else都一样。
如果不理解可以看这个比较:
没有else:
for num in range(10,15): # 迭代 10 到 15 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print('%d 等于 %d * %d' % (num,i,j))
break # if语句的一部分,执行完if就跳出当前循环及回到上一级for循环
print (num, '是一个质数')
结果为:
10 等于 2 * 5
10 是一个质数
11 是一个质数
12 等于 2 * 6
12 是一个质数
13 是一个质数
14 等于 2 * 7
14 是一个质数
有else:
for num in range(10,15): # 迭代 10 到 15 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print('%d 等于 %d * %d' % (num,i,j))
break # if语句的一部分,执行完if就跳出当前循环及回到上一级for循环
else: # 循环的 else 部分
print (num, '是一个质数')
结果为:
10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
可以这样理解:当你用 for 循环执行语句时,如果执行得到需要的结果就提前退出,如果执行完了还没得到需要的结果就以另外一种形式通知调用者,及执行else里面的语句。因此else与break搭配才能体现价值,其他时候谨慎使用。
引用了以下网页的说明或代码:
http://www.runoob.com/python/python-for-loop.html
https://baijiahao.baidu.com/s?id=1573720809777981&wfr=spider&for=pc