【发布时间】:2020-06-12 08:29:29
【问题描述】:
我正在尝试执行这个程序,其中给定一个数字 N,必须打印出 1 到 N 范围内所有数字的十进制、八进制、十六进制和二进制。问题是平台需要解决方案特定格式。
假设数字是 17,那么输出应该是这样的:
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
对于 7,它会像:
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
如果您注意到,以上内容需要以十进制、八进制和十六进制数的左侧至少需要 2 个空格的方式打印,而二进制数的左侧至少需要一个空格。现在,随着数字长度的增加,需要相应地给出空间,以便即使对于最大长度的数字也存在最小空间。那么,如何使用可变空间打印它们?到目前为止,我已经尝试过:
代码
def print_formatted(number):
space=len(str(bin(number))[2:])
for i in range(1,number+1):
print('{:2d}'.format(i), end='')
print('{:>3s}'.format(str(oct(i))[2:]), end='')
print('{:>3s}'.format(str(hex(i))[2:]), end='')
print('{:>'+str(space)+'s}'.format(str(bin(i))[2:]))
print_formatted(17)
在这里,我只是尝试只使用二进制数执行所需的操作,但它给了我一个错误
print('{:>'+str(space)+'s}'.format(str(bin(i))[2:]))
ValueError: Single '}' encountered in format string
有什么解决方法/替代方法吗?
【问题讨论】:
标签: python-3.x