為什么計算出來是兩倍的數
x = 1
sum = 0
n = 1
while True:
? ? if n > 20:
? ? ? ? break
? ? n = n + 1
? ? x = x * 2
? ? sum = sum + x
print sum
x = 1
sum = 0
n = 1
while True:
? ? if n > 20:
? ? ? ? break
? ? n = n + 1
? ? x = x * 2
? ? sum = sum + x
print sum
2020-03-23
舉報
2020-07-23
while True:
? ? sum = sum + x
? ? x = x * 2
? ? n = n + 1
? ? if n > 20:
? ? ? ? break
print sum
這個是答案代碼,在n = n + 1 結果為21時,會出發if條件,結束。 不會執行最后一步的print sum
你的代碼
while True:
? ? if n > 20:
? ? ? ? break
? ? n = n + 1
? ? x = x * 2
? ? sum = sum + x
print sum
當n = n + 1 結果為21時,還是會繼續執行下邊步驟,直到print sum 執行完成后,才是你的if條件,才會識別出目前是大于20了,需要停止,但是結果已經按21位數計算完的了。
2020-03-28
你的代碼中是先計算x = x*2后計算sum = sum + x的值,所以sum中少了第一次x = 1時的值,而多了一次x = x*2的最后一次計算,所以你的結果時答案的2倍,正確答案應該改為
2020-03-23