"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
解答如下:
list_daffodil=[] for i in range(100,1000): sum=0 for c in str(i): sum+=pow(int(c),3) if sum==i: list_daffodil.append(i) for i in list_daffodil[:-1]: #以下三行是为了用"逗号"分隔输出结果 print(i,end=',') print(list_daffodil[-1]) #print(','.join(list_daffodil)) 此句产生错误 join() 方法用于将序列中的元素(必须是str) 以指定的字符 连接生成一个新的字符串 '''list_daffodil=[str(x) for x in list_daffodil] print(','.join(list_daffodil))''' list_daffodil=map(str,list_daffodil)#另一种将list中元素转换为str的方法 print(','.join(list_daffodil))
充分认识了python语言的简洁性 [str(x) for x in list] map(str,list)均可以
for c in str(i): #将i转化为str,再遍历每一位,转化为整数,再三次方 sum+=pow(int(c),3)
这种方法取各位数的和也很明了