学习-Python循环结构之for…else…之寻找水仙花数
任务描述
本关任务:给定一个整数 n,判断 n 以内的正数是否含有水仙花数。水仙花数是指一个 3 位的整数,它的每个位上的数字的 3 次幂之和等于它本身。
相关知识
针对本关任务,我们可以直接使用循环结构和分支结构语句相配合完成,不过,在这里,将介绍 for-else 语句来完成本关任务。
for-else
for-else 语句是 for 循环的一种,它和 break 语句一起使用时才能显示出 else 的作用。下面给出了两个使用 for-else 的例子及其执行结果。
for i in range(10):
if i == 5:
print( 'found it! i = %s' % i)
else:
print('not found it')
执行结果:
found it! i = 5
not found it
# 这段代码中,在i=5时使用了break结束了循环
for i in range(10):
if i == 5:
print( 'found it! i = %s' % i)
break
else:
print('not found it')
执行结果:
found it! i = 5
从上述两段代码的运行结果可知,第一段代码并没有使用 break 语句,循环是完整的进行完了的,所以 else 语句中的代码运行了,而在第二段代码中,在 i=5 时使用了 break 结束了循环,所以 else 语句中的代码并没有执行。可以发现,如果循环在运行过程中被中断,则 else 语句不会执行。
代码:
i= int(input())
for num in range(2,i):
a = num % 10
b =(( num -a)/10)%10
c = (num - b* 10 - a) /100
#print(‘num’, num)
#print(a)
#print(b)
#print©
if num == a3 + b3 + c**3:
print(“有水仙花数”)
break
else: num+=num
else:
print(‘没有水仙花数’)