B-C 发表于 2020-9-10 14:57:10

找3位内的水仙花数

我写的好像出问题了,但是找不着问题在哪····
是我对for的理解有问题吗

放代码
n = 100

i = 1

while n <= 999:
    print('1')
    n = str(n)
    for bek in n:
      if i == 1:
            a = bek
            i = i + 1
      if i == 2:
            b = bek
            i = i + 1
      if i == 3:
            c = bek
            print('2')
            
    n = int(n)
    a = int(a)
    b = int(b)
    c = int(c)

    if n == a * a * a + b * b * b + c * c * c:
      print(n,'是水仙花数')
      
    n = n + 1
    i = 1
    print('3')


那个print 1,2,3是我用来自检问题用的····看的时候忽略掉就是了

1q23w31 发表于 2020-9-10 15:30:11

397 是水仙花数
你的程序运行结果之一,就拿397l为例,看你的程序运行过程
while n <= 999:
    print('1')
    n = str(n)
    for bek in n:
      if i == 1:
            a = bek
            i = i + 1
      if i == 2:
            b = bek
            i = i + 1
      if i == 3:
            c = beki
            print('2')
第一次for循环,i=1,a=3-->i=2 b=3-->i=3 c=3
第二次for循环,i=3,c=9
第三次for循环 i=3,c=7
判断if n == a * a * a + b * b * b + c * c * c是否成立
397==3*3*3+3*3*3+7*7*7
显然成立,所以结果就错了

1q23w31 发表于 2020-9-10 15:31:46


i = 1

while n <= 999:

    n = str(n)
    for bek in n:
      if i == 1:
            a = bek
         
      if i == 2:
            b = bek
            
      if i == 3:
            c = bek
      i+=1

            
    n = int(n)
    a = int(a)
    b = int(b)
    c = int(c)

    if n == a * a * a + b * b * b + c * c * c:
      print(n,'是水仙花数')
      
    n = n + 1
    i = 1


正确代码如上

B-C 发表于 2020-9-10 15:40:56

1q23w31 发表于 2020-9-10 15:31
正确代码如上

谢谢,果然是我for没学好{:10_266:}{:10_266:}{:10_266:}
页: [1]
查看完整版本: 找3位内的水仙花数