水仙花题详解
for i in range(100,1000):sun = 0
temp = i
while temp:
sun = sun +(temp%10)**3
temp //= 10
if sun == i:
print(i)
能详细讲解一下水仙花这道题嘛实在是看不懂,也研究不懂 试数把 for i in range(100,1000):
sun = 0 # 和
temp = i # 用于存放i的值
while temp: # 只要temp不等于0:
sun = sun +(temp%10)**3 # 求出一位的立方和
temp //= 10 # temp去掉一位
if sun == i: # 如果符合条件,就打印
print(i) sun = sun +(temp%10)**3 # 求出一位的立方和
temp //= 10 # temp去掉一位
主要还是这两段不是很懂它这个原理,sun求出来的一位立方和是什么意思,temp的值地板除的意义是什么?
求解谢谢 wanxi 发表于 2020-3-5 17:11
sun = sun +(temp%10)**3 # 求出一位的立方和
temp //= 10 # temp去掉一位
主要还是这两段不是 ...
153除以10等于15余三,而地板除法就是不留余数,也就是15,而15正好是去掉一位的结果
求余数就是求最后一位
还有,不要在自己的帖子里发,要回复我,不然我看不到 while temp: (当temp=0时,循环结束)
sun = sun +(temp%10)**3 (temp%10是将个位数单独拿出来,然后求立方保存到sun里)
temp //= 10。 (temp=temp//10是将之前的temp值的个位数去掉,返回一个新的数进行递归,直到把每一个数都单独挑出来计算, temp=0时结束循环,这时sun=每个位数上的数的立方和了)
while temp: (当temp=0时,循环结束)
sun = sun +(temp%10)**3 (temp%10是将个位数单独拿出来,然后求立方保存到sun里)
temp //= 10。 (temp=temp//10是将之前的temp值的个位数去掉,返回一个新的数进行递归,直到把每一个数都单独挑出来计算, temp=0时结束循环,这时sun=每个位数上的数的立方和了)
"1——100间的水仙花数"
num = 100
while num <=999:
a = num //100
b = (num - a*100)//10
c = (num - a*100 - b*10)
if a ** 3 + b**3 + c**3==num:
print(num,a,b,c)
num=num+1 我是这样写的不知道行不行
qiuyouzhi 发表于 2020-3-5 17:25
153除以10等于15余三,而地板除法就是不留余数,也就是15,而15正好是去掉一位的结果
求余数就是求最 ...
好的谢谢,懂了懂了 837374412 发表于 2020-3-6 10:31
"1——100间的水仙花数"
num = 100
while num
谢谢,这样写我看懂了 wanxi 发表于 2020-3-6 11:02
好的谢谢,懂了懂了
如果有帮助,请设最佳答案{:10_254:}
页:
[1]