我有一个密码,它可以打印哈夫曼树。这一部分:
while len(numArr) > 1:
numArr = [numArr[0] + numArr[1]] + numArr[2:]
numArr = sorted(numArr)
valHold = numArr[0] * 8
print(numArr)
不要介意我用它来计算输入字符串的未压缩位的valHold
变量。你知道吗
假设我有1,1,1,2,3,4
作为list numArr
的元素(元素来自一个计数器,并传输到letter_ar
r和numArr以将两者分开)。你知道吗
我只能这样打印:
1,1,1,1,2,3,4
1,1,2,2,3,4
2,2,2,3,4
2,3,4,4
4,4,5
5,8
13
有没有其他方法可以打印出来?它看起来更像一棵树?像这样:
13
5,8
4,4,5
2,3,4,4
2,2,2,3,4
1,1,2,2,3,4
1,1,1,1,2,3,4
如果你能教我如何用缩进打印会更好:
13
5,8
4,4,5
2,3,4,4
2,2,2,3,4
1,1,2,2,3,4
1,1,1,1,2,3,4
请注意,numArr
列表的元素不是预定义的。它基于用户在程序中输入的内容。你知道吗
当然可以:
为了按相反的顺序打印,可以先将其放入列表中,然后将其反转。你知道吗
要缩进输出并将其与每个数字对齐,可能需要一些额外的工作,但您可以尝试将输出作为工作中心。 首先将每个列表转换为一个字符串,并计算最大宽度。然后使用
str.center
将文本居中。你知道吗您可以按如下树格式输出数据:
这将显示:
[::-1]
可用于按相反顺序读取数组。所以这里的想法是读取每一行并将每一个元素转换成一个字符串。然后用逗号将它们连接起来,创建一个数字列表。最后,根据最长条目的长度居中显示每一行。你知道吗相关问题 更多 >
编程相关推荐