鱼C论坛

 找回密码
 立即注册
查看: 3263|回复: 15

[已解决]水仙花的计算

[复制链接]
发表于 2018-5-20 17:52:12 | 显示全部楼层 |阅读模式
1鱼币
for i in range(100,1000):                            #从100到1000之间开始迭代
    sum=0                                                 #变量sum的值为0
    temp=i                                                 #变量temp复制 i 的值
    while temp:                                           #永远为真(我这样理解对不对)
        sum=sum+(temp%10)**3                  # ???????????
        temp//=10                                         #???????????
    if sum ==i:                                            #如果sum的值和 i 的值相等
        print(i)                                               #输出 i 的值

请求解释,谢谢大神
最佳答案
2018-5-20 17:52:13
其实那种算法要求的计算次数较多,可以看下我写的,这样也比较容易明白
for i in range(1,10):
    for j in range(10):
        for k in range(10):
            if i*100 + j*10 + k == i**3 + j**3 + k**3:
                print(i*100 + j*10 + k)

最佳答案

查看完整内容

其实那种算法要求的计算次数较多,可以看下我写的,这样也比较容易明白 for i in range(1,10): for j in range(10): for k in range(10): if i*100 + j*10 + k == i**3 + j**3 + k**3: print(i*100 + j*10 + k)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 17:52:13 | 显示全部楼层    本楼为最佳答案   
其实那种算法要求的计算次数较多,可以看下我写的,这样也比较容易明白
for i in range(1,10):
    for j in range(10):
        for k in range(10):
            if i*100 + j*10 + k == i**3 + j**3 + k**3:
                print(i*100 + j*10 + k)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 17:58:29 | 显示全部楼层
while temp:                                           #为什么会永远为真?
        sum=sum+(temp%10)**3                  
        temp//=10                                       #temp //= 10 除着除着到最后就 temp == 0了。何来while temp 会永运为真?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-20 18:02:16 | 显示全部楼层
我确实搞不清楚,如果大神有时间,请详细解释下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-20 18:03:25 | 显示全部楼层
ba21 发表于 2018-5-20 17:58
while temp:                                           #为什么会永远为真?
        sum=sum+(temp%10 ...


我确实搞不清楚,如果大神有时间,请详细解释下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 18:07:18 | 显示全部楼层
红唇如刀 发表于 2018-5-20 18:03
我确实搞不清楚,如果大神有时间,请详细解释下

请问还要该如何详细?
下面给你上个图。理解不了。我也表示无语了
再附个。 0 为假    非0 都是为真(如:-1,-1,2,43)

2018-05-20_180510.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 18:11:03 From FishC Mobile | 显示全部楼层
你的while 语句会一直执行 永不停歇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 18:23:46 | 显示全部楼层
zhdwinter 发表于 2018-5-20 18:11
你的while 语句会一直执行 永不停歇

?????
你有调试过?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 18:36:39 From FishC Mobile | 显示全部楼层
你要明白 itemp%10  第一次输出的是个位上的数  然后执行了 temp//=10  这样temp 就变成了去掉原来个位数的temp(比如temp=159  执行完 temp//=10之后  temp就变成了15  ) 然后又执行temp%10 这样就是输出的原始数据的十位数  然后再执行temp //=10  这样temp就变成了原来的百位值(15//=10 之后输出的就是1)然后又执行temp%10 输出就就是原始数据的百位数值  再执行次temp//10 输出就变成0了  while 就不循环了  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 18:38:38 From FishC Mobile | 显示全部楼层
ba21 发表于 2018-5-20 18:23
?????
你有调试过?

不是这个意思  他不是说他的temp 是真理啊   哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-20 19:35:09 | 显示全部楼层
sum=sum+(temp%10)**3                  # ???????????
        temp//=10                                 #temp与10地板除法,求到的是啥结果,加上上面的一句还是不明白

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 20:23:17 | 显示全部楼层
红唇如刀 发表于 2018-5-20 19:35
sum=sum+(temp%10)**3                  # ???????????
        temp//=10                               ...

temp%10 依次求的是原始数据的 个位数,十位数和百位数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 21:52:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-20 23:02:03 | 显示全部楼层
zhdwinter 发表于 2018-5-20 17:52
其实那种算法要求的计算次数较多,可以看下我写的,这样也比较容易明白
for i in range(1,10):
    for j ...

我这样的小白,对于那种非常飞跃式一行写法,理解起来很困难啊,还是这种分开来一步一步计算的容易看明白,谢谢你,ahdwinter.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-20 23:02:36 | 显示全部楼层
新手·ing 发表于 2018-5-20 21:52
http://bbs.fishc.com/thread-93848-1-1.html

谢谢你的链接,新手.ing
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-20 23:11:28 From FishC Mobile | 显示全部楼层
红唇如刀 发表于 2018-5-20 23:02
我这样的小白,对于那种非常飞跃式一行写法,理解起来很困难啊,还是这种分开来一步一步计算的容易看明白,谢 ...

不客气   其实在编程序之前要先想好算法  尽量让其简单化  计算次数少  逻辑性要强
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 18:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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