麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

Python int()函數

2023-04-25 12:32:00
字體:
來源:轉載
供稿:網友

int()函數是Python的一個內置函數,其作用是把一個數字或字符串轉換成整型數據,或者在沒有傳遞任何參數時返回0.

語法格式

官方文檔給出的語法格式如下

class int([x = 0])
class int(x, base = 10)

參數

x:一個數字或字符串,若x不是數字或者指定了參數base時,x必須是一個字符串;

base:數字基于的基,即轉換數字的進制。默認為10進制。

返回值

該函數的返回值是一個整型數。

Python int()函數

不帶參數的輸出

如上面所述,該函數沒有參數時,返回0值。

a = int()
print("a=", a)
print(type(a))

輸出結果如下:

a= 0
<class 'int'>

在Python 3.8.2中的輸出如下圖所示:

Python int()不帶參數的例子

帶數字參數的例子

數字可以是整型數、浮點數或其它進制的數字。

print(int(12))
print(int(10.2))
print(int(10.89))
print(int(-10.89))
print(int(0b1001))
print(int(0o57))
print(int(0xFC))

輸出結果如下:

12
10
10
-10
9
47
252

從上面的輸出結果可以看出:int()函數對浮點數不是進行的四舍五入操作,而是取浮點數的整數部分;int()函數會把其他進制的數字轉換成十進制形式。

Python int()函數更多的例子

參數是字符串

參數是字符串時,字符串中的數字只能是整數,不能是小數,其它進制的數字需要配合base參數。

>>> print(int('100'))
100
>>> print(int('10.4'))
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    print(int('10.4'))
ValueError: invalid literal for int() with base 10: '10.4'

>>> print(int('0b1001'))
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    print(int('0b1001'))
ValueError: invalid literal for int() with base 10: '0b1001'

>>>

使用base參數

使用base參數時,參數x必須是字符串、字節或字節數組,且x所表示的進制數需跟base指定的進制一致。

base的取值范圍為從2到36,或者取值為0,base默認取值為10.

基為n的一個字符序列,其包含的有效數位為0~n-1,超過9的數位使用字母 a z (或者 A Z )來表示,分別代表10~35的數值,這也就解釋了為什么base的最大取值只能為36。

基為2, 8和16的數字字符串也可以分別加前綴'0b/0B''0o/0O''0x/0X'

當base取值為0時,int函數要精確解釋每個數位,其合法的字符串只能是以二進制、八進制、十六進制前綴開始的數字字符或1~9開始的數字字符,那么int('010',0),int('AF',0)的用法會報錯,而int('010'),int('0b010',0),int('0o010',0)以及int('0x010',0)的寫法則是有效的寫法。

下面這些例子是把字符串100運用到int()函數的情形:

Python int()函數base參數的使用

因為字符串“100”中包含的數位是2~36進制中的有效數位,所以int()函數都可以正確執行;超過36的數將是無效的參數值,將引發“ValueError”錯誤。

下面再給出一組例子用于說明base參數的使用情況:

>>> int('78',2)
Traceback (most recent call last):
  File "<pyshell#44>", line 1, in <module>
    int('78',2)
ValueError: invalid literal for int() with base 2: '78'

>>> int('78', 9)
71
>>> int('0b1001',2)
9
>>> int('1001', 2)
9
>>> int('0O67', 8)
55
>>> int('0O67', 9)
Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    int('0O67', 9)
ValueError: invalid literal for int() with base 9: '0O67'

>>> int('0xF35', 16)
3893
>>>

上面這組例子說明:當使用前綴的進制格式時,base只能取對應的值,否則也會引發“ValueError”錯誤。當然,當base取得足夠大,使其數位包含了前綴中的字母,也可以正確輸出。

當使用base參數時,x的取值只能是字符串、字節數據或字節數組類型。

Python中的base參數的使用

字節數據或字節數組數據的使用

a = int(bytes("-16", "utf-8"))
print(a)

b = int(bytearray("-0F1", "utf-8"),16)
print(b)

輸出結果如下:

