鱼C论坛

 找回密码
 立即注册
查看: 3144|回复: 10

[已解决]python水仙花问题求助

[复制链接]
发表于 2018-11-28 19:37:57 | 显示全部楼层 |阅读模式

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

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

x
009作业让编出100-999水仙花数(eg 153 = 1^3+5^3+3^3 这类数)的题目
我想利用 sxh = 100*a + 10*b  + c
a为1-10一个数,b,c为0-10的任一数,一次循环重置一次a,b,c
通过sxh / a**3 + b**3 + c **3=0
print(sxh)这种方式解决问题

首先问下大佬们这个思路对不对
如果思路对,这个循环print怎么break。。。


谢解答dalao'
最佳答案
2018-11-28 22:00:30
cher112 发表于 2018-11-28 20:32
我刚run了下,按这样只能输出两个水仙花数,可答案是4个。。
怎么回事

range的范围不准确
  1. print("100-999的水仙花数")
  2. for i in range(1,10):
  3.     a=i
  4.     for o in range(10):
  5.         b = o
  6.         for p in range(10):
  7.             c = p
  8.             sxh = 100*a + 10*b + c
  9.             if sxh == (a**3)+(b**3)+(c**3):
  10.                 print(sxh)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-11-28 19:56:14 | 显示全部楼层
这种随机思路很不好,如果点背一直找不到,如果点好了一下就找到了,
不过原题好像有4个还是几个来着,不是只找到一个,
还是不要考虑random
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-28 19:56:39 From FishC Mobile | 显示全部楼层
本帖最后由 heidern0612 于 2018-11-28 19:57 编辑

前面思路是对的,后面不要随机最好。while循环不好判断假,最好写个for循环用range圈定范围。是的话就打印出来,不是的话就continue。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-11-28 20:17:47 | 显示全部楼层
heidern0612 发表于 2018-11-28 19:56
前面思路是对的,后面不要随机最好。while循环不好判断假,最好写个for循环用range圈定范围。是的话就打印 ...

print("100-999的水仙花数")
y=1
while y :
    for i in range(0,9):
        a=i
    for o in range(1,9):
        b = o
    for p in range(1,9):
        c = p
    sxh = 100*a + 10*b + c
    if sxh %(a**3)+(b**3)+(c**3) == 1:
        print(sxh)
感觉我这样写逻辑没什么错啊。。。。run后一个数都数不出来。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-28 20:19:22 | 显示全部楼层
heidern0612 发表于 2018-11-28 19:56
前面思路是对的,后面不要随机最好。while循环不好判断假,最好写个for循环用range圈定范围。是的话就打印 ...

能帮忙按这个思路写个范例吗?十分感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-28 20:25:41 From FishC Mobile | 显示全部楼层
本帖最后由 heidern0612 于 2018-11-28 20:28 编辑
cher112 发表于 2018-11-28 20:19
能帮忙按这个思路写个范例吗?十分感谢


你的求余除有问题,不是这么写。

直接sxh=a**3+b**3+c**3不行吗?为啥多此一举用求余除呢?

另外你的range范围也不对,百位的范围应该是1到10,十位跟各位都应该是0到10才对。

手机打的不方便,明天早上给你发代码。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-28 20:29:26 | 显示全部楼层
本帖最后由 cher112 于 2018-11-28 20:30 编辑

。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-11-28 20:29:27 | 显示全部楼层
cher112 发表于 2018-11-28 20:17
print("100-999的水仙花数")
y=1
while y :

按你的思路修改的。
  1. print("100-999的水仙花数")
  2. for i in range(0,9):
  3.     a=i
  4.     for o in range(1,9):
  5.         b = o
  6.         for p in range(1,9):
  7.             c = p
  8.             sxh = 100*a + 10*b + c
  9.             if sxh == (a**3)+(b**3)+(c**3):
  10.                 print(sxh)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-28 20:32:10 | 显示全部楼层
冬雪雪冬 发表于 2018-11-28 20:29
按你的思路修改的。

我刚run了下,按这样只能输出两个水仙花数,可答案是4个。。
怎么回事
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-28 22:00:30 | 显示全部楼层    本楼为最佳答案   
cher112 发表于 2018-11-28 20:32
我刚run了下,按这样只能输出两个水仙花数,可答案是4个。。
怎么回事

range的范围不准确
  1. print("100-999的水仙花数")
  2. for i in range(1,10):
  3.     a=i
  4.     for o in range(10):
  5.         b = o
  6.         for p in range(10):
  7.             c = p
  8.             sxh = 100*a + 10*b + c
  9.             if sxh == (a**3)+(b**3)+(c**3):
  10.                 print(sxh)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-29 20:26:28 | 显示全部楼层

谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 03:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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