如何在循环中反转字符串
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))
【讨论】:
以上是关于如何在循环中反转字符串的主要内容,如果未能解决你的问题,请参考以下文章