159328404 发表于 2020-9-14 16:23:44

求助:水仙花数问题

i = 100
a = int(i / 100)
b = int(i / 10) - (int(i / 100) * 10)
c = int(i % 10)
while i <=999:
    if i == a ** 3 + b ** 3 + c ** 3:
      print(i)
      i += 1
    else:
      i += 1


不知道哪里错了。。。

LuLD 发表于 2020-9-14 16:33:33

本帖最后由 LuLD 于 2020-9-14 16:39 编辑

你这是要求出 三位数的 水仙花数?

那你应该把
a = int(i / 100)
b = int(i / 10) - (int(i / 100) * 10)
c = int(i % 10)

放到 while 循环里面,

你这样写的 a b c 的值是固定的了


i = 100

while i <=999:
    a = int(i / 100)
    b = int(i / 10) - (int(i / 100) * 10)
    c = int(i % 10)
    if i == a ** 3 + b ** 3 + c ** 3:
      print(i)
      i += 1
    else:
      i += 1

sunrise085 发表于 2020-9-14 16:34:11

本帖最后由 sunrise085 于 2020-9-14 16:35 编辑

应该把计算abc的那三行放在while循环里面
最后 if和else中都有i=i+1,那么这一句就不必放在if和else中了

i = 100

while i <=999:
    a = int(i / 100)
    b = int(i / 10) - (int(i / 100) * 10)
    c = int(i % 10)
    if i == a ** 3 + b ** 3 + c ** 3:
      print(i)
    i += 1

coolliqing 发表于 2020-9-14 16:38:19

本帖最后由 coolliqing 于 2020-9-14 16:54 编辑

if i == a ** 3 + b ** 3 + c ** 3:
这一句:如果 i =a ** 3 + b ** 3 + c ** 3 ,可是i = 100,循环一次会加1,a,b,c的值却一直没有变化,所以永远不能为True,自然没有输出

该怎么改楼上已经有正解了{:5_109:}



159328404 发表于 2020-9-14 16:56:17

coolliqing 发表于 2020-9-14 16:38
这一句:如果 i =a ** 3 + b ** 3 + c ** 3 ,可是i = 100,循环一次会加1,a,b,c的值却一直没有变化,所 ...

谢谢{:5_108:}

159328404 发表于 2020-9-14 16:58:35

sunrise085 发表于 2020-9-14 16:34
应该把计算abc的那三行放在while循环里面
最后 if和else中都有i=i+1,那么这一句就不必放在if和else中了

...

谢谢{:5_108:}
页: [1]
查看完整版本: 求助:水仙花数问题