任意位数水仙花数寻找——简便python实现

普通教程里为了让学生掌握基本运算符号、流程控制知识,一般会让学生进行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)

速度尚可,想算多少位算多少位,代码很短看着还可以

发布了6 篇原创文章 · 获赞 2 · 访问量 533

猜你喜欢

转载自blog.csdn.net/u010870244/article/details/97616441