水仙花数是一个三位数,特点是它的每个位上的数字的三次方之和等于它本身,例如153=1³+5³+3³
我们用for循环可以找出所有的水仙花数:
for a in range(1,10):
#a是百位上的数字,所以不能是0,只能是1到9
for b in range(0,10):
#b是十位上的数字,范围是0到9
for c in range(0,10):
#c是个位上的数字,范围是0到9
if a**3+b**3+c**3==a*100+b*10+c:
#这个等式就是水仙花数的特点
print(a*100+b*10+c)
#打印出符合条件的数字
终端:153
370
371
407
再补充一个ID为 ajie957 的小伙伴在评论区提供的方法:
for i in range(100,1000):
# 把每个三位数都转化为字符串,分别取出字符串中的字符就得到了百位、十位和个位的数字
first_num, sec_num, third_num = str(i)
if int(first_num)**3+int(sec_num)**3+int(third_num)**3==i:
print(i)