【问题标题】:Converting binary number to decimal useing string使用字符串将二进制数转换为十进制
【发布时间】:2020-01-15 18:16:34
【问题描述】:

我试着写了一个简单的函数,它的输入是字符串格式的二进制数,并将二进制转换为十进制。但是在输出中我总是得到错误的东西:第 3 行中的“res”值,无论输入是什么(“1010”、“10010111010”等)。另外,我尝试调试代码并且该函数甚至没有启动循环,就好像它不存在一样......所以,我只是没有看到我的错误

def bin_to_dec(bin):

    bin = bin[::-1]
    res = 0

    for i in range(len(bin)):
        if bin[i] == 0:
            res += 2**i

    return res

【问题讨论】:

  • @Laif 你为什么这么说?
  • 您在我写评论时添加了一些内容。显然,他的 OP 正在做基础算术,所以几乎可以肯定求幂是他们想要和需要的。

标签: python python-3.x function


【解决方案1】:

您将字符串 "0" 与数字 0 进行比较,但它们通常不相等。

所以,与你所说的相反,循环实际上是循环的;但if 声明永远不会是真的。

当然,你可能应该在数字为 1 时添加,而不是在数字为 0 时添加。

def bin_to_dec(bin):
    bin = bin[::-1]
    res = 0
    for i in range(len(bin)):
        if int(bin[i]) == 1:
            res += 2**i
    return res

注意添加了int()

【讨论】:

    【解决方案2】:
    if bin[i] == '1'
    

    这将解决问题。 bin[i] 是一个字符,您将它与一个总是导致错误的数字进行比较。

    【讨论】:

      【解决方案3】:

      你可以只使用内置的 int 函数:

      def binaryToDecimal(n): 
          return int(n,2) 
      

      【讨论】:

        猜你喜欢
        • 2013-11-24
        • 1970-01-01
        • 2019-08-23
        • 1970-01-01
        • 1970-01-01
        • 2012-10-05
        • 2014-11-07
        • 2015-06-14
        相关资源
        最近更新 更多