鱼C论坛

 找回密码
 立即注册
查看: 18711|回复: 20

Python 第九讲课后练习 求100-1000水仙花数那道题

[复制链接]
发表于 2016-2-5 19:28:27 | 显示全部楼层 |阅读模式

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

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

x
  1. for i in range(100,1000):
  2.     a=0
  3.     b=0
  4.     c=0
  5.     while i<1000:
  6.         a=i//100
  7.         b=(i//100)//10
  8.         c=(i//100)%10
  9.         if i==a**3+b**3+c**3:
  10.             print(i)
  11.         i=i+1
复制代码




请问好心人 这么做错在哪里了 蟹蟹各位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-5 19:55:52 | 显示全部楼层
b = (i % 100) // 10
c =  (i % 100) % 10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-5 21:08:47 | 显示全部楼层
冬雪雪冬 发表于 2016-2-5 19:55
b = (i % 100) // 10
c =  (i % 100) % 10


蟹蟹你,不过结果为什么长这样。。。。。


  1. 153
  2. 370
  3. 371
  4. 407
  5. 153
  6. 370
  7. 371
  8. 407
  9. 153
  10. 370
  11. 371
  12. 407
  13. 153
  14. 370
  15. 371
  16. 407
  17. 153
  18. 370
  19. 371
  20. 407
  21. 153
  22. 370
  23. 371
  24. 407
  25. 153
  26. 370
  27. 371
  28. 407
  29. 153
  30. 370
  31. 371
  32. 407
  33. 153
  34. 370
  35. 371
  36. 407
  37. 153
  38. 370
  39. 371
  40. 407
  41. 153
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-5 21:22:32 | 显示全部楼层
一个循环就行了。我简单修改了一下:
  1. for i in range(100,1000):
  2.       a=i//100
  3.       b=(i%100)//10
  4.       c=(i%100)%10
  5.       if i==a**3+b**3+c**3:
  6.             print(i)
  7.         
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-2-5 21:44:36 | 显示全部楼层
冬雪雪冬 发表于 2016-2-5 21:22
一个循环就行了。我简单修改了一下:

三克油,万分感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-6 14:14:47 | 显示全部楼层

之前没看懂小甲鱼的代码
今天随便逛逛
终于知道这道题怎么解了
表示感激~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-28 02:22:48 | 显示全部楼层
知道这道题怎么解了
蟹蟹"冬雪雪冬"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-28 08:47:59 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-28 09:21:14 | 显示全部楼层
for i in range(100,1000):
    a=0
    b=0
    c=0
    a=i//100
    b=(i-(a*100))//10
    c=i-a*100-b*10
    if i==a**3+b**3+c**3:
        print(i)

改成以上就可以了。
告诉你哪错了:
第五行:while循环没必要,你给出的条件是i<1000,而最开始的for循环已经给出100-999的区间了,for循环会把100-999的数一个一个赋值给i,循环完。
这个循环铁定是Ture了。所以删掉。

第七行、第八行:
这里你的算法是错的,举个栗子:如果i=153,a会被计算为1,b呢? b=(153//100)//10,这个就是错误了,下一步就是b=1//10。所以说七八行都错了。

然后就是十一行:for循环的意义就是把你定义的100-999的整数一次赋值给i,你这里就没必要再给i加上1了,所以删掉吧。

说的比较啰嗦,希望你能明白。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-2-5 22:37:51 | 显示全部楼层
c的值可以直接简化为:
c=i % 10
其他一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-27 13:35:10 | 显示全部楼层
  1. for x in range(100,1000):
  2.     a=int(x/100)
  3.     b=int(x/10)-(int(x/100)*10)
  4.     c=int(x%10)
  5.     if a**3+b**3+c**3=x:
  6.        print(x)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-8 11:07:13 | 显示全部楼层
有没有大大能告诉一下小甲鱼的解法是什么意思?看了半天都没有看明白,蟹蟹!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-21 20:37:34 | 显示全部楼层
for each in range(100,1000):
        x = each
        sum = 0
        sum = sum + (x % 10)**3
            x = (x//10)
            if x == sum:
                print(sum)
                    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-21 20:38:29 | 显示全部楼层
for each in range(100,1000):
        x = each
        sum = 0
        while x:
            sum = sum + (x % 10) ** 3
            x = x // 10      
            if x == sum:
                print(sum)
                    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-1 17:11:07 | 显示全部楼层
yxzxy 发表于 2017-11-21 20:38
for each in range(100,1000):
        x = each
        sum = 0

temp除10取余,那余数就是个位,那第一次就是个位的立方,然后把这个三位数地板除,得到的是一个两位数,一个两位数再除10取余,得到这个三位数的十位,再算这个数的立方,通过循环把三位数依次取立方叠加到sum里去,得到立方和
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-1 18:23:18 | 显示全部楼层
那个晒结果的。。你好长。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-13 16:20:08 | 显示全部楼层
SylarPu 发表于 2017-12-1 18:23
那个晒结果的。。你好长。。。。

最后没有加中断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 10:10:40 | 显示全部楼层
for i in range(100,1000):
    while i == 1000:
        break
    a=i//100
    b=(i-100*a)//10
    c=i-100*a-10*b
    if i==a**3+b**3+c**3:
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 18:29:13 | 显示全部楼层
冬雪雪冬 发表于 2016-2-5 21:22
一个循环就行了。我简单修改了一下:

超级感谢,没看懂甲鱼得答案,,这个代码看得明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 17:41:02 | 显示全部楼层
  1. for i in range(100, 1000):
  2.     sum = 0
  3.     temp = i
  4.     while temp:
  5.         sum = sum + (temp%10) ** 3
  6.         temp //= 10         
  7.     if sum == i:
  8.         print(i,end=' ')
复制代码

使用一个for循环自己可以做出来,一看小甲鱼的代码,半天没看出门道来,while循环怎么解释??笑哭,求解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 19:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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