gpt4 book ai didi

python - 如何将列表或显示分成多个部分

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:19 27 4
gpt4 key购买 nike

我正在用 python 编写一个函数,应该将十进制 (10) 转换为二进制 (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 = 00000001
00000011

代替

259 = 0000000100000011

最佳答案

您可以切片 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 个空字符,总共形成 15 个字符,需要在切片 bin 时考虑这些字符。因此,我使用 16 每 15 个字符进行切片并得到您想要的结果。

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

关于python - 如何将列表或显示分成多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53977960/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com