这里是将十进制数字number
转换为二进制(DectoBin
)并打印从1
到number
的所有二进制数字的列表的代码({ {1}}):
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
答案 0 :(得分:0)
如下定义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
的字符串中的字符串进行右对齐。
答案 1 :(得分:0)
请参见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