【问题标题】:How to Reverse A String in a loop如何在循环中反转字符串
【发布时间】:2021-12-04 23:14:14
【问题描述】:

我正在编写一个程序来使用重复除法将十进制数转换为二进制数。我只是无法反转最终答案(即变量“x”)。

num = int(input("Enter a number: "))

    remainder = 0
    while num > 0: 
        remainder = num%2
        num = num//2
        x = str(remainder) 
        #print(reversed(x))
    
        print(x[::-1])

num = 19 的输出

1
1
0
0
1

这与实际答案相反,即十进制 19 的 10011。 另外,我怎样才能把答案全部放在一行中,所以它不是垂直写的

【问题讨论】:

  • 您也可以使用bin(num)直接将十进制转换为二进制数

标签: python string loops for-loop if-statement


【解决方案1】:

您可以通过以下方式删除 print 之后的换行符:

print(x[::-1], end='')

【讨论】:

    【解决方案2】:
    num = int(input("Enter a number: "))
    
    s = ''
    remainder = 0
    while num > 0:
        remainder = num%2
        num = num//2
        s += str(remainder)
    
    print(s[::-1])
    

    您正在反转单个数字,即“1”、“0”而不是整个最终字符串。显然,反转长度为 1 的字符串不会做任何事情。

    替代方案:

    num = int(input("Enter a number: "))
    
    s = ''
    while num:
        bit = num & 1
        s += str(bit)
        num >>= 1
    
    print(s[::-1])
    

    或者简单地说:

    print(bin(int(input("Enter a number: "))))
    

    【讨论】:

      【解决方案3】:

      您只是在循环中一次打印一个二进制数,当它们像这样一个接一个地打印时,您不能中继反向。

      您可以改为将二进制元素插入到这样的列表中

      num = 19
      
      remainder = 0
      binary = []
      while num > 0: 
          remainder = num%2
          num = num//2
          binary.insert(0,str(remainder))
      
      print("".join(binary))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-07
        • 1970-01-01
        • 2016-03-07
        • 2021-10-28
        • 1970-01-01
        • 2018-07-29
        • 2018-06-13
        • 2017-05-10
        相关资源
        最近更新 更多