while后为真就可以吗
for i in range(100, 1000):sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
for i in range(100, 1000):
sum = 0
temp = i
while True:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
为什么上面可以,下面不行? python中在循环里0为假,1为真,while True也可以表达为while 1,那么此时上面的代码中temp变量后面变为0即假就结束循环,第二个代码中while True一直是真也就结束不了 fish_nian 发表于 2021-7-8 13:33
python中在循环里0为假,1为真,while True也可以表达为while 1,那么此时上面的代码中temp变量后面变为0即 ...
可是temp不可能为零
我试了下下面的代码,结果什么都没有 https://fishc.com.cn/forum.php?mod=viewthread&tid=192863&highlight=%CB%AE%CF%C9%BB%A8 fish初 发表于 2021-7-8 13:39
可是temp不可能为零
我试了下下面的代码,结果什么都没有
temp会为0的,后面的if语句就是避免上面得数为0而不返回正确结果,你可以打印temp看 fish初 发表于 2021-7-8 13:39
可是temp不可能为零
我试了下下面的代码,结果什么都没有
temp为什么不可能为零
你看这代码,两个循环
第一次外循环(for),temp=i=100
进入内循环(while)
第一次内循环
temp //= 10=100//10=10
第二次内循环
temp //= 10=10//10=1
第三次内循环
temp //= 10=1//10=0
temp这不就等于0了吗
至此内循环结束
进行if语句,此时判断不成立不执行if语句
进行第二次外循环
temp = 101
...........
.........
......
逃兵 发表于 2021-7-8 13:41
https://fishc.com.cn/forum.php?mod=viewthread&tid=192863&highlight=%CB%AE%CF%C9%BB%A8
谢谢您嘞 灰晨 发表于 2021-7-8 14:33
temp为什么不可能为零
你看这代码,两个循环
第一次外循环(for),temp=i=100
谢谢您嘞
页:
[1]