求任意位数的水仙花数。
实现
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import math
from functools import reduce
#---------------------
def returnReverseNumber(ls):
ls.reverse()
return eval(reduce(lambda x,y:x+y,ls))
#Tip:Need a string number
def returnNumberCharList(x):
resultList=[]
for temp in x:
resultList.append(temp)
return resultList
#Checking water god flower
def checkNumber(num,n):
ls=[]
ls=map(lambda x:math.pow(int(x),n),returnNumberCharList(str(num)))
if reduce(lambda x,y:x+y,ls)==num:
return True
else:
return False
def main():
result=[]
n=0
try:
n=eval(input("Please input the number count:"))
#range function: start,stop[,step]
for x in list(range(10**(n-1),10**n-1,1)):
if checkNumber(x,n):
result.append(x)
print(f"{n}-digit number's water god numbers:{result}")
except Exception as e:
print("The data's type of inputing is bad!")
print("Error:",e)
finally:
pass
#---------------------
main()
输出
Please input the number count:3
3-digit number's water god numbers:[153, 370, 371, 407]
Q.E.D.