Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在多个部分中剪切列表或显示_Python_Python 3.x - Fatal编程技术网

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

Python 如何在多个部分中剪切列表或显示,python,python-3.x,Python,Python 3.x,我正在用python制作一个函数,用来将十进制(10)转换为二进制(2) 因为它应该显示在小屏幕(计算器)上,所以我想将输出字节按字节(8乘8)进行分割。现在,我使用一个转换为字符串的列表来水平显示结果 我尝试过垂直显示,每8个字符暂停一次。(它工作了,但我希望有一个水平显示) 还试图显示列表并每8个字符清除一次,但未能成功 def dectobin(dec): maxbin = 7 maxdec = 2**maxbin dec2 = dec bin = [] #Define

我正在用python制作一个函数,用来将十进制(10)转换为二进制(2)

因为它应该显示在小屏幕(计算器)上,所以我想将输出字节按字节(8乘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 = 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个字符,在对存储箱进行切片时需要考虑这些字符。因此,我使用16来每15个字符切片一次,得到您想要的结果


我建议您将
bin=“”.join(bin)
更改为
bin=“”.join(bin)
,这样分隔符将是一个空字符串,并每8个字符拆分一次列表,这对您来说是正常且更具可读性的。请随意询问任何其他问题。

您能否提供一个包含输入和所需输出的示例案例?@VasilisG。我添加了一个示例。我希望您使用的是python3,请将其添加到您的标记中,因为在复制代码时python2和python3的打印语句不同。它现在可以工作了!谢谢您能解释一下您添加的内容是如何工作的吗?@Mazeo当然,让我再编辑一次,以确保完全正确,我会通知您。在第一行中,您使用
join
创建一个包含所有二进制数字的字符串,并用空格字符分隔。这意味着每8位之间就有8个空字符和7个空字符,形成了在切片
bin
时需要考虑的总共15个字符。因此,我使用
16
每15个字符切片一次,得到您想要的结果。我建议您将
bin=“”.join(bin)
更改为
bin=“”.join(bin)
,这样分隔符将是一个空字符串,并每8个字符拆分一次列表,这对您来说是正常且更具可读性的。请随意询问任何其他问题。@usr2564301感谢您的关注。我将把它添加到我的答案中。bin=“\n”。加入([bin[I:I+8]表示范围(0,len(bin),8)])而不是第2行,我更喜欢。
259 = 00000001
00000011