这是将十进制数number
转换为二进制(DectoBin
(的代码,并打印从1
到number
(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
的字符串的字符串。