问题描述:输出“水仙花数”。所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身。例如:153是水仙花数,因为153 = 1^3 + 5^3 + 3^3 。
#参考代码一,运算符
for num in range(100, 1000): bai = num // 100 shi = num % 100 // 10 ge = num % 10 if ge**3 + shi**3 + bai**3 == num: print(num)
#参考代码二,内置函数
for num in range(100, 1000):
bai, rest = divmod(num, 100) shi, ge = divmod(rest, 10) if ge**3 + shi**3 + bai**3 == num: print(num)
#参考代码三,函数式编程+序列解包 for num in range(100, 1000): #这里是序列解包的用法 bai, shi, ge = map(int, str(num)) if ge**3 + shi**3 + bai**3 == num: print(num)
#参考代码四,函数式编程+内置函数 for num in range(100, 1000): r = map(lambda x:int(x)**3, str(num)) if sum(r) == num: print(num)
运行结果:
153 370 371 407