如果一个三位数等于它每一位数字的立方之和,则该数被称为水仙花数(例如,153=1^3+5^3+3^3),求所有的水仙花数。
分析:
num = 153 # print(num[0]) # TypeError: 'int' object is not subscriptable # 数字不是序列,不能直接用索引切片提取 # 字符串是序列,可以用字符串进行中转,但要注意数据类型的转换
num = 153
print(type(int(str(num)[0])))
print(int(str(num)[0]) ** 3 + int(str(num)[1]) ** 3 + int(str(num)[2]) ** 3)
方法一:for 遍历+if条件
list_num = []
for i in range(100, 1000):
# 遍历所有的三位数
if int(str(i)[0]) ** 3 + int(str(i)[1]) ** 3 + int(str(i)[2]) ** 3 == i :
# 每一位数字的立方和等于自身
print(i)
list_num.append(i)
方法二:推导式生成
list_num1 = [i for i in range(100, 1000) if int(str(i)[0]) ** 3 + int(str(i)[1]) ** 3 + int(str(i)[2]) ** 3 == i]
print('水仙花数:', list_num1)