国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 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()函數

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广平县| 咸阳市| 嵊州市| 揭阳市| 新昌县| 泾阳县| 黎城县| 黑山县| 安达市| 慈溪市| 武义县| 浦县| 宁都县| 元氏县| 塘沽区| 布拖县| 乡宁县| 广宗县| 遵义县| 中西区| 伊川县| 虞城县| 龙口市| 桃园市| 六盘水市| 东港市| 股票| 碌曲县| 武汉市| 泰来县| 柞水县| 芷江| 邢台县| 慈利县| 襄城县| 古浪县| 安岳县| 繁峙县| 电白县| 淳化县| 穆棱市|