题目来源:https://python123.io/index
描述
"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
输入输出示例
输出仅表示格式,不表示对错。
输入 输出
示例 1
无输入
111,222
我的解答:
list1=[]
for i in range(100,1000):
a=i%10
j=i//10
b=j%10
c=j//10
if i==a**3+b**3+c**3:
list1.append(str(i))
print(','.join(list1))
参考答案:答案的方法很简洁巧妙,利用数据类型转换很容易地将每一位提取出来,最后一步,又利用对列表的切片略去最后一个逗号,我第一次的做法就是因为最后会多输出一个“,”,所以使用了join函数。
s = ""
for i in range(100, 1000):
t = str(i)
if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
s += "{},".format(i)
print(s[:-1])