python 009课后 求100~999水仙花数
for i in range (100,1000):temp = i
sum = 0
while temp:
sum = sum + (temp%10)**3
temp //= 10
if sum == i:
print (i)
小甲鱼的答案没看懂,求大神讲解{:9_221:}
sum = sum + (temp%10)**3 先将temp的每一位数取出 (temp%10) 计算其位数的3次方 算到总和sum里面,然后将temp //= 10 留下百位数和千位数,以此类推,到了只有个位数的时候temp //= 10不就是0嘛 while的条件是Temp 在编程中 0就是False 非0就是True ,跳出循环 ,这个时候sum就是各位数的3次方之和 与原本的数作比较 如果一致就是水仙花数 其实可以写成1行代码输出:
>>> print ) == i]
temp%10 为取最后一位数,
temp //= 10 是去掉最后一位数 本帖最后由 小书包 于 2017-4-3 10:26 编辑
for i in range (100,1000):#表示范围为100-999
temp = i#temp用于接受i的个位,十位,百位
sum = 0
while temp:#第一次进入循环,取出个位。第二次进入循环,取出除以10以后的个位。这样类推
sum = sum + (temp%10)**3#求余数,并开三次方
temp //= 10#除以表示除出来的为整型,方便进行第二次的取出个位。
if sum == i:
print (i)
注释:
比如105
1.第一次进入while循环,求余数取出个位5,并给它三次开方,将值赋给sum。
2.然后105除以10,得到的是整型10。
3.10再次进入循环,求余数取出个位0,并给它三次开方,加上原来的sum,将值赋给sum。
4.最后再除以10,等于1,1跟10求余数,得到1,然后继续老步骤。这样就分别把1,0,5拿出来了,算好他们的三次开方的值,sum跟i相等就打印。这个就是水仙花数 好难理解,先马住,这两天再仔细看一下QAQ for i in range(100,1000):
if i == (int(str(i))**3+int(str(i))**3+int(str(i))**3):
print(i,end=" ")
页:
[1]