打印右对齐的二进制数列表



这是将十进制数number转换为二进制(DectoBin(的代码,并打印从1number(print_formatted(的所有二进制数的列表:

def DectoBin(number):
j=1
binary = 0
while (number != 0):
reminder = number % 2
number= int(number / 2)
binary= binary + reminder * j
j *= 10
return(binary)
def print_formatted(number):
for j in range(1, number + 1):
bin1 = DectoBin(j)        
print(bin1, end='n')

我得到的输出:

1
10
11
100
101
110
111
1111

我想要的输出(二进制数的右对齐列表(:

1
10
11
100
101
110
111
1000

参见 PEP 498,其中引入了文字字符串插值。您可以使用它来正确证明您的打印输出:

def DectoBin(number):
j=1
binary = 0
while (number != 0):
reminder = number % 2
number= int(number / 2)
binary= binary + reminder * j
j *= 10
return(binary)

for i in range(16):
print (f'{DectoBin(i):>5}')

这将产生以下输出:

0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110

按如下方式定义print_formatted函数。这可确保二进制数正确右对齐,每个数字之前有正确的空格数

import math
def print_formatted(number):
max_bits = math.ceil(math.log2(number + 1))
for j in range(1, number + 1):
bin1 = str(DectoBin(j)).rjust(max_bits)
print(bin1, end='n')

max_bits是用来表示number的位数,rjust是用来右对齐长度为max_bits的字符串的字符串。

最新更新