十进制转二进制的竖式——如何用python按行输出
场景:有一个课程作业:
要求:
目标样式:
思考:可以用手算,然后用execl实现对齐和缩进。但是很懒,就想着用python一步到位。每一步打印出来并且对齐。
废话不多说,上最终效果图:
上代码:
#十进制转二进制可视化按行输出(整数部分)
#用json实现带下划线输出效果
class Format:
end = '\033[0m'
underline = '\033[4m'
FinalList = []
dividedList = []
#要处理的数
number = 127546
print(bin(number))
while number != 1:
_new_number, divided = divmod(number, 2)
print('2|'+Format.underline +"{:>7}".format(number)+Format.end+"{:>7}".format(divided))
number = _new_number
FinalList.append(divided)
dividedList.append(number)
if number == 0:
print('0|0')
FinalList.append(divided)
dividedList .append(0)
else:
print(' 1 1') #这里自行手动对齐
FinalList.append(1)
dividedList.append(1)
#print(FinalList[::-1]) # should match with the `bin` result
#print(dividedList)
总结:
学到了两点。
- 带下划线输出效果
class Format:
end = '\033[0m'
underline = '\033[4m'
print('2|'+Format.underline +"{:>7}".format(number)+Format.end)
- 格式化输出
"{:>7}".format(number) #>号是右对齐,7是隔7个字符位,这样是输出变量
print("|",format("Ursula","*>20"),"|") #这样可以连>左边的*一并打印出来
#过程中还产生了一个有趣的报错 format() takes at most 2 arguments (3 given)