广东范戴克 发表于 2019-8-27 23:31:07

1. 编写一个程序,求 100~999 之间的所有水仙花数。 Python 009讲课后作业

for a in range(1,10):
    for b in range(1,10):
      for c in range(1,10):
            if 'a**3 + b**3 + c**3' =='abc':
                print(a,b,c)
求大神指点问题出在哪

Devil丶君 发表于 2019-8-27 23:34:11

for a in range(1,10):
    for b in range(1,10):
      for c in range(1,10):
            if a**3 + b**3 + c**3 == a*100+b*10+c:
                print(a*100+b*10+c)
这样就可以啦!

灰色的天空 发表于 2019-8-27 23:41:57

本帖最后由 灰色的天空 于 2019-8-27 23:45 编辑

你非要字符串来比较就
for a in range(1,10):
    for b in range(1,10):
      for c in range(1,10):
            if '%d'%(a**3+b**3+c**3) =='%d%d%d'%(a,b,c):
                print(a,b,c)

XiaoPaiShen 发表于 2019-8-28 01:01:55

for a in range(1,10):
    for b in range(0,10):       # 十位数应该是从0到9
      for c in range(0,10):   # 个位数应该是从0到9
            if '%d'%(a**3+b**3+c**3) =='%d%d%d'%(a,b,c):
                print('%d%d%d'%(a,b,c))

zltzlt 发表于 2019-8-28 07:51:10

字符串不能进行比较。正确代码如下:

for a in range(1,10):
    for b in range(10):
      for c in range(10):
            if a**3 + b**3 + c**3 == int(f'{a}{b}{c}'):
                print(f'{a}{b}{c}')

ykn大神6 发表于 2019-8-28 09:13:02

我记得字符串比较不了

juzhong0607 发表于 2019-8-28 12:01:17

这样也可以:
if a**3 + b**3 + c**3 ==int(str(a)+str(b)+str(c)):

c870801 发表于 2019-8-28 20:18:02

是的,真正的输出是一个数而不是三个数。
页: [1]
查看完整版本: 1. 编写一个程序,求 100~999 之间的所有水仙花数。 Python 009讲课后作业