cher112 发表于 2018-11-28 19:37:57

python水仙花问题求助

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 19:56:14

这种随机思路很不好,如果点背一直找不到,如果点好了一下就找到了,
不过原题好像有4个还是几个来着,不是只找到一个,
还是不要考虑random

heidern0612 发表于 2018-11-28 19:56:39

本帖最后由 heidern0612 于 2018-11-28 19:57 编辑

前面思路是对的,后面不要随机最好。while循环不好判断假,最好写个for循环用range圈定范围。是的话就打印出来,不是的话就continue。

cher112 发表于 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后一个数都数不出来。。。{:10_266:}

cher112 发表于 2018-11-28 20:19:22

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

能帮忙按这个思路写个范例吗?十分感谢{:10_266:}

heidern0612 发表于 2018-11-28 20:25:41

本帖最后由 heidern0612 于 2018-11-28 20:28 编辑

cher112 发表于 2018-11-28 20:19
能帮忙按这个思路写个范例吗?十分感谢

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

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

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

手机打的不方便,明天早上给你发代码。

cher112 发表于 2018-11-28 20:29:26

本帖最后由 cher112 于 2018-11-28 20:30 编辑

。。

冬雪雪冬 发表于 2018-11-28 20:29:27

cher112 发表于 2018-11-28 20:17
print("100-999的水仙花数")
y=1
while y :


按你的思路修改的。
print("100-999的水仙花数")
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):
                print(sxh)

cher112 发表于 2018-11-28 20:32:10

冬雪雪冬 发表于 2018-11-28 20:29
按你的思路修改的。

我刚run了下,按这样只能输出两个水仙花数,可答案是4个。。
怎么回事{:10_250:}

冬雪雪冬 发表于 2018-11-28 22:00:30

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

range的范围不准确
print("100-999的水仙花数")
for i in range(1,10):
    a=i
    for o in range(10):
      b = o
      for p in range(10):
            c = p
            sxh = 100*a + 10*b + c
            if sxh == (a**3)+(b**3)+(c**3):
                print(sxh)

cher112 发表于 2018-11-29 20:26:28

冬雪雪冬 发表于 2018-11-28 22:00
range的范围不准确

谢谢!{:10_277:}
页: [1]
查看完整版本: python水仙花问题求助