输入是一个数字,例如9,我想从1到9打印十进制,八进制,十六进制和二进制值,例如:
admin
如何使用类似的语法在python3中实现这一目标
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
我的意思是,如果数字是999,那么我希望将小数点10像'10'一样打印,而将999的二进制等效值打印为1111100111,所以我想像'1010'那样打印10。
答案 0 :(得分:0)
您可以使用str.format()
及其mini-language为您完成整个工作:
for i in range(1, 10):
print("{v} {v:>6o} {v:>6x} {v:>6b}".format(v=i))
将打印:
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
更新:要在变量中定义字段“宽度”,您可以使用格式内格式结构:
w = 5 # field width, i.e. offset to the right for all octal/hex/binary values
for i in range(1, 10):
print("{v} {v:>{w}o} {v:>{w}x} {v:>{w}b}".format(v=i, w=w))
或者,如果您希望它们的间距不均匀,请为每个字段 type 定义不同的宽度变量。
顺便说一句。由于您已经用python-3.x
标记了问题,因此,如果您使用的是Python 3.6或更高版本,则可以使用Literal String Interpolation
进一步简化该问题:
w = 5 # field width, i.e. offset to the right for all octal/hex/binary values
for v in range(1, 10):
print(f"{v} {v:>{w}o} {v:>{w}x} {v:>{w}b}")