為什么我把if-break放到while循環后面了結果依然正確呢?
標準答案中if語句放到了while循環一開始的地方,先判斷了n是否大于20,如果大于20則退出循環;然后我自己試了一下把if放在while循環后面,運行依然是成功的,這樣不應該先對sum、x、n進行賦值后才退出循環嗎?判斷出來n>20之前已經對x又賦了第21個值不是嗎?
標準答案中if語句放到了while循環一開始的地方,先判斷了n是否大于20,如果大于20則退出循環;然后我自己試了一下把if放在while循環后面,運行依然是成功的,這樣不應該先對sum、x、n進行賦值后才退出循環嗎?判斷出來n>20之前已經對x又賦了第21個值不是嗎?
2019-11-05
舉報
2019-11-05
這種情況,放在前面后放在最后其實是一樣的。
如果寫在后面,當執行完成n=n+1之后,n的值是21,所以條件滿足跳出循環。
如果寫在前面,當執行完成n=n+1之后,n的值為21時,不會跳出循環,判斷while條件,因為直接寫了true所以會進入循環。而循環內部第一句就是if n>20: break;,滿足條件,跳出循環。
所以其實這兩種情況求得的sum值都是一暗影的,都沒有問題。