-16
-241

int函數用于用戶對象中

如果用戶對象x中定義了__int__()函數,則int(x)返回x.__int__()的值;如果對象x中定義了__trunc__()函數,則int(x)返回x.__trunc__()的值。

class MySite:
    age = 0

    def __int__(self):
        print('調用了__int__()函數:')
        return self.age

    def __trunc__(self):
        print('調用了__trunc__()函數:')
        return self.age

x = MySite()
x.age = 13
print(int(x))

輸出結果如下:

調用了__int__()函數:
13

如果把__int__()的定義刪除掉或注釋掉后,輸出的結果如下:

調用了__trunc__()函數:
13

__int__()__trunc__()兩個函數的定義都刪除掉或注釋掉后的輸出結果如下:

Traceback (most recent call last):
  File "D:/01Lesson/PY/int.py", line 34, in <module>
    print(int(x))
TypeError: int() argument must be a string, a bytes-like object or a number, not 'MySite'

在Python 3.4版本增加了__index__()函數,如果對象中未定義__int__()函數,則調用__index__()函數。

在Python 3.6版中,int()函數增加了對以下劃線“_” 進行分組數字的支持:

>>> int(123_1234)
1231234
>>> int('123_1234')
1231234
>>> int('123_1234', 8)
340636

在Python 3.7版本中,x變成位置參數,即不能使用等號=進行賦值,即 x = 23這種使用方法不再被允許。

總結

Python中int()函數是一個內置函數,其作用:

(1)x的取值可以是數值型數據,數字字符串或字節數據(bytes)或字節數組數據(bytearray)

(2)x取整數值時,直接返回其本身;

(3)x為浮點數時,截取整數部分;

(4)x為數字字符串時,在未指定base參數時,默認對字符串中的每個字符按10進制進行解釋,并將其轉換成10進制數;在指定base時,使用以base為基進行解釋字符串中的字符;base的有效取值為2~36,或0。base以n為基時,其有效數位為0~n-1,超出9時,分別使用a到z(或A到Z)字母表示對應的數碼位。

(5)在base取2,8,16時,字符串表示的數字可以加前綴'0b/0B','0o/0O','0x/0X';

(6)在x取值為數值型數據時,不能同時使用base參數;只有x為字符串或字節數據或字節數組數據時,才能使用base采納數;

(7)int()函數按照base指定的進制無法解釋x中的字符時,將引發ValueError錯誤。

(8)在用戶定義對象中,int(x)將按照__int__(),__index__()、__trunc__()的順序查找定義,如無任何定義,則引發TypeError異常。

以上內容參照了官方的相關文檔及網絡中的其它文章總結而寫。

上一篇:Python chr()函數

下一篇:Python rsplit()函數

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品av久久久久久网址 | 免费三级大片 | 国产美女爽到喷白浆的 | 亚洲最大中文字幕 | 91久久91久久精品免观看 | 日韩黄色片免费看 | jizzjizz中国少妇中文 | 精品在线观看一区 | 91在线色| www.48xx.com| 国产精品成人亚洲一区二区 | 精品国产91久久久 | 黑人一区二区三区四区五区 | 手机免费看一级片 | 黄色片网站在线看 | 特色一级黄色片 | 国产亚洲精品视频中文字幕 | 日韩精品中文字幕在线观看 | 天天看天天摸天天操 | a视频在线免费观看 | 97色在线观看免费视频 | 黄色毛片观看 | 精品国产一区二 | av电影网在线观看 | 国产精品久久久久久影院8一贰佰 | av之家在线观看 | h网站在线观看 | 久久精品电影网 | 国产一区二区三区黄 | 国产黄色一区二区 | 国产毛片毛片毛片 | 中文字幕在线观看视频一区 | 成人视屏在线观看 | 欧美一级淫片007 | 亚洲黑人在线观看 | 亚洲第一视频 | 久草在线播放视频 | 国内精品伊人久久久久网站 | 中文字幕欧美专区 | 欧美日韩色片 | 日韩蜜桃视频 |