|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Twilight6 于 2020-3-29 15:08 编辑
鱼C零基础第9课的课后作业,没办法理解答案的。。。求大佬帮忙解释下!QAQ
1. 编写一个程序,求 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)
复制代码
唉 ,刚刚开始学python,希望能一直坚持吧!
本帖最后由 jackz007 于 2020-3-14 23:14 编辑
假设 i = 578,把 while temp 循环展开如下:
- sum = 0
- i = 578
- temp = 578
- 进入 while temp 循环
- 【第1次循环】:
- sum = sum + (temp % 10) ** 3 = 0 + (578 % 10) ** 3 = 8 ** 3
- temp //= 10 = 578 // 10 = 57
- 【第2次循环】:
- sum = sum + (temp % 10) ** 3 = 8 ** 3 + (57 % 10) ** 3 = 8 ** 3 + 7 ** 3
- temp //= 10 = 57 // 10 = 5
- 【第3次循环】:
- sum = sum + (temp % 10) ** 3 = 8 ** 3 + 7 ** 3 + (5 % 10) ** 3 = 8 ** 3 + 7 ** 3 + 5 ** 3
- temp //= 10 = 5 // 10 = 0
- 至此,temp = 0 循环结束
- 【结果】:
- sum = 8 ** 3 + 7 ** 3 + 5 ** 3
- if sum == i:
- print(i)
复制代码
|
|