int(x[base]) 是如何工作的?

How does int(x[,base]) work?

以下代码的输出是:

int("12", 5) 
O/P: 7

int("0", 5)
O/P: 0

int("10", 2)
O/P: 2

我无法理解这一点。在 Python 文档中它说:“[ base]”部分是可选的,即它可能需要一个或两个参数。

第一个参数必须是一个字符串,引号内有一个 int 值。

int 函数返回字符串,就好像它在基 "base" 中表示一样。例如,以 2 为底数(二进制)的 10 是以 10 为底数(十进制)的 2。以 5 为基数的 12 是 1*5^1 + 2*5^0 = 7。

这里的 base 是我们必须将第一个参数关联到的数字系统。就像如果数字系统是二进制的,那么“10”表示十进制的 2。同样,如果“10”与数字系统三进制表示十进制中的 3,依此类推。有关更多详细信息,请研究数字系统以及数字系统之间的转换如何工作。顺便说一句,我们人类非常了解十进制数系统(0-9),而计算机了解二进制数系统。

int(string, base) 接受 任意 基数。您可能熟悉二进制和十六进制,也许还熟悉八进制;这些只是在不同的基础上记录整数的方法:

  • 二进制表示以 2 为基数的数字(0 和 1)
  • 八进制表示以 8 为基数的数字(0、1、2、3、4、5、6 和 7)
  • 小数是日常生活中用来谈论整数的小数,它是以 10 为底数(0 到 9)。
  • 十六进制以 16 为底(0 到 9,然后是 A、B、C、D、E、F)。

每个基数决定了符号中每个 'position' 可以取多少个值。在十进制中,我们数到 9,然后加一个位置来数 'tens',因此 10 表示 1 乘以 10,0 乘以 1。数到 99 之后,你再加上第三个数字,等等。在二进制中只有两位数,所以在 1 之后你数到 10,即 乘以二,然后是零乘以 ,在 11 之后,您数到 100.

base参数只是整数的底数,不限于2、8、10或16。底数为5表示数字用0到4的数字表示。十进制数10将 20 以 5 为基数,例如(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("12",5),这意味着 (12) 以 5 为底,我们要求将它转换为十进制数。即,以 10 为基数。

所以,简单的规则是

(12)base 5 = 1*(5 ^ 1) + 2*(5 ^ 0)
           = 5 + 2
           = 7

可以从任何其他基地进行类似的转换。

int(string, [base]) 函数将给定的字符串转换为十进制数,这里的基数是可选的,你可以给任何数字,一些例子是

  • 2 = 二进制数
  • 8 = 八进制数
  • 10 = 十进制数
  • 16 = 十六进制数

但请注意,您提供的字符串应该是该基数中的数字。例如:不能写 int("45",2) 因为二进制数中没有 4 和 5,可以写 int("1011",2)。 在你的情况下,

  int("12",5) => 1*(5 ^ 1) + 2*(5 ^ 0) = 7
  int("0",5) => 0*(5 ^ 0) = 0
  int("10", 2) => 1*(2 ^ 1) + 0*(2 ^ 0) = 2