我想在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()
功能。请帮助
下面的代码查找所有十六进制,二进制,八进制和十进制值
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))
请查看https://docs.python.org/2/library/stdtypes.html#string-formatting,其中描述了转换标志和转换类型。
例如,使用长度width
以八进制格式化数字的部分如下所示:
'{0:{w}o}'.format(n, w=width)
这将首先创建一个格式化的字符串,看起来像这个{0:4o}
(宽度= 4),然后创建最后的字符串。
下面的代码使用格式函数打印十进制,八位,十六进制和二进制值,仅指定宽度
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))
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))