【Python】int 関数の使い方と実行結果

Python の組み込み関数 intイント の使い方です。

int 関数で、『数値すうち文字列もじれつ、バイトれつ』を『整数せいすう (intイント)』に変換します。

それらのコード例と、実行結果を載せました。

あと、『エラーになったコード例』も書きました。

エラーになったコード例

int 関数で、エラーになったコードれいです。

int(None) # None
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
int(complex(3, 4)) # (3+4j)
TypeError: can't convert complex to int
int(()) # () 空のタプル
TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'
int([]) # [] 空のリスト
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
int(set()) # set() 空の集合
TypeError: int() argument must be a string, a bytes-like object or a number, not 'set'
int({}) # {} 空の辞書
TypeError: int() argument must be a string, a bytes-like object or a number, not 'dict'
int(lambda x: x) # <function <lambda> at 0x0000000000000000>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'function'
int(range(0, 1)) # range(0, 1)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'range'
import datetime
int(datetime.datetime.max) # datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.datetime'
import datetime
int(datetime.timedelta.max) # datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.timedelta'
int('1', base=37)
ValueError: int() base must be >= 2 and <= 36, or 0

int([x])

『数値』を整数せいすう (intイント) に変換します。

引数無しの結果

int 関数を、引数ひきすう無しで呼び出した結果です。

(Python) class int([x])

int() # 引数無し
0

組み込み定数を渡した結果

int 関数に、組み込み定数を渡した結果です。

(Python) class int([x])

(Python) False

(Python) True

int(False) # False
0
int(True) # True
1

int を渡した結果

int 関数に、intイント整数せいすう)を渡した結果です。

int 型イントがたの数値の書き方は(整数リテラルは)、普通の 10 進数じゅっしんすうで書くこともできましたし、接頭辞せっとうじを付けて、2 進数にしんすう8 進数はっしんすう16 進数じゅうろくしんすうの表現で書くこともできました。

もちろん、どの表現でも、そのままで int 型イントがたの数値として使うことができました。

なので、整数リテラルを改めて int 関数に渡しても、意味はなかったです。

(Python) class int([x])

(Python) 整数リテラル (Integer literals)

10 進数の場合です。

int(0) # 0
0
int(1) # 1
1
int(-1) # -1
-1
int(15) # 15
15
int(-15) # -15
-15

2 進数の場合です。

int(0b1111) # 15
15
int(-0b1111) # -15
-15

8 進数の場合です。

int(0o17) # 15
15
int(-0o17) # -15
-15

16 進数の場合です。

int(0xf) # 15
15
int(-0xf) # -15
-15

float を渡した結果

int 関数に、floatフロート浮動小数点数ふどうしょうすうてんすう)を渡した結果です。

無限大むげんだい (inf, -inf) と非数ひすう (nanナン, not-a-number) は、int 型に変換することができませんでした。

(Python) class int([x])

(Python) class float([x])

(Python) 浮動小数点数ふどうしょうすうてんすうリテラル (Floating point literals)

int(0.0) # 0.0
0
int(-0.0) # -0.0
0
int(0.1) # 0.1
0
int(-0.1) # -0.1
0
int(1.0) # 1.0
1
int(-1.0) # -1.0
-1
int(2.561e2) # 256.1
256
int(-2.561e2) # -256.1
-256
int(2.561e-2) # 0.02561
0
int(float('inf')) # inf
OverflowError: cannot convert float infinity to integer
int(float('-inf')) # -inf
OverflowError: cannot convert float infinity to integer
int(float('nan')) # nan
ValueError: cannot convert float NaN to integer

Decimal を渡した結果

int 関数に、Decimal 型デシマルがた十進数型じゅっしんすうがた)を渡した結果です。

無限大むげんだい (inf, -inf) と非数ひすう (nan (NaN), signaling nan (sNaN)) は、int 型に変換することができませんでした。

(Python) class int([x])

(Python) class decimal.Decimal(value="0", context=None)

from decimal import Decimal
int(Decimal(0.0)) # Decimal('0')
0
from decimal import Decimal
int(Decimal(-0.0)) # Decimal('-0')
0
from decimal import Decimal
int(Decimal(0.1)) # Decimal('0.1000000000000000055511151231257827021181583404541015625')
0
from decimal import Decimal
int(Decimal(-0.1)) # Decimal('-0.1000000000000000055511151231257827021181583404541015625')
0
from decimal import Decimal
int(Decimal(1)) # Decimal('1')
1
from decimal import Decimal
int(Decimal(-1)) # Decimal('-1')
-1
from decimal import Decimal
int(Decimal(2.561e2)) # Decimal('256.1000000000000227373675443232059478759765625')
256
from decimal import Decimal
int(Decimal(-2.561e2)) # Decimal('-256.1000000000000227373675443232059478759765625')
-256
from decimal import Decimal
int(Decimal(2.561e-2)) # Decimal('0.025610000000000000819344592173365526832640171051025390625')
0
from decimal import Decimal
int(Decimal('inf')) # Decimal('Infinity')
OverflowError: cannot convert Infinity to integer
from decimal import Decimal
int(Decimal('-inf')) # Decimal('-Infinity')
OverflowError: cannot convert Infinity to integer
from decimal import Decimal
int(Decimal('nan')) # Decimal('NaN')
ValueError: cannot convert NaN to integer
from decimal import Decimal
int(Decimal('snan')) # Decimal('sNaN')
ValueError: cannot convert NaN to integer

