鱼C论坛

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

[已解决]第9课课后题求教,关于查找100-999之间的水仙花数

[复制链接]
最佳答案
0 
发表于 2018-1-13 19:03:22 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
源程序:

  1. for i in range(100,1000):
  2.     sum = 0
  3.     i_1 = i % 10
  4.     i_2 = (((i-i_1) /10)) % 10
  5.     i_3 = (i-i_1-i_2)/100
  6.     if i == i_1**3 + i_2**3 + i_3**3:
  7.         print(i)
  8.     else:
  9.         continue
复制代码

一下是运行的结果,请问哪里错了~~

=== RESTART: C:\Users\zhang\AppData\Local\Programs\Python\Python36\bom.py ===
407
>>>

为什么只有一个结果呢。请高手指点下我的程序哪里错啦。
最佳答案
2018-1-13 19:12:17
其实不用这么麻烦,直接用取整的除法。
  1. for i in range(100,1000):
  2.     if (i//100)**3 + (i//10%10)**3 + (i%10)**3 == i:
  3.         print(i)
复制代码
最佳答案
31 
发表于 2018-1-13 19:11:19 | 显示全部楼层
我的比较好理解:
  1. for a in range(1,10):
  2.     for b in range(0,10):
  3.         for c in range(0,10):
  4.                 abc=a*100+b*10+c
  5.                 if pow(a,3)+pow(b,3)+pow(c,3)==abc:
  6.                     print(abc)
复制代码
最佳答案
76 
发表于 2018-1-13 19:11:43 | 显示全部楼层
i_3求错了,里面的i_2还要乘10
最佳答案
76 
发表于 2018-1-13 19:12:17 | 显示全部楼层    本楼为最佳答案   
其实不用这么麻烦,直接用取整的除法。
  1. for i in range(100,1000):
  2.     if (i//100)**3 + (i//10%10)**3 + (i%10)**3 == i:
  3.         print(i)
复制代码
最佳答案
76 
发表于 2018-1-13 19:28:46 | 显示全部楼层
还有问题嘛?
最佳答案
0 
 楼主| 发表于 2018-1-13 20:18:14 | 显示全部楼层

你的程序是对的,也很简单。
但是我写的问题哪里呢?(貌似不是乘10的问题,比如407这个结果,i_1=7,i_2=0,i_3=4,为什么要乘以10呢?)如何修改能改对?谢谢
最佳答案
0 
 楼主| 发表于 2018-1-13 20:21:41 | 显示全部楼层
orino 发表于 2018-1-13 19:11
i_3求错了,里面的i_2还要乘10

i_3没错吧,我打印了i_3,程序如下,请指教!

>>> for i in range(100,1000):
    sum = 0
    i_1 = i % 10
    i_2 = (((i-i_1) /10)) % 10
    i_3 = (i-i_1-i_2)/100
    if i == i_1**3 + i_2**3 + i_3**3:
        print(i_1)
        print(i_2)
        print(i_3)
        print(i)

        
7
0.0
4.0
407
最佳答案
0 
 楼主| 发表于 2018-1-13 20:22:12 | 显示全部楼层

我初学者,想知道我的程序哪里有问题,下次就不会再犯了嘛。谢谢
最佳答案
76 
发表于 2018-1-13 20:23:18 | 显示全部楼层
本帖最后由 orino 于 2018-1-13 20:27 编辑
dudata 发表于 2018-1-13 20:18
你的程序是对的,也很简单。
但是我写的问题哪里呢?(貌似不是乘10的问题,比如407这个结果,i_1=7,i_2 ...


正是因为对于407,乘不乘没影响所以才会只得出407的结果,对于其他的值,例如153,370,371就有影响了,准确的解释是,例如对于153而言,你只计算了153-5-3 再除以100,结果是小数1.45,并不是首位的1,应该是153-50-3  /100,所以结果自然不对,而对于407,407-0-7 再/100的结果当然还是4。
最佳答案
0 
 楼主| 发表于 2018-1-13 20:30:36 | 显示全部楼层
哦哦,明白了,原来问题确实杵在这,,我说为啥能出来一个407呢,哈哈,谢谢耐心解释!
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号 )

GMT+8, 2018-7-16 14:21

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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