亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么計算出來是兩倍的數

x = 1

sum = 0

n = 1

while True:

? ? if n > 20:

? ? ? ? break

? ? n = n + 1

? ? x = x * 2

? ? sum = sum + x

print sum


正在回答

3 回答

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位數計算完的了。

0 回復 有任何疑惑可以回復我~

你的代碼中是先計算x = x*2后計算sum = sum + x的值,所以sum中少了第一次x = 1時的值,而多了一次x = x*2的最后一次計算,所以你的結果時答案的2倍,正確答案應該改為

n?=?n?+?1
sum?=?sum?+?x
x?=?x*2


0 回復 有任何疑惑可以回復我~
參考答案的代碼,在某一次運行到n?=?n?+?1后正好n?>?20,
這時答案里的代碼已經全部運行了20次
而你的代碼才運行到n?=?n?+?1,下面的?x?=?x?*?2和sum?=?sum?+?x還沒有運行
參考答案:
sum?=?0
x?=?1
n?=?1
while?True:
????if?n?>?20:
????????break
????sum?=?sum?+?x
????x?=?x?*?2
????n?=?n?+?1
print?sum


0 回復 有任何疑惑可以回復我~
#1

子女良

收回我的回答,應該是sum = sum + x比答案多運行了一次...
2020-03-23 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758398    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

為什么計算出來是兩倍的數

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號