有又一道面试题。打印100-1000的所有水仙花数。
水仙花数,是指,100~999之间,每位数的立方和等于这个数本身。
实现思路很简单,就是第一次听的时候有蒙。
# 水仙花数
def flower_func():
flower_list = []
for n in range(100, 1000):
F = int(str(n)[0]) # 三位数的第一位,也可以用进制运算,取余等方法,
M = int(str(n)[1]) # 三位数的第二位,也可以用进制运算,取余等方法,
E = int(str(n)[2]) # 三位数的第三位,也可以用进制运算,取余等方法,
n_sum = F*F*F + M*M*M + E*E*E # 后来发现新方法,F**3 就是F的三次方。
if n == n_sum:
# print(n) # 打印水仙花数
flower_list.append(n_sum)
return flower_list
if __name__ == "__main__":
print(flower_func())
# # 153 370 371 407
print(153 in flower_func())
结果是:
[153, 370, 371, 407]
True