【问题标题】:How does int(x[,base]) work?int(x[,base]) 是如何工作的?
【发布时间】:2016-02-13 08:45:08
【问题描述】:

以下代码的输出是:

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

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

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

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

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

【问题讨论】:

  • 你知道“base”是什么意思in this sense吗?
  • 哦哦哦哦哦。我明白了:P
  • 它是数制的基础。数字系统可以有任何基础。如果你不明白它是如何工作的,那么你需要阅读我链接到的维基百科文章。
  • @ManshiSanghai:你知道二进制是什么意思吗?你明白为什么十六进制是以 16 为底的吗?
  • 我很困惑。我在 python 2.7 和 3.4 中都尝试了这些转换,并从 OP 获得了不同的答案。对于第一个例子,如果使用底数 5,底数 5 中的 2 仍然是 2。“7”是从哪里来的?

标签: python python-3.x int output number-systems


【解决方案1】:

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)。

每个基数决定符号中每个“位置”可以取多少值。在十进制中,我们最多数到 9,然后添加一个位置来计算“十”,所以10 的意思是一乘十,零乘一。数到 99 后,您会添加第三位,等等。在二进制中只有两位数,所以在 1 之后,您数到 10,这是一乘二,零乘一 ,在11 之后,你会一直数到100

base 参数只是整数基数,不限于 2、8、10 或 16。基数 5 表示使用数字 0 到 4 表示的数字。十进制数 10 将是 @987654328 @ 以 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

【讨论】:

    【解决方案2】:

    int(string, [base])函数将给定的字符串转换为十进制数,这里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
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          这个事实可以解释如下:
          假设我们的函数调用是int("12",5),这意味着(12)是以5为底的,我们要求将其转换为十进制数。即,以 10 为基数。

          所以,简单的规则是

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-01-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-08
            • 1970-01-01
            相关资源
            最近更新 更多