1. 程式人生 > >Python內建函式int()高階用法

Python內建函式int()高階用法

int()函式常用來把其他型別轉換為整數,例如:

>>> int(3.2)

3
>>> int(1/3)
0

其實,int是Python內建型別之一,之所以能夠當作函式來用,是因為它提供了構造方法。另外,它還提供了第二個引數支援更多功能,例如:

>>> int('1111', 8)

585

上面的問題是不是很熟悉呢?這也是我的15個讀者群入群門檻問題之一,但是很多人進不來,說題不會做,不會做不要緊啊,隨便在任何Python開發環境中執行一下就可以了,如果這還不會的話,你很可能是個假讀者,或者還不瞭解Python,沒入門呢。

int()函式可以把實數型別轉換為整數,並且是向下取整,也就是在數軸上向左取整,簡單粗暴,有程式碼為證:

>>> int(3.6)
3
>>> int(3.4)
3

另外,int()還可以把字串按照指定的進位制轉換為整數,如果不指定進位制的話預設按十進位制為準,除非第一個引數字串隱含了進位制並且指定第二個引數為0,例如:

>>> int('3333')
3333
>>> int('3333', 0)
3333
>>> int('0o333', 0)
219

>>> int('0x3333', 0)
13107

那麼int()函式的第二個引數除了0還有啥?讓Python內建函式help()來告訴我們(學Python必備技能,節選):

>>> help

(int)
Help on class int in module builtins:

class int(object)
 |  int(x=0) -> integer
 |  int(x, base=10) -> integer
 | 
 |  Convert a number or string to an integer, or return 0 if no arguments
 |  are given.  If x is a number, return x.__int__().  For floating point
 |  numbers, this truncates towards zero.
 | 
 |  If x is not a number or if base is given, then x must be a string,
 |  bytes, or bytearray instance representing an integer literal in the
 |  given base.  The literal can be preceded by '+' or '-' and be surrounded
 |  by whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.


 |  Base 0 means to interpret the base from the string as an integer literal.

也就是說,int()函式的第二個引數可以是0或者2-36之間的數字(如果第一個引數字串隱含了進位制的話,要統一起來),例如:

>>> int('1111', 2)
15
>>> int('1111', 3)
40
>>> int('1111', 8)
585
>>> int('1111', 27)
20440

這樣的東西有啥用呢?讓我們來講一個故事:阿凡提與國王比賽下棋,國王說要是自己輸了的話阿凡提想要什麼他都可以拿得出來。阿凡提說那就要點米吧,棋盤一共64個小格子,在第一個格子裡放1粒米,第二個格子裡放2粒米,第三個格子裡放4粒米,第四個格子裡放8粒米,以此類推,後面每個格子裡的米都是前一個格子裡的2倍,一直把64個格子都放滿。需要多少粒米呢?當然,這個問題用列表推導式或者生成器表示式很容易計算。但是,用int()函式計算或許是最快的。

>>> int('1'*64, 2)
18446744073709551615

順便說句題外話,這到底需要多少米呢?把“粒”換算成“噸”或者“億噸”,你會嗎?

----------相關閱讀----------

1900頁Python系列PPT分享五:函式設計與應用(134頁)

----------喜大普奔----------

1、繼《Python程式設計基礎》、《Python程式設計(第2版)》、《Python可以這樣學》、《Python程式設計開發寶典》之後,董付國老師新作《中學生可以這樣學Python》已於2017年10月正式出版,已在各大書城全面上架。大學生們顫抖吧,中學生已經開始學Python了!

3、董老師免費視訊地址: http://pan.baidu.com/s/1c14WYn2 密碼: 9xwr

--------近期Python培訓班安排------