水仙花问题分析
三位水仙花数
"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
输出仅表示格式,不表示对错。
输出示例
111,222
尝试答题:
for i in range(100,1000):
if pow(i//100,3) + pow(i//10%10,3) + pow(i%10,3) == i:
print(i,end=",")
else:
continue
输出为:
153,370,371,407,
参考答案:
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])
输出为:
153,370,371,407
分析:
在C语言学习中,拆解三位数用计算的算法,即利用整数除、整数取余
(a / 100) + ((a % 10) * 100) + (a) / 10 % 10 * 10;
在参考答案中提出了新的思路:转换为字符串,由于字符串有列表相似的性质,可以逐一取出值并用eval()转换
>>> i=123
>>> s=str(i)
>>> s[0]
'1'
>>> s[1]
'2'
>>> eval(s[2])
3
仔细查看答案输出,不能把最后的 ,输出 ,如果简单使用print("".end=',')无法实现,参考答案提供了一种先记录答案,再格式化输出的算法,其中记录答案用到了字符串的连接、.format格式化的方法
s=''
for i in range(10):
s+="{},".format(i)
print(s[:-1])
其中
print(s[:-1])
目的是打印除最后逗号以外的字符,即去掉最后的逗号

浙公网安备 33010602011771号