看板 Python 關於我們 聯絡資訊
※ 引述《palapapapa (lala)》之銘言: : 標題: [問題] 新手書疑問 : 時間: Wed Jan 23 11:09:46 2013 : 這邊有個指派部分,我卡了好久,想請問一下: : 教學內容:所謂的指派是把等號右邊的值給左邊的變數 : a = 2 : a += 2 # a 會等於 4 我的理解是右邊的2往左丟,加上a,等於4 : a -= 2 # a 會等於 2 ←不知道2是怎麼出來的? : 2 (a代表的) - 2 (右邊) 不是 = 0 嗎 : a /= 2 # a 會等於 2.0 : a **= 2 # a 會等於 0.0 : 後面這兩個也跟作者答案不同,是我理解錯誤嗎? : : http://pydoing.blogspot.tw/2012/12/Python-Expression-and-Statement.html : ※ 編輯: palapapapa 來自: 118.170.10.252 (01/24 19:10) 這一段這些步驟要連起來看 a = 2 a += 2 # a 會等於 4 # 現在a這個變數裡面放的東西已經變成4這個數值了, 現在a是4 a -= 2 # a 會等於 2 # 對, 因為4-2 = 2, 然後這個2又被放回a 現在a是2 a *= 2 # a 會等於 4 # 到上一步時a是2, 現在乘以2, 變成4 現在a是4 a /= 2 # a 會等於 2.0 # 4 / 2 = 2, 現在a是2 # (delete 但是這裡作者講錯了orz python裡int / int 還是int, # 不會跑出float 的2.0) a %= 2 # a 會等於 0.0 # 剛才a 是2, # 2 對 2 取餘數, 得0. 現在a是0 a **= 2 # a 會等於 0.0 # 到上一步為止a 已經變成0了 # 0 的2次方還是0 ( edit: 感謝timTan指正!! 原來如此 python 3 裡 operator "/" 作為數學上的除法 operator "//" 作為數學上的 floor ( div ( arg1, arg2 ) ) 於是int type 相除是會產生float type的. 看來我該好好了解一下python 3!) (以下delete 我覺得這個入門寫得不太好耶... (以下delete 除了有錯誤, 這個舉例也很容易誤導人...) 若要像他那樣舉例, 我也會選別的值 a = 2 a += 3 # 這行執行完之後, a 變成5 a -= 1 # 這行執行完之後, a 變成4 a *= 7 # 這行執行完之後, a 變成28 a /= 4 # 這行執行完之後, a 變成7 a %= 5 # 這行執行完之後, a 變成2 a **= 6 # 這行執行完之後, a 變成64 舉例用的數字不重複的話 讀者可以少一些ambiguity -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.211.32.194
palapapapa:看前面解釋還有點搞不懂,不過後面的舉例很順的一行 01/24 22:47
palapapapa:接一行看下去,沒有任何障礙! 01/24 22:47
palapapapa:謝謝你花這麼多時間打文章給新手解惑 01/24 22:48
timTan:Python3 跟 python2 就是不一樣,作者沒有弄錯。 01/25 01:38
timTan:python3 int/int 有機會跑出 float 的。 01/25 01:39
ACupCat:原來如此!! 感謝釋疑, 我修改加註一下我弄錯的地方 01/25 10:24
※ 編輯: ACupCat 來自: 219.87.142.18 (01/25 10:31)
uranusjr:Python 3 要用 // 才會保證使用 int 01/25 13:20