如何在循环中反转字符串 解决Python十进制转二进制结果逆序问题
问题原因
- 单字符反转无效:你每次循环生成的
x是长度为1的字符串,对单个字符执行x[::-1]不会有任何变化,你并没有把所有余数拼接后统一反转。 - 单次打印自动换行:Python的
print()函数默认会在输出末尾加换行符,每次循环单独打印单个余数自然会竖向展示。
修正后代码
num = int(input("Enter a number: ")) bin_str = "" while num > 0: remainder = num % 2 num = num // 2 # 把当前余数拼接到结果字符串末尾 bin_str += str(remainder) # 循环结束后统一反转整个字符串,得到正确的二进制顺序,一次性输出 print(bin_str[::-1])
如果需要兼容输入为0的场景,可以加上边界判断:
num = int(input("Enter a number: ")) if num == 0: print("0") else: bin_str = "" while num > 0: remainder = num % 2 num = num // 2 bin_str += str(remainder) print(bin_str[::-1])
验证说明
输入19时,循环过程中拼接得到的bin_str是11001,反转后得到10011,和十进制19对应的正确二进制值一致,且只会输出一行内容。
内容的提问来源于stack exchange,提问作者nutella1555
相关产品推荐
相关产品推荐

