gpt4 book ai didi

python - 如何使用变量而不是大括号内的数字来格式化字符串?

转载 作者:行者123 更新时间:2023-12-02 02:21:49 32 4
gpt4 key购买 nike

我使用的是 Python 3.7,并且我已在变量中存储了一个值。该变量保存填充的值,我想在大括号内使用它来进行字符串格式化。该代码解释了我想要做什么。

def print_formatted(number):
for i in range(1, number + 1):
binum = bin(i).replace('0b', '')
ocnum = oct(i).replace('0o', '')
hexnum = hex(i).replace('0x', '')

length = len(bin(number).replace('0b', ''))
print('{0:>length} {1:>length} {2:>length} {3:>length}'.format(i, ocnum, hexnum, binum)) # Error here

这是我一直在尝试运行的代码。我想做的是通过用最后一个二进制数的长度值填充数字来右对齐数字。

ValueError: Invalid format specifier

这是我收到的错误。我做错了什么?

最佳答案

您可以使用 f 字符串和格式说明符来避免使用 hexoctbin 内置函数,然后进行字符串切片和使用 int.bit_length() 而不是获取二进制字符串的长度,例如:

def print_formatted(number):
# get number of bits required to store number
w = number.bit_length()
for n in range(1, number + 1):
# print each number as decimal, then octal, then hex, then binary with padding
print(f'{n:>{w}} {n:>{w}o} {n:>{w}x} {n:>{w}b}')

运行 print_formatted(20) 将为您提供:

    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
11 13 b 1011
12 14 c 1100
13 15 d 1101
14 16 e 1110
15 17 f 1111
16 20 10 10000
17 21 11 10001
18 22 12 10010
19 23 13 10011
20 24 14 10100

关于python - 如何使用变量而不是大括号内的数字来格式化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59573743/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com