Python实现整数多进制转换并按指定格式输出的技术问询
解决Python多进制格式化输出的问题
我来帮你搞定这个整数多进制格式化输出的需求!给定整数n,我们要为1到n之间的每个整数i,按顺序输出十进制(Decimal)、八进制(Octal)、大写十六进制(Hexadecimal)、二进制(Binary),四个值要放在同一行,而且每个值都得根据n的二进制表示的宽度来补空格对齐。
先看看你原来的代码,还在手动计算八进制的余数拼接,其实Python有内置的格式化方法,能轻松搞定转换和对齐,不用这么麻烦!
完整解决方案代码
def print_formatted(number): # 计算对齐所需的宽度:取n的二进制表示的位数(去掉bin()返回的'0b'前缀) width = len(bin(number)) - 2 for i in range(1, number + 1): # 分别格式化四个进制,按宽度自动补空格对齐 decimal = f"{i:{width}d}" octal = f"{i:{width}o}" hex_upper = f"{i:{width}X}" binary = f"{i:{width}b}" # 打印在同一行,用空格分隔 print(f"{decimal} {octal} {hex_upper} {binary}")
代码关键点解释
- 宽度计算:
len(bin(number)) - 2是核心,因为bin(n)返回的字符串是'0bxxxx'格式,减去前缀的2个字符,就能得到n的二进制实际位数,这个位数就是我们需要的统一宽度。比如n=10,二进制是1010,长度是4,所以每个输出值都占4位,不够的前面补空格。 - 格式化字符串用法:
{i:{width}d}:把整数i格式化为十进制,占width位,不足补空格{i:{width}o}:格式化为八进制{i:{width}X}:格式化为大写十六进制(小写用x){i:{width}b}:格式化为二进制
测试示例
调用print_formatted(10),输出会是这样整齐对齐的结果:
1 1 1 1 2 2 2 10 3 3 3 11 4 4 4 100 5 5 5 101 6 6 6 110 7 7 7 111 8 10 8 1000 9 11 9 1001 10 12 A 1010
这样是不是比手动计算余数拼接字符串方便多了?Python的格式化字符串真的很省心~
内容的提问来源于stack exchange,提问作者Shayan
相关产品推荐
相关产品推荐

