標下劃線的三條代碼順序不一樣,輸出結果就不一樣,雖然寫的有點累贅,不過這是一開始的想法,誰能解釋一下這三條代碼順序執行的時候是怎么進行的
sum = 0
x = 1
n = 1
while True:
??? sum=sum+x
??? n=n+1
??? x=2**(n-1)
??? if n > 20:
??????? break
print sum
sum = 0
x = 1
n = 1
while True:
??? sum=sum+x
??? n=n+1
??? x=2**(n-1)
??? if n > 20:
??????? break
print sum
2017-10-24
舉報
2017-10-24
原因在n = n +1和x = 2 **(n-1)這兩句,如果這兩句順序調換,結果就會不一樣。比如某一次循環中n == 2,則此時n = n+1計算出 n ==3,此時再去計算 x = 2 ** (n-1)這一句,結果x為4;如果這兩句換個次序,先計算x,結果為x==2.也就是說,每次循環中算出來的x的值在兩種不同順序下是不一樣的,這導致了sum的最終結果不一樣
2017-10-24
/*這種表示是注釋的意思*/Phthon里就是#
sum是和嘛,第一行就是sum=0+1=1? #等號左邊的東西是變量也就是名字的意思,右邊的才是真正計算的數字
然后執行第二句n=1+1=2? #注意?。?!這里n已經變成了2了
最后是第三句x=2 * (2-1)=2? #上面的n已經變成了2,所以這里n帶入計算是2不是1,還有就是**沒看懂,*才是乘的意思
如果要是這個順序,n=1+1=2
x=2*(2-1)=2
sum=0+2=2
所以跟上面的值就不一樣了。計算機很單純,不給一個特殊要求的話就是逐行解析語句從上到下,上面的前因(值)變了后面的結果(結果)自然變了