鱼C论坛

 找回密码
 立即注册
查看: 1141|回复: 3

[已解决]python零基础教程第九课的问题

[复制链接]
发表于 2017-12-10 15:31:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  2.     sum = 0

  3.     temp = i

  4.     while temp:

  5.         sum = sum + (temp%10) ** 3

  6.         temp //= 10         # 注意这里要使用地板除哦~

  7.     if sum == i:

  8.         print(i)
复制代码

代码没看懂,为什么就证明了这个数为水仙花数了呢,求大大帮我详细解释一下
最佳答案
2017-12-10 16:28:05
例:i = 153
        temp = 153
       第一次while循环:
       sum = 3**3(i的个位数的3次方)
       temp = 15
      
       第二次while循环:
       sum = 3**3+5**3(i的个、百位数的3次方之和)
       temp = 1
      
       第三次while循环:
       sum = 3**3+5**3+1**3(i的个、百、千位数的3次方之和)
       temp = 0
      
       第四次temp == 0,退出循环   
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-10 16:03:20 | 显示全部楼层
  1. for i in range(100, 1000):

  2.     sum = 0

  3.     temp = i                                #将 i 赋值给temp

  4.     while temp:                           #当temp为 0 时,表示已经找完 i 的所有位置的数,此时退出循环

  5.         sum = sum + (temp%10) ** 3   # i 的个、十、百位数3次方的和

  6.         temp //= 10         # 求出 i 的个、十、百位数并赋值给temp

  7.     if sum == i:              

  8.         print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-10 16:04:52 | 显示全部楼层

最后那个注释写错了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-10 16:28:05 | 显示全部楼层    本楼为最佳答案   
例:i = 153
        temp = 153
       第一次while循环:
       sum = 3**3(i的个位数的3次方)
       temp = 15
      
       第二次while循环:
       sum = 3**3+5**3(i的个、百位数的3次方之和)
       temp = 1
      
       第三次while循环:
       sum = 3**3+5**3+1**3(i的个、百、千位数的3次方之和)
       temp = 0
      
       第四次temp == 0,退出循环   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-4 17:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表