qiaosu 发表于 2019-8-21 18:39:12

【已想通,谢谢】第9课的这个题目没有看懂

本帖最后由 qiaosu 于 2019-8-21 19:23 编辑

编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。

    for i in range(100,1000):
    sum = 0
    temp = i
    while temp:
      sum = sum + (temp%10) **3
      temp //= 10
    if sum == i:
      print(i)

第5. 6 两行什么意思呀,没有看懂……

zltzlt 发表于 2019-8-21 18:42:31

https://fishc.com.cn/forum.p...E%CF%C9%BB%A8

ladiesmansy 发表于 2019-8-21 18:57:45

while temp:
      sum = sum + (temp%10) **3 #将temp的最后一位也就是个位数拿出来,然后做三次方,例如:153%10 = 3,再把得出来的三次方的值加到sum里
      temp //= 10 # 把已经三次方了的个位数裁掉,第一循环过后只剩下百位和十位

LXMARCO 发表于 2019-8-21 19:23:03

      sum = sum + (temp%10) **3      
      这一句的意思是:首先sum是定义为零(初始值),然后sum=初始sum + temp%10   这里% 是取余数的意思(比如 106 %10 会是10----6(余6) 所以106%10=6),所以temp%10就是取temp的个位数(因为temp是100-1000中的随机值)    然后**3就是三次方

      temp //= 10      
       // 是地板除法,(比如,106//10=10,直接去掉小数,是去掉不是四舍五入!你也可以理解为往小取整),因为上面我们拿出个位数来三次方了,所以这一步要去掉个位,取其他位上的数值来立方。
页: [1]
查看完整版本: 【已想通,谢谢】第9课的这个题目没有看懂