以下代码的输出是:
int("12", 5)
O/P: 7
int("0", 5)
O/P: 0
int("10", 2)
O/P: 2
我无法理解这一点。从 Python 文档中它说:“[, base]”部分是可选的,即它可能需要一个或两个参数。
第一个参数必须是一个字符串,在引号内有一个 int 值。
以下代码的输出是:
int("12", 5)
O/P: 7
int("0", 5)
O/P: 0
int("10", 2)
O/P: 2
我无法理解这一点。从 Python 文档中它说:“[, base]”部分是可选的,即它可能需要一个或两个参数。
第一个参数必须是一个字符串,在引号内有一个 int 值。
int(string, base)
接受任意基数。您可能熟悉二进制和十六进制,也许还熟悉八进制;这些只是在不同基数中记录整数的方法:
每个基数确定符号中每个“位置”可以取多少值。在十进制中,我们最多数到 9,然后添加一个位置来计算“十”,因此10
意味着一乘十,零乘一。数到 99 后,您会添加第三个数字,等等。在二进制中只有两位数,因此在1
您数到之后10
,即1 乘以 2,0 乘以 1,并且在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(string, [base])
函数将给定的字符串转换为十进制数,这里 base 是可选的,你可以给出任何数字,一些例子是
但请注意,您给出的字符串应该是该基数中的数字。例如:您不能写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
int 函数返回字符串,就好像它在基础“base”中表示一样。例如,以 2 为底(二进制)的 10 是以 10 为底的 2(十进制)。以 5 为底的 12 是 1*5^1 + 2*5^0 = 7。
这里 base 是我们必须将第一个参数关联到的数字系统。就像数字系统是二进制一样,“10”表示十进制的 2。同样,如果数字系统三进制的“10”在十进制中表示 3,依此类推。有关更多详细信息,请研究有关数字系统以及数字系统之间的转换如何工作。顺便说一句,我们人类非常了解十进制数系统(0-9),而计算机则了解二进制数系统。
这个事实可以解释如下:
假设我们的函数调用是int("12",5)
,这意味着 (12) 以 5 为底,我们要求将其转换为十进制数。即,以 10 为基数。
所以,简单的规则是
(12)base 5 = 1*(5 ^ 1) + 2*(5 ^ 0)
= 5 + 2
= 7
可以从任何其他基础进行类似的转换。