我是python的初学者,我在这个程序中遇到了问题:
首先是NodeList:
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
我的问题在于这个程序:(打印)
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))
每次我打印时,线条似乎都没有了。我尝试使用len()进行实验只是为了使其准确,但每次项目添加更多字符时它会再次出现。任何帮助将不胜感激。谢谢。
答案 0 :(得分:4)
在IDLE设置中使用等宽字体,你们都很好。
答案 1 :(得分:3)
使用等宽字体作为@Kable回答。
除此之外,最后print
打印1减去chr(0x2500)
。
其他一些说明:
\u2502
代替chr(0x2502)
。pushSLL
单独转储功能。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()