int(x, base=10)

『文字列』または『バイト列 (bytes, bytearray)』を、整数せいすう (intイント) に変換します。

int 関数に、『文字列』か『バイト列』で書かれた『2 進数から 36 進数までの表現』を渡したら、int 型の数値に変換することができました。

str を渡した結果

int 関数に、strエスティーアール(文字列)を渡した結果です。

(Python) class int(x, base=10)

(Python) class str(object='')

10 進数 (base=10)

文字列を 10 進数とみなして、int 型の数値に変換します。

int('')
ValueError: invalid literal for int() with base 10: ''
int('-1')
-1
int('-1', base=0)
-1
int('0')
0
int('0', base=0)
0
int('0b0')
ValueError: invalid literal for int() with base 10: '0b0'
int('0o0')
ValueError: invalid literal for int() with base 10: '0o0'
int('0x0')
ValueError: invalid literal for int() with base 10: '0x0'
int('1')
1
int('1', base=0)
1
int('01')
1
int('01', base=0)
ValueError: invalid literal for int() with base 0: '01'
int('-1.2')
ValueError: invalid literal for int() with base 10: '-1.2'
int('035')
35
int('035', base=0)
ValueError: invalid literal for int() with base 0: '035'

2 進数 (base=2)

文字列を 2 進数とみなして、int 型の数値に変換します。

int('-1', base=2)
-1
int('-0b1', base=2)
-1
int('0', base=2)
0
int('0b0', base=2)
0
int('1', base=2)
1
int('0b1', base=2)
1
int('10', base=2)
2
int('0b10', base=2)
2
int('2', base=2)
ValueError: invalid literal for int() with base 2: '2'
int('100011', base=2)
35
int('0b100011', base=2)
35

8 進数 (base=8)

文字列を 8 進数とみなして、int 型の数値に変換します。

int('-1', base=8)
-1
int('-0o1', base=8)
-1
int('0', base=8)
0
int('0o0', base=8)
0
int('1', base=8)
1
int('0o1', base=8)
1
int('10', base=8)
8
int('0o10', base=8)
8
int('8', base=8)
ValueError: invalid literal for int() with base 8: '8'
int('43', base=8)
35
int('0o43', base=8)
35

16 進数 (base=16)

文字列を 16 進数とみなして、int 型の数値に変換します。

int('-1', base=16)
-1
int('-0x1', base=16)
-1
int('0', base=16)
0
int('0x0', base=16)
0
int('1', base=16)
1
int('0x1', base=16)
1
int('f', base=16)
15
int('0xf', base=16)
15
int('10', base=16)
16
int('0x10', base=16)
16
int('23', base=16)
35
int('0x23', base=16)
35

36 進数 (base=36)

文字列を 36 進数とみなして、int 型の数値に変換します。

int('-1', base=36)
-1
int('0', base=36)
0
int('1', base=36)
1
int('f', base=36)
15
int('g', base=36)
16
int('z', base=36)
35
int('10', base=36)
36
int('11', base=36)
37

『UNICODE コードポイント』と『バイト列』を求める方法

文字列としての『英数字 (str)』から、『UNICODE コードポイント (int)』と『バイト列 (bytes)』を求める方法です。

ordオード 関数と bytesバイツ 関数で、変換することができました。

(Python) ord(c)

(Python) class bytes([source[, encoding[, errors]]])

  • ord('0') -> 48 -> bytes([48]) -> b'0' (= b'\x30' )
  • ord('1') -> 49 -> bytes([49]) -> b'1' (= b'\x31' )
  • ord('a') -> 97 -> bytes([97]) -> b'a' (= b'\x61' )
  • ord('b') -> 98 -> bytes([98]) -> b'b' (= b'\x62' )
  • ord('f') -> 102 -> bytes([102]) -> b'f' (= b'\x66' )
  • ord('g') -> 103 -> bytes([103]) -> b'g' (= b'\x67' )
  • ord('o') -> 111 -> bytes([111]) -> b'o' (= b'\x6f' )
  • ord('x') -> 120 -> bytes([120]) -> b'x' (= b'\x78' )
  • ord('z') -> 122 -> bytes([122]) -> b'z' (= b'\x7a' )

bytes を渡した結果

int 関数に、bytesバイツ(バイト列)を渡した結果です。

(Python) class int(x, base=10)

(Python) class bytes([source[, encoding[, errors]]])

