鱼C论坛

 找回密码
 立即注册
查看: 1020|回复: 9

水仙花数里面的小问题

[复制链接]
发表于 2019-11-18 14:00:20 | 显示全部楼层 |阅读模式

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

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

x
for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
        print(i)


为什么这里While 后面是 Temp ,不应该是个判断、True或者False(0或1)么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-18 14:05:33 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-18 14:06 编辑

        是的对于整型数而言,0 对应 False,非 0 都是 True。
   
        所以,while temp 的意思就是,只要 temp 不为 0 就开始或继续循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 14:24:28 | 显示全部楼层
jackz007 发表于 2019-11-18 14:05
是的对于整型数而言,0 对应 False,非 0 都是 True。
   
        所以,while temp 的意思就 ...

但是我把temp 改成任何非零数字就不好使了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 14:29:29 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-18 14:32 编辑
zxcbcv 发表于 2019-11-18 14:24
但是我把temp 改成任何非零数字就不好使了


        比如呢,你改成了多少?任何一个正整数被 10 地板除,其数值一定会按一次循环 1 / 10,两次循环 1 / 100 的比例迅速缩小,最后一定是 0 值!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 14:46:02 | 显示全部楼层
jackz007 发表于 2019-11-18 14:29
比如呢,你改成了多少?任何一个正整数被 10 地板除,其数值一定会按一次循环 1 / 10,两次循 ...

蒙了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 15:28:32 | 显示全部楼层

while循环里面temp的值会一直改变直到为0时使while循环不成立,你随便改成一个整数自然while循环经历的次数就从随temp值变化而变化的一个动态数值变成了一个固定值,结果就不对了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 17:39:44 | 显示全部楼层
非空,非0,非None,都考认为为True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 18:04:10 | 显示全部楼层
  1. while temp:
复制代码


如果 temp 是数字,其实可以这样写,作用一样:

  1. while temp != 0:
复制代码


当 temp 不为 0 时执行循环,这里:

  1. temp //= 10         # 注意这里要使用地板除哦~
复制代码


修改了 temp 的值。当 temp 被修改到 0 时退出循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 20:06:08 | 显示全部楼层
zltzlt 发表于 2019-11-18 18:04
如果 temp 是数字,其实可以这样写,作用一样:

我知道temp是range(100,1000)里面的数,但是为什么改成While 1或者While True 或者While 其他正整数就不好使了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 20:34:24 | 显示全部楼层
zxcbcv 发表于 2019-11-18 20:06
我知道temp是range(100,1000)里面的数,但是为什么改成While 1或者While True 或者While 其他正整数就 ...

while 1、while True …… 这些都是死循环,程序会陷在这个循环里出不来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 15:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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