Python format()用于打印十进制,八位,十六进制和二进制值

问题描述 投票:-1回答:4

我想在python中使用.format()我希望打印

带有空格填充的1到N,以便所有字段的宽度都与二进制值相同。

以下是我到目前为止所尝试的内容

n=int(input()) 
width = len("{0:b}".format(n)) 
for num in range(1,n+1):
    print ('  '.join(map(str,(num,oct(num).replace('0o',''),hex(num).replace('0x',''),bin(num).replace('0b','')))))

我不知道如何在这里正确使用.format()功能。请帮助

python binary format hex
4个回答
3
投票

下面的代码查找所有十六进制,二进制,八进制和十进制值

n = int(input())
w = len("{0:b}".format(n))
for i in range(1,n+1):
  print ("{0:{width}d} {0:{width}o} {0:{width}x} {0:{width}b}".format(i, width=w))

1
投票

请查看https://docs.python.org/2/library/stdtypes.html#string-formatting,其中描述了转换标志和转换类型。

例如,使用长度width以八进制格式化数字的部分如下所示:

'{0:{w}o}'.format(n, w=width)

这将首先创建一个格式化的字符串,看起来像这个{0:4o}(宽度= 4),然后创建最后的字符串。


0
投票

下面的代码使用格式函数打印十进制,八位,十六进制和二进制值,仅指定宽度

width = len('{:b}'.format(number))
for i in range(1,number+1):
    print(str.rjust(str(i),width),str.rjust(str(oct(i)[2:]),width),str.rjust(str(hex(i).upper()[2:]),width),str.rjust(str(bin(i)[2:]),width))

0
投票

the simplest one.

def print_formatted(number):
width=len(bin(number)[2:])
for i in range(1,number+1):
    deci=str(i)
    octa=oct(i)[2:]
    hexa=(hex(i)[2:]).upper()
    bina=bin(i)[2:]
    print(deci.rjust(width),octa.rjust(width),hexa.rjust(width),bina.rjust(width))
© www.soinside.com 2019 - 2024. All rights reserved.