对于初学者有点难的水仙花问题

如果一个m位数,其每个位上的数字的m次幂之和为该数本身,则叫做水仙花数。 例如:153=13+53+33153=13+53+33就是一个水仙花数。 请建立一个函数能判断一个输入的数是否水仙花数。承上题,建立一个函数,当输入某参数maximum后,能自动找出所有小于等于maximum的水仙花数。

def wflower(n):
#   n=input('请输入一个大于100的参数n:')
    n=str(n)
    m=len(n)
    i=0
    s=0
    while i<m:
       s=s+int(n[i:i+1:1])**m
       i=i+1
    if int(n)<100:
        print('请确认n是否大于100')
    else:
        if s==int(n):
            return('True')
        else:
            return('False')

max=input('请输入参数max(max>=1000):')
alist=[]
for k in range(100,int(max)):
    re=wflower(k)
    if re=='True':
        alist.append(k)
    k=k+1
else:
    print('100到max之间的水仙花数有:',alist)


nunber = input("input the limit:")
for a in range(11, int(nunber)+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)

我这个看起来简单不少叭,测试也还行,任意位数哟