Python数字格式化输出问题:如何实现二进制列的空格对齐?
解决多进制输出的对齐问题
你的代码已经能正确输出各进制数值,要实现列对齐,核心是统一所有列的宽度,以最大数n的二进制位数作为基准宽度即可:
def print_formatted(n): # 计算最大数的二进制位数(去掉bin()返回的'0b'前缀) width = len(bin(n)) - 2 for i in range(1, n+1): # 按统一宽度右对齐输出各进制值,十六进制转大写更贴合示例样式 print(f"{i:>{width}} {oct(i)[2:]:>{width}} {hex(i)[2:].upper():>{width}} {bin(i)[2:]:>{width}}") if __name__ == '__main__': n = int(input()) print_formatted(n)
关键说明:
width = len(bin(n)) - 2:获取n的二进制字符串长度(去掉0b前缀),这是所有列需要对齐的基准宽度f"{i:>{width}}":用格式化字符串实现右对齐,>表示右对齐,width指定宽度,不足的位置会自动补空格- 十六进制转大写(
.upper())是为了和示例里的样式一致,不需要的话可以去掉这个方法
内容的提问来源于stack exchange,提问作者Arjun Hooda
相关产品推荐
相关产品推荐

