普通教程里为了让学生掌握基本运算符号、流程控制知识,一般会让学生进行1000以内(三位数)的水仙花数寻找。
我试了试,大概是这样:
for a in range(0, 999):
a += 1
est1 = a % 100 % 10
est2 = a % 100 // 10
est3 = a // 100
if est1 ** 3 + est2 ** 3 + est3 ** 3 == a:
print(a)
else:
continue
丑陋而且拓展性差,算个六位数的话,程序能把人恶心死
于是,结合字符串知识,我想到了一个稍好一些的解决办法
NarcRange = input("input the limit:")
for a in range(11, int(NarcRange)+1):
a += 1
NumStr = str(a)
power=len(NumStr)
i,sum=0,0
for i in range(0,power):
sum=sum+int(NumStr[i])**power
if sum==a:
print(a)
速度尚可,想算多少位算多少位,代码很短看着还可以