我需要做一个十六进制的计数器。
我试着这样做:
x = 0
while(x != 10):
print('Number '+'{0:x}'.format(int(x)))
x = x + 1
柜台工作正常。唯一的问题是输出如下所示
0 5 a f 14 19
1 6 b 10 15 1a
2 7 c 11 16 1b
3 8 d 12 17 1c
4 9 e 13 18 1d
我希望它看起来像这样
00 05 0A 0F 14 19
01 06 0B 10 15 1A
02 07 0C 11 16 1B
03 08 0D 12 17 1C
04 09 0E 13 18 1D
我怎么能这么做呢?
发布于 2018-06-27 09:18:01
这在Format specification Mini-Language中有解释。
获取大写字母的步骤:
'x‘十六进制格式。输出以16为基数的数字,使用小写字母表示9以上的数字。
“x”十六进制格式。输出以16为基数的数字,使用大写字母表示9以上的数字。
要获取2位数,请执行以下操作:
width是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容决定。
如果未给出显式对齐方式,则在宽度字段前面加上一个零('0'
)字符将为数值类型启用符号感知的零填充。这等效于对齐类型为'='
的'0'
填充字符。
因此,您需要将width
设置为2,将fill
设置为0
,将alignment
设置为=
,或者,更简单地说,只需在width
之前使用特殊的0
前缀。
所以:
print('Number '+'{0:02X}'.format(int(x)))
当我们这样做的时候,这是非常愚蠢的代码。
首先,x
已经是一个int
,为什么还要在它上面调用int
呢?
print('Number '+'{0:02X}'.format(x))
同时,如果要放入format
字符串的唯一内容是单个格式说明符,则不需要str.format
,只需要format
print('Number ' + format(x, '02X'))
或者,str.format
的全部意义在于您可以将多个内容放入一个格式字符串中:
print('Number {:02X}'.format(x))
或者,如果您使用的是Python 3.6或更高版本:
print(f'Number {x:02x}')
https://stackoverflow.com/questions/51053227
复制相似问题