题目:
输出1000以内的水仙花数。水仙花数是一个3位数,每一位的立方和等于这个数本身,如153=1^3+5^3+3^3。
分析:
1、明确循环范围:
- 定义3位数为num,100<=num<1000。即num初始值为100,增量为num +=1,num <1000时循环,num>=1000时退出循环。
2、数据运算:
- 定义百位数x,十位数y,个位数z。它们的立方和为verified_num。
- 百位数为 num/100 取整;十位数为 num/100 取余,再 /10 取整;个位数为 num/10 取余。
- 相关运算符: //取整 %取余 **幂
3、判断及输出
- 当verified_num 等于 num 时,输出num。
解法一:while循环
# while循环
num = 100 # 初始化num
while num < 1000: # 循环的条件
x = num // 100 # 百位数
y = num % 100 // 10 # 十位数
z = num % 10 # 个位数
verified_num = x * x * x + y * y * y + z * z * z # 求每一位的立方和
if verified_num == num:
print(num) # 输出水仙花数
num += 1 # 设置增量
解法二:for循环
# for循环
for num in range(100, 1000):
x = num // 100
y = num % 100 // 10
z = num % 10
verify_num = x ** 3 + y ** 3 + z ** 3
if verify_num == num:
print(num)
解法三:嵌套循环
# 循环嵌套
lower = 100
upper = 999
while lower <= upper:
verified_num = sum(int(digit) ** 3 for digit in str(lower))
if verified_num == lower:
print(lower)
lower += 1