为了账号安全,请及时绑定邮箱和手机立即绑定

如何在多个部分中剪切列表或显示

如何在多个部分中剪切列表或显示

冉冉说 2021-09-28 20:48:05
我在 python 中创建一个函数,应该将 Decimal(10) 转换为 Binary(2);由于它应该显示在小屏幕(计算器)上,我想按字节(8 x 8)拆分输出字节。现在,我使用一个我转换为字符串的列表以水平显示结果。我试过垂直显示,每 8 个字符暂停一次。(它有效,但我想要一个水平显示);还尝试显示列表并每 8 个字符清除一次,但没有成功。def dectobin(dec):  maxbin = 7  maxdec = 2**maxbin  dec2 = dec  bin = []#Define default maximum values #for the Binary and Decimal numbers#starting from one Byte  dec = abs(dec)#Negative value to positive value  while dec > maxdec:    maxbin = maxbin+8    maxdec = 2**maxbin#Define the actual maximum values#for the Binary and Decimal numbers#incremented in Bytes  while maxbin != -1:#Set the loop to stop at final bit    b = dec-2**maxbin#Saving dec into another var#in order to do the tests    if b < 0:      bin.append("0")#If dec < maxbin value, it's a 0    else:      bin.append("1")#If dec > maxbin value, it's a 1      dec=b    maxbin = maxbin-1#Decrease the bit  bin = " ".join(bin)  print(dec2, "=", bin)例如,如果我输入“259”,我想要259 = 0000000100000011代替259 = 0000000100000011
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

您可以切片bin以达到您想要的效果。在打印之前修改您的代码:


bin = "".join(bin)

bin = "\n".join([bin[i:i+8] for i in range(0, len(bin), 8)])

print(dec2, "=", bin)

这会给你:


259 = 00000001

00000011

这背后的逻辑是什么?


在第一行中,您用于join创建一个包含所有二进制数字的字符串,由一个空格字符分隔。这意味着每8位之间有8个空7个空字符,形成了切片bin时需要考虑的总共15个字符。因此,我使用 16 对每 15 个字符进行切片并得到您想要的结果。


我建议您更改bin = " ".join(bin)为,bin = "".join(bin)以便分隔符为空字符串并每 8 个字符拆分列表,这对您来说是正常且更具可读性的。随意问任何其他事情。


查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号