QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
5
查看: 150|回复: 9

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

[复制链接]
最佳答案
0 

尚未签到

dudata 发表于 2018-1-13 19:03:22 1509 | 显示全部楼层 |阅读模式

马上注册加入鱼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)
复制代码
楼层
跳转到指定楼层
最佳答案
24 
累计签到:129 天
连续签到:2 天
像番茄加两个蛋 发表于 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)
复制代码
最佳答案
75 
累计签到:79 天
连续签到:6 天
orino 发表于 2018-1-13 19:11:43 | 显示全部楼层
i_3求错了,里面的i_2还要乘10
最佳答案
75 
累计签到:79 天
连续签到:6 天
orino 发表于 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)
复制代码
最佳答案
75 
累计签到:79 天
连续签到:6 天
orino 发表于 2018-1-13 19:28:46 | 显示全部楼层
还有问题嘛?
最佳答案
0 

尚未签到

dudata  楼主| 发表于 2018-1-13 20:18:14 | 显示全部楼层

你的程序是对的,也很简单。
但是我写的问题哪里呢?(貌似不是乘10的问题,比如407这个结果,i_1=7,i_2=0,i_3=4,为什么要乘以10呢?)如何修改能改对?谢谢
最佳答案
0 

尚未签到

dudata  楼主| 发表于 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 

尚未签到

dudata  楼主| 发表于 2018-1-13 20:22:12 | 显示全部楼层

我初学者,想知道我的程序哪里有问题,下次就不会再犯了嘛。谢谢
最佳答案
75 
累计签到:79 天
连续签到:6 天
orino 发表于 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 

尚未签到

dudata  楼主| 发表于 2018-1-13 20:30:36 | 显示全部楼层
哦哦,明白了,原来问题确实杵在这,,我说为啥能出来一个407呢,哈哈,谢谢耐心解释!

发表回复

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

本版积分规则

关闭

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

    移动客户端下载(未启用)
    微信公众号

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

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-4-19 22:19

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