我需要做一个十六进制计数器。
我试图这样做:
x = 0
while(x != 10):
print('Number '+'{0:x}'.format(int(x)))
x = x + 1
Run Code Online (Sandbox Code Playgroud)
计数器正在工作。唯一的问题是输出看起来像这样
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
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样
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
Run Code Online (Sandbox Code Playgroud)
我怎么能那样做?
这在格式规范 Mini-Language 中有解释。
获取大写字母:
'x' 十六进制格式。输出以 16 为基数的数字,对 9 以上的数字使用小写字母。
'X' 十六进制格式。输出以 16 为基数的数字,9 以上的数字使用大写字母。
要获得 2 位数字:
width是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容决定。
当没有给出明确的对齐方式时,在宽度字段前面加上一个零 (
'0') 字符为数字类型启用符号感知零填充。这等同于一个填充的字符'0'与对准的类型'='。
因此,您需要将 the 设置width为 2、fillto0和alignmentto =,或者更简单地说,只需0在width.
所以:
print('Number '+'{0:02X}'.format(int(x)))
Run Code Online (Sandbox Code Playgroud)
虽然我们正在这样做,但这是非常愚蠢的代码。
首先,x已经是一个int,那为什么还要调用int它呢?
print('Number '+'{0:02X}'.format(x))
Run Code Online (Sandbox Code Playgroud)
同时,如果您在format字符串中放入的唯一内容是单个格式说明符,则不需要str.format,只需format:
print('Number ' + format(x, '02X'))
Run Code Online (Sandbox Code Playgroud)
或者,或者,重点str.format是您可以将多个内容放入一个格式字符串中:
print('Number {:02X}'.format(x))
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用的是 Python 3.6 或更高版本:
print(f'Number {x:02x}')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6796 次 |
| 最近记录: |