- for i in range(100,1000):
- while i :
- a = i //100
- b = ( i // 10 ) - ( a * 10 )
- c = i - ( a * 100 ) - ( b * 10 )
- d = a ** 3 + b ** 3 + c ** 3
- if i == d:
- print(i)
- break
- else:
- break
复制代码
在你的代码基础上修改了一下你的代码,打印不出结果的原因有下列几个:
1.你的while循环里没有让这个循环停止的条件。
2.你的代码里if应该在while的循环体里面。(就算你放进了循环体里但是也没有让while这个循环体跳出来进行下一步----比如说 i 取了100之后,它进入了while这个循环体,这个 i(100)很明显不是你要的值,你的本意是想就不要这个i的值,让它继续去取后面的值(也就是进行下一次for循环)。问题就在于你的代码中没有让while这个循环停下来让for循环进行下一次i的赋值,当然就不行啦,所以你的代码中我就加入了两个break。之所以是两个是因为当 i 是水仙花数的时候需要跳出来,不是的时候也要跳出来)
3.我的python是3.7.4版本的,‘/’是真正的除法,比如输入153/100,输出的结果是1.53,不是1;输入153//100,输出的结果才是1
4.while循环用的很多余。你可以自己尝试去掉while再写一个看看