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分享六:面向對象程序設計(86頁)
1900頁Python系列PPT分享五:函數設計與應用(134頁)
1900頁Python系列PPT分享四:字符串與正則表達式(109頁)
1900頁Python系列PPT分享三:選擇與循環結構語法及案例(96頁)
1900頁Python系列PPT分享二:Python序列(列表、元組、字典、集合)(154頁)
1900頁Python系列PPT分享一:基礎知識(106頁)
學習Python的利器:內置函數dir()和help()
詳解Python序列解包
詳解Python列表推導式
Python泛型函數與單分發器
Python中的偏函數和函數柯裡化
Python列表與數字的四則運算
詳解Python切片技術
詳解Python中的淺複製與深複製
Python運算符含義匯總
Python內置函數使用說明
Python模擬決賽現場最終得分計算過程
Python使用模塊中對象的幾種方法
Python計算信息熵
Python中定義只能實例化一個對象的類
Python從序列中選擇k個不重複元素
時間都去哪兒了之Python程序測試與優化
Python函數嵌套定義的洪荒之力
Python內置函數eval()用法及其安全問題
Python自定義類支持with關鍵字
Python裡的++和--不是運算符
Python代碼優化之in關鍵字
Python提取任意長度整數的每位數字
Python常用運算符含義與用法演示
Python序列循環移位的3種方法
Python版24點遊戲
Python版本的報數遊戲
回調函數原理與Python實現
Python標準庫shutil中rmtree()使用回調函數
封裝Python列表實現多下標訪問
Python列印指定日期日曆
Python_今天是今年第幾天
使用Python列表實現向量運算
董付國老師6本Python系列教材被北大、復旦等近百所高校選作教材
全國計算機等級考試二級Python考試大綱預測和分析
大家都在學Python,你和別人的差距在哪?
大學生們顫抖吧,中學生已經開始學Python了!
祝所有程式設計師1024節日快樂
學會提問,你就成功了一大半!
盤點那些讓人上火的提問方式(論如何讓交流更高效)
喜大普奔
1、繼《Python程序設計基礎》、《Python程序設計(第2版)》、《Python可以這樣學》、《Python程序設計開發寶典》之後,董付國老師新作《中學生可以這樣學Python》已於2017年10月正式出版,已在各大書城全面上架。大學生們顫抖吧,中學生已經開始學Python了!
2、董付國老師6本Python系列圖書閱讀指南
3、董老師免費視頻地址: http://pan.baidu.com/s/1c14WYn2 密碼: 9xwr
---近期Python培訓班安排-
1、2017年12月21日-25日 (21日報到,報名已結束) 廈 門:Python編程及應用--數據分析與科學計算可視化培訓班
2、2018年1月12日至14日(11日報到) 合肥:全國Python科研應用專題實操培訓班
3、2018年1月19日---1月21日(18日報到) 煙臺:2018年全國中高等院校教師 「Python編程及應用」培訓班通知
4、2018年1月28日—2月2日(28日全天報到) 廈門:「Python編程及大數據應用」課程教師(廈門)寒假研修班