數——萬物之始:整數int、浮點數float與複數complex
經過上幾期的的介紹,相信大家已經準備好上車了吧?好,我們馬上開始 Python 之旅吧!這期我們主要會用到 IDLE 的交互界面,就是有箭頭的那個,文中顯示的代碼,和你的交互界面應該是一致的。
表示數的數據類型——整數、浮點數、複數
我們先從整數這個數據類型入手。整數(integer)就是像 -3、-2、-1、0、1、2、3、10 這樣的數。以下代碼將變數 賦值為整數 。
在 Python 中,一切都是對象,整數也不例外。什麼是對象?哈哈,具體我們會在後面解釋。
在這裡,我們可以把 視為一張標籤紙,貼在了整數對象 的上面。
那麼如果我寫以下的代碼
最後 是什麼?可以取出來看下:
是 。這個情景可以想像為,把 這個標籤從整數 上面取下來,然後貼到 上面。我們把 這類東西叫做變數(variables)。
第一個異常
再問,如果我想知道有沒有 ,那怎麼辦呢?取出來看下吧。
看到系統返回了一堆紅字。它們叫異常(Exception),系統的這個行為叫拋出異常(raise Exception)。這是在告訴你,你的代碼錯了哦。錯在哪?英文有提示。
是異常的名字,它可是有大用處哦,在錯誤處理中十分重要,在此先賣個關子哈。 是異常的具體內容,系統是在說,你還沒有告訴我 boy 這個標籤貼的是啥呢。
我們可以用以下的代碼告訴系統。
這時,系統就知道了, 是浮點數 。也就是說,你要先告訴系統, 是 ,系統才不會拋出異常。
的使用
《西遊記》中記載了一種法寶,名叫照妖鏡,能照出一隻妖怪的真身。
而Python中也有這樣一種法寶:
用他來看 和 的真身,會發現一個是 ,一個是 。這就是他們的類型啦。
我們知道,就是整數 integer 的縮寫。
那 呢?就是浮點數的意思,因其小數點可以左右漂浮,從而表示更大或更小的數而得名。在更古老的編程語言里,除了 、 兩種表示實數的類型外,還有 long、long long、short、double、long double等等。不過,Python 的設計者 Guido van Rossum 等人為了簡化概念,硬是把這些亂七八糟的數據類型合成了兩種。
當然,Python 還可以使用複數
不過日常編程比較少使用這個數據類型。
數的基礎運算
有了整數和浮點數兩種數據類型,我們就可以把 Python 當計算器用啦。
這裡要注意 這個除法運算。在 Python 2.x 中,如果我們這樣打,會出現以下的結果。
不要以為系統抽風了, 的確等於 哦。為什麼?因為商的整數部分就是 啊!
商 2 余 1。Python 2.x 實施的是int / int = int,所以得出來的結果就是 。要使用 Python 3.x 接近人類理解的除法,可以這樣:
如果商和餘數都想要呢?一個辦法是使用 (地板除 floordiv) 運算和 (求余/求模 modulus)運算。現在我們返回 Python 3.x。
另外一種就是 函數啦。將被除數和除數用半形逗號隔開,放在括弧內,其實這是給 函數傳遞了兩個參數。關於函數的參數,會在以後的某個分享中談及。
咦,可是我明明沒有定義 函數和 函數啊,為什麼這裡能用的?因為這兩個是Python的內置函數(built-in functions),當我們使用 Python 時,系統就會把內置函數都載入好,直接調用就可以了。
Python 的內置函數有許多,一下子是說不過來的。小叮噹會在以後的分享中逐漸提到~
回到運算符。
還有一種運算是冪運算(power)
在多個運算符同時出現的時候,運算符的運算順序與數學一致(中括弧、大括弧都用小括弧代替)
此外, 庫有這些運算符的對應函數。
注意這裡用 或 的時候, 被轉化成了 。
以類型(如整數 、浮點數 )命名的內置函數有時也叫工廠函數,因為函數的調用過程就像輸入原料,產出產品一樣。
import是什麼?
咦,是什麼意思呢?我們可以理解為,有人已經XXX.py里寫好了YYY。XXX.py存在於我們之前所設的環境變數目錄以及此py文件所在的目錄下。YYY可以是函數、變數和我們以後會接觸到的類。然後我們把它拿來用。後面的代表YYY文件下定義的所有東西。當然啦,如果我們只用到,也可以寫呢,關於 ,我們以後也會詳細解釋哦~
增量賦值運算符(augmented assignment operator)
Python 有一種運算符,能在運算的同時給自己賦值。
這和以下的代碼是一樣的
有些同學可能會問,第二段的第二句的兩個 是什麼意思?這裡我們分兩步理解:
第一步:因為 ,所以 等於 ;
第二步;把這個 通過賦值運算符 =,用一個變數 貼在它上面,現在 等於 。
所以,等號左邊的 是新的 ,右邊的 是舊的 。
執行+=操作時,也是這樣分步運算的。所以以下代碼會出錯
錯誤在於,在賦值的時候出現了 這樣的語句。 並不是變數,而是一個整數對象。所以不能給它賦值~
當然了, 還有一大堆好朋友。
嗯…… 和 的意義不太一樣呢。而且 i 開頭的函數要賦值回 a ,感覺它們……沒啥用,還是用符號來得快捷。
增量賦值運算符似乎是無法連續調用的,因此不存在順序的問題。
0.1 + 0.2 != 0.3
有沒有發現,小叮噹從頭到尾都不敢用 演示運算?因為這裡有個坑!
What? ?是眼睛瞎了嗎?不!你沒瞎! 的確不等於 !在解答這個問題之前。我們先來看幾種特別的數。(其實小叮噹並不打算在本期解決這個問題,因為這個問題涉及的東西實在太多!先看看下面兩種數,與這個問題有千絲萬縷的關係~)
科學記數法
不知道大家還記不記得初中時學過的科學記數法?比如 這個整數,可以表示為 ,讀作 1 乘 10 的 2 次方。其中 10 的 n 次冪又可以用 或 來表示。所以,
科學計數法表示出來的數都是浮點數類型 。
二進位、八進位、十六進位
可以看到,Python 使用 來表示二進位,數里的每一位代表 2 的 n 次冪,比如 這個二進位數字,就表示成
因為 0 乘任何數得 0,所以簡化成:
同理,Python 表示八進位和十六進位的數是這樣的:
所謂八進位,就是逢八進一,所以在數字表裡是沒有 8 這個數的,Python 使用 來表示八進位
十六進位的數,1-9 往上就用 (大小寫均可)來表示了, 代表 15,數字表裡沒有 g 這個數。Python 使用 0x 來表示十六進位。
二進位、八進位、十六進位的數都是整數類型 。
那麼,如果我想把十進位數字轉成其他進位,應該怎麼做呢?答案是使用 函數。
就是 binary, 就是 octal, 就是 hexidecimal。學好英文是不是很重要!!
另外一種方法,是給 函數傳入第二個參數 ……
注意第一個參數一定要用單引號或雙引號括起來,其實這是字元串類型的表達方法。第二個參數 ,就是轉換的進位啦。可以使用 、、等標識符,但是,如果將本屬於一個進位的標識符用到另外一個進位身上,就會報錯啦~ 這種傳遞參數的方式,叫關鍵字參數,在細講函數的時候會說到。
呼~講了好多哦……先這樣吧。下期,我們再來看十進位小數轉化成二進位和 的問題。
本期涉及的內容有:
稍微提及的內容有:
快找找這些概念你是否明白了呢?好啦,下次再見啦!
References:
[1] L. Ramalho, Fluent Python, Sebastopol, U.S.: O』Reilly Media, Inc., 2015.
TAG:小小噢遊戲 |