10 進数 (base=10)

バイト列を 10 進数とみなして、int 型の数値に変換します。

int(b'')
ValueError: invalid literal for int() with base 10: b''
int(b'-1')
-1
int(b'-1', base=0)
-1
int(b'0')
0
int(b'0', base=0)
0
int(b'0b0')
ValueError: invalid literal for int() with base 10: b'0b0'
int(b'0o0')
ValueError: invalid literal for int() with base 10: b'0o0'
int(b'0x0')
ValueError: invalid literal for int() with base 10: b'0x0'
int(b'1')
1
int(b'1', base=0)
1
int(b'01')
1
int(b'01', base=0)
ValueError: invalid literal for int() with base 0: b'01'
int(b'-1.2')
ValueError: invalid literal for int() with base 10: b'-1.2'
int(b'035')
35
int(b'035', base=0)
ValueError: invalid literal for int() with base 0: b'035'
int(b'35')
35
int(b'\x33\x35') # b'35'
35

2 進数 (base=2)

バイト列を 2 進数とみなして、int 型の数値に変換します。

int(b'-1', base=2)
-1
int(b'-0b1', base=2)
-1
int(b'0', base=2)
0
int(b'0b0', base=2)
0
int(b'1', base=2)
1
int(b'0b1', base=2)
1
int(b'10', base=2)
2
int(b'0b10', base=2)
2
int(b'2', base=2)
ValueError: invalid literal for int() with base 2: b'2'
int(b'100011', base=2)
35
int(b'0b100011', base=2)
35
int(b'\x31\x30\x30\x30\x31\x31', base=2) # b'100011'
35
int(b'\x30\x62\x31\x30\x30\x30\x31\x31', base=2) # b'0b100011'
35

8 進数 (base=8)

バイト列を 8 進数とみなして、int 型の数値に変換します。

int(b'-1', base=8)
-1
int(b'-0o1', base=8)
-1
int(b'0', base=8)
0
int(b'0o0', base=8)
0
int(b'1', base=8)
1
int(b'0o1', base=8)
1
int(b'10', base=8)
8
int(b'0o10', base=8)
8
int(b'8', base=8)
ValueError: invalid literal for int() with base 8: b'8'
int(b'43', base=8)
35
int(b'0o43', base=8)
35
int(b'\x34\x33', base=8) # b'43'
35
int(b'\x30\x6f\x34\x33', base=8) # b'0o43'
35

16 進数 (base=16)

バイト列を 16 進数とみなして、int 型の数値に変換します。

int(b'-1', base=16)
-1
int(b'-0x1', base=16)
-1
int(b'0', base=16)
0
int(b'0x0', base=16)
0
int(b'1', base=16)
1
int(b'0x1', base=16)
1
int(b'f', base=16)
15
int(b'0xf', base=16)
15
int(b'10', base=16)
16
int(b'0x10', base=16)
16
int(b'23', base=16)
35
int(b'0x23', base=16)
35
int(b'\x32\x33', base=16) # b'23'
35
int(b'\x30\x78\x32\x33', base=16) # b'0x23'
35

36 進数 (base=36)

バイト列を 36 進数とみなして、int 型の数値に変換します。

int(b'-1', base=36)
-1
int(b'0', base=36)
0
int(b'1', base=36)
1
int(b'f', base=36)
15
int(b'g', base=36)
16
int(b'z', base=36)
35
int(b'10', base=36)
36
int(b'11', base=36)
37
int(b'zz', base=36)
1295
int(b'\x7a\x7a', base=36) # b'zz'
1295

bytearray を渡した結果

int 関数に、bytearrayバイトアレイ(バイト列)を渡した結果です。

(Python) class int(x, base=10)

(Python) class bytearray([source[, encoding[, errors]]])

int(bytearray())
ValueError: invalid literal for int() with base 10: b''
int(bytearray((51, 53))) # bytearray(b'35')
35
int(bytearray(b'35'))
35
int(bytearray(b'35'), base=0)
35
int(bytearray((49, 48, 48, 48, 49, 49)), base=2) # bytearray(b'100011')
35
int(bytearray(b'100011'), base=2)
35
int(bytearray(b'0b100011'), base=2)
35
int(bytearray((52, 51)), base=8) # bytearray(b'43')
35
int(bytearray(b'43'), base=8)
35
int(bytearray(b'0o43'), base=8)
35
int(bytearray((50, 51)), base=16) # bytearray(b'23')
35
int(bytearray(b'23'), base=16)
35
int(bytearray(b'0x23'), base=16)
35
int(bytearray((122,)), base=36) # bytearray(b'z')
35
int(bytearray(b'z'), base=36)
35

以上です。

スポンサーリンク
Python評価
シェアする(押すとSNS投稿用の『編集ページ』に移動します)
フォローする(RSSフィードに移動します)
スポンサーリンク
シラベルノート
タイトルとURLをコピーしました