本帖最后由 jackz007 于 2019-5-16 00:30 编辑
- while temp:
- x = int(temp/100)
- y = int((temp - 100*x)/10)
- z = temp-100*x-10*y
复制代码
在本例的 while 循环中,循环变量 temp 必须渐次减小才有可能到达循环终点,依目前代码的状况,是个死循环,因为 temp 在循环中并没有任何改变。
如果按照你的思路,根本就没有必要设计 while 循环,直接算出 i 的百位、十位和个位数值就可以了:
- for i in range(100,1000):
- x = i // 100 # 地板(整数)除法,不用 int() 函数,得到的就是整数,这是计算百位数值
- y = (i % 100) // 10 # i % 100 会屏蔽掉百位,剩下十位和个位,这是计算十位数值
- z = i % 10 # i % 10 屏蔽百位、十位,剩下个位,余数嘛,自然也是整数
- if x ** 3 + y ** 3 + z ** 3 == i :
- print(i)
复制代码
你还可以参考一下下面的这个代码,适应性可能更强一些
- for i in range(100,1000):
- sum = 0
- temp = i
- while temp:
- sum += (temp % 10) ** 3
- temp //= 10
- if sum = i
- print(i)
复制代码