水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
知识点:- 计算一个整数的位数
count = 0
while value > 0:
count += 1
value //= 10
-
获取整数每个位上的数字值
numbers = []
while value > 0:
numbers.append(value % 10)
value //= 10
最后组合在一起用于判断是否是水仙花数:
def floor(value: int)->bool:
if value < 100 or value > 1000:
return False
org = value
numbers = []
count = 0
while value > 0:
numbers.append(value % 10)
count += 1
value //= 10
if org == sum((x ** count for x in numbers)):
return True
return False
求1000以内的水仙花数:
returns: [153, 370, 371, 407]
def find_min_floor(maximum: int)->list:
if maximum < 100:
return []
return [i for i in range(100, maximum) if floor(i)]


