Python:使用ascii代码打印

Python:使用ascii代码打印,python,python-3.x,ascii,Python,Python 3.x,Ascii,我是python的初学者,在这个程序中遇到了一个问题: 首先是节点列表: class Node: def __init__(self,initdata): self.data = initdata self.next = None def getData(self): return self.data def getNext(self): return self.next def setData

我是python的初学者,在这个程序中遇到了一个问题:

首先是节点列表:

class Node:
    def __init__(self,initdata):
        self.data = initdata
        self.next = None

    def getData(self):
        return self.data

    def getNext(self):
        return self.next

    def setData(self,newdata):
        self.data = newdata

    def setNext(self,newnext):
        self.next = newnext
我的问题在这个程序中:(打印)


每次我打印的时候,线条看起来都不清晰。我尝试使用len()进行实验,只是为了使其准确,但每次该项添加更多字符时,它都会再次消失。任何帮助都将不胜感激。谢谢。

在空闲设置中使用单空格字体,你们都很好。

在空闲设置中使用单空格字体,你们都很好。

使用单空格字体作为@Kable答案

除此之外,最后一个
print
print小于
chr(0x2500)

其他一些注意事项:

  • 使用
    \u2502
    代替
    chr(0x2502)
  • 将转储功能与
    pushSLL
    分开
  • 第一个和最后一个打印只考虑当前节点的长度。它应该计算所有节点的最大长度

class StackLL:
定义初始化(自):
self.head=无
def pushSLL(自身,项目):
临时=节点(str(项目))
温度设置下一步(自身头部)
self.head=temp
def转储(自):
如果self.head为0,则length=max(self.allNodes()中节点的len(node.data)
打印('\u2510{}\u250c'.格式(''*length))
对于self.allNodes()中的节点:

打印('\u2502{:使用单空格字体@Kable)

除此之外,最后一个
print
print小于
chr(0x2500)

其他一些注意事项:

  • 使用
    \u2502
    代替
    chr(0x2502)
  • 将转储功能与
    pushSLL
    分开
  • 第一个和最后一个打印只考虑当前节点的长度。它应该计算所有节点的最大长度。

class StackLL:
定义初始化(自):
self.head=无
def pushSLL(自身,项目):
临时=节点(str(项目))
温度设置下一步(自身头部)
self.head=temp
def转储(自):
如果self.head为0,则length=max(self.allNodes()中节点的len(node.data)
打印('\u2510{}\u250c'.格式(''*length))
对于self.allNodes()中的节点:

打印('\u2502{:从您的图片来看,无论您有什么GUI,似乎都使用了。您很难通过添加空格来调整字符串的宽度。请使用单间隔字体。从您的图片来看,无论您有什么GUI,似乎都使用了。您很难通过添加空格来调整字符串的宽度。请使用单间隔字体。
from NodeList import Node

class StackLL:

    def __init__(self):
        self.head = None

    def pushSLL(self,item):
        temp = Node(str(item))
        temp.setNext(self.head)
        self.head = temp
        node = self.head
        print(chr(0x2510)+(chr(0x0000)*(len(item)))+chr(0x250c))
        while node!=None:
            stackeditem = chr(0x2502)+node.data+chr(0x2502)
            print(stackeditem)
            node = node.next   
        print(chr(0x2514)+(chr(0x2500)*(len(item)-1))+chr(0x2518))
class StackLL:

    def __init__(self):
        self.head = None

    def pushSLL(self, item):
        temp = Node(str(item))
        temp.setNext(self.head)
        self.head = temp

    def dump(self):
        length = max(len(node.data) for node in self.allNodes()) if self.head else 0
        print('\u2510{}\u250c'.format(' '*length))
        for node in self.allNodes():
            print('\u2502{:<{}}\u2502'.format(node.data, length))
        print('\u2514{}\u2518'.format('\u2500'*length))

    def allNodes(self):
        node = self.head
        while node is not None:
            yield node
            node = node.next

s = StackLL()
s.pushSLL('Arc')
s.pushSLL('Circle')
s.pushSLL('Rect')
s.dump()