次のコードの出力は次のとおりです。
int("12", 5)
O/P: 7
int("0", 5)
O/P: 0
int("10", 2)
O/P: 2
私はこれを理解することはできません。Python のドキュメントには次のように書かれています: "[, base]" の部分はオプションです。つまり、1 つまたは 2 つの引数を取る場合があります。
最初の引数は、必ず引用符内に int 値を持つ文字列にする必要があります。
次のコードの出力は次のとおりです。
int("12", 5)
O/P: 7
int("0", 5)
O/P: 0
int("10", 2)
O/P: 2
私はこれを理解することはできません。Python のドキュメントには次のように書かれています: "[, base]" の部分はオプションです。つまり、1 つまたは 2 つの引数を取る場合があります。
最初の引数は、必ず引用符内に int 値を持つ文字列にする必要があります。
int(string, base)
任意のベースを受け入れます。おそらく、2 進法と 16 進法、そしておそらく 8 進法に精通しているでしょう。これらは、さまざまな基数で整数を表記する方法にすぎません。
各基数は、表記の各「位置」が取り得る値の数を決定します。10 進数では、9 まで数えてから、10 を数える位置を追加します。つまり、110
かける 10、0 かける 1を意味します。99 を超えて数えると、3 桁目が追加されます。2 進数では 2 桁しかないため、1かける2 と 0 かける 1まで数えた後、そして まで数えた後です。1
10
11
100
base
引数は整数の基数であり、2、8、10、または 16 に限定されません。基数 5 は、数値が 0 から 4 までの数字を使用して表現されることを意味します。10 進数の 10 は基数 5 になります。たとえば20
、(2回 5)。
int(string, 5)
次に、文字列を 5 進数として解釈し、その値を反映する Python 整数を生成します。
>>> int('13', 5) # one time 5, 3 times 1 == 8
8
>>> int('123', 5) # one time 5**2 (25), 2 times 5, 3 times 1 == 38
38
基数 5 の数字を指定する必要がある場合は、おそらくpentalと呼ばれます。
int 関数は、ベース「base」で表されているかのように文字列を返しています。たとえば、基数 2 (バイナリ) の 10 は基数 10 (10 進数) の 2 です。基数 5 の 12 は 1*5^1 + 2*5^0 = 7 です。
ここで base は、最初の引数を関連付ける必要がある数体系です。数体系が 2 進数の場合と同様に、「10」は 10 進数で 2 を意味します。同様に、数体系の 3 進法の「10」は 10 進法の 3 を意味します。詳細については、数体系と数体系間の変換のしくみについて学習します。ところで、私たち人間は 10 進数 (0 ~ 9) をよく理解していますが、コンピューターは 2 進数を理解しています。
この事実は次のように説明できます:
関数呼び出しがint("12",5)
であるとします。これは、(12) が基数 5 であり、それを 10 進数に変換するように要求していることを意味します。つまり、基数 10 の数値に変換します。
というわけで、簡単なルールは
(12)base 5 = 1*(5 ^ 1) + 2*(5 ^ 0)
= 5 + 2
= 7
他のベースからも同様の変換を行うことができます。