鱼C论坛

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

[学习笔记] 终于看懂了水仙花数的代码

[复制链接]
发表于 2018-12-12 15:51:54 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 loster0219 于 2018-12-12 16:25 编辑
  1. def sxh():
  2.     for i in range(100, 1000): #100-999
  3.         sum = 0 # 定义一个变量,收集各个位数的立方和
  4.         temp = i #定义一个temp用作运算,i原封不动用来比较
  5.         while temp:
  6.             sum = sum + (temp % 10) ** 3 # 累加  
  7.             temp //= 10 # 地板除,剥离出这个三位数的个位,十位,百位
  8.         if sum == i:
  9.                 print(i)
复制代码


整个循环过程就是这样的,用print一步一步打出来看

  1. print((153%10)**3) #结果27,赋值给sum,往下走,

  2. print(153//10) # temp //= 10 结果15,temp=15

  3. print((15%10)**3) #结果125 sum之前=27,累加125,等于152,往下执行

  4. print(15//10)# temp //= 10 结果1 temp=1

  5. print((1%10)**3) #结果1 sum之前=152,累加之后,153
复制代码

拆解出来就很好理解了

这里有个坑我踩了很久,就是 if sum == i: 这一句,之前我写错了缩进,放在里while里面,结果也是不报错的,就是答案错了,会把累加过程中相等的数也列出来

纠结了一会,自己一个个数字试,才发现这个问题,哎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-13 09:47:23 From FishC Mobile | 显示全部楼层
可以直接在函数里的每一步插满打印,观察各个参数的赋值变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 16:33:36 | 显示全部楼层
这个代码太晦涩了 不太好理解 我也研究了半天 主要是地板除和余除还不是很熟,在加上循环赋值,有点懵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-14 23:35:00 | 显示全部楼层
我是将数字变成字符串,在用for分来,来提取的个十百位数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 04:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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