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

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

各位大佬,這玩意還講究順序么?

sum=0
x=1
n=1
while True:
? ?x*=2
? ?n+=1
? ?sum+=x
? ?if n>20:
? ? ? ?break
print(sum)

這段代碼求和出來是2097150

但是換一下順序

sum=0
x=1
n=1
while True:
? ?sum+=x
? ?x*=2
? ?n+=1
? ?if n>20:
? ? ? ?break
print(sum)

結果就變成了1048575

求大佬詳細解釋一下啊

正在回答

4 回答

沒換順序:x*=2 ?n+=1 ?sum+=x 是先賦值給x,x計算的值為2,再運算sum的值為3;

換了順序:sum+=x ?x*=2 ?n+=1 是先賦值給sum,sum計算的值為2,再運算x的值為2。

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

第一段代碼中sum相當于0+2+4+...+2^19+2^20=2097150,第二段代碼sum=0+1+2+4+...+2^19=1048575,所以sum和x的先后計算順序影響了結果。不知道能不能理解?我是剛開始學,有問題多交流。

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

先加后乘和先乘后加的結果當然不一樣

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

第一段代碼與第二段代碼執行次序不一樣,第一段先改變x,n再計算sum,然后再判斷,第二段先計算sum再改變x,n,所以第二段比第一段少執行了一次

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

舉報

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

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

進入課程

各位大佬,這玩意還講究順序么?

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

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

幫助反饋 APP下載

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

公眾號

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