如何在循环中反转字符串

Posted

技术标签:

【中文标题】如何在循环中反转字符串【英文标题】: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)直接将十进制转换为二进制数 【参考方案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))

【讨论】:

以上是关于如何在循环中反转字符串的主要内容,如果未能解决你的问题,请参考以下文章

使用循环在Python中反转字符串? [复制]

在python IndexError中使用for循环反转字符串:字符串索引超出范围[重复]

如何使用交换函数和指针反转字符串数组? (C++)

如何在solidity中反转uint的数字?

在python中反转字符串中的子字符串

43左旋转字符串+三步反转法