巧用python“int”函數

來源:互聯網
上載者:User

標籤:八進位   字串類型   大致   二進位   符號   3.x   輸出   ror   顯示   

在python中,可以利用關鍵詞“int”實現其他資料類型強制轉化為整形資料。不過需要注意,在python2中,有長整型,但是在python3中,無論數字多長,都是整形。

int函數原型為:int(x,[base])

其中x的資料類型可以是字串或者數字,base代表進位,用中括弧括起來,意思是可以省略,預設值預設為10。

int函數的常見用法大致可以分為如下幾類:

1.當x為float型或為int型時,即為數字型時

v=int(3.3/1) #在python中的運算子“/”和在C中作用相似,在這裡是除法的意思,即3.3/1=3.3print(v)

輸出顯示為:3

v=int(2e3)  # 2e3是指2*10^3,此用法在C中沒有print(v)

輸出為:2000

v=int(10,16) #這裡的10是數字10,16是16進位的意思print(v)

輸出:報錯。

提示:int() can‘t convert non-string with explicit base

翻譯過來的意思就是當“base”存在時,int()不能轉換非字串類型。

2.當x為字串時

v=int("123")print(v)

輸出:123

此時輸出的123是一百二十三的意思,是整形的123。int()將字串“123”強制轉換成了整形123。需要注意的是,在base省略時,預設值預設為10的。

在C語言有atoi、atol、atof等庫函數,可分別把ASCII編碼的字串轉化為int、long、float類型的數字,需要包含標頭檔stdlib.h,使用方法不如python中簡便。

v=int("123",16)print(v)

輸出:291。

字串“123”,先轉為數字123,再按照十進位輸出,就是291。這裡的123是16進位的123,輸出時是10進位,所以實際上是0x123=291。

v=int("GG",16)print(v)

輸出:錯誤。

提示:invalid literal for int() with base 16: ‘GG‘

在十六進位中,最大的是“f”,而“G”超出了範圍。如果把代碼中的“16”改為“17”,程式正確,輸出288,即十七進位的GG轉為十進位是288。

注意:在這裡base的範圍是2~36!!!

3.x是字串,且是0x、0b、0引導的十六進位、二進位、八進位等。

a="0x10"v=int(a, 16)print(v)

輸出:16。

a="0x10"v=int(a, 17)print(v)

輸出:錯誤。

提示:ValueError: invalid literal for int() with base 17: ‘0x10‘。

0x並不是十七進位的前置字元,並且在十七進位中並無符號“x”。

a="0x10"v=int(a,35)print(v)

輸出:40460。

雖然0x並不是35進位的前置字元,但是35進位中用“x”代表33。

 總結:1.當x為數字時,base必須省略。(或者說base賦值以後,x只能代表字串)

 2.當x為字串時,用print輸出,需要將字串按照base的值轉為十進位,最終顯示結果一定是十進位。

經典例題:阿凡提與國王比賽下棋,國王說要是自己輸了的話阿凡提想要什麼他都可以拿得出來。阿凡提說那就要點米吧,棋盤一共64個小格子,在第一個格子裡放1粒米,第二個格子裡放2粒米,第三個格子裡放4粒米,第四個格子裡放8粒米,以此類推,後面每個格子裡的米都是前一個格子裡的2倍,一直把64個格子都放滿。需要多少粒米呢?

這個例題在初中或者高中並不算難題,列方程就可以求解。但是如果按照電腦的思路思考,變得十分簡單。第一個格子放1粒,第二個放2粒,第三個放4粒,以此類推……這個問題實際上就是將一個位元轉為十進位輸。

如果只有兩個格子,一共就需要1+2=3粒米。兩個格子就是“11”,“11”轉為十進位就是3。

如果只有三個格子,一共就需要1+2+4=7粒米。兩個格子就是“111”,“111”轉為十進位就是7。

如果只有兩個格子,一共就需要1+2+4+8=15粒米。兩個格子就是“1111”。“11”轉為十進位就是15。

…………

所以,64個格子用二進位表示就是“11……11”,64個1,這個問題就變為了64個1轉為10進位是多少了,很簡單,2**64-1

用python寫就是

v=int(‘1‘*64,2)print(v)

輸出:18446744073709551615

 

巧用python“int”函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.