yuhanhanhan 发表于 2019-11-6 17:49:03

Python代码疑问求助~~

class Stack:
    def __init__(self,X=[]):
      self.stack = []
       for x in X:
            self.push(x)

    def isEmpty(self):
      return not self.stack

    def push(self,obj):
      self.stack.append(obj)

    def pop(self):
      if not self.stack:
            print('栈为空!')
      else:
            self.stack.pop()

    def top(self):
      if not self.stack:
            print('栈为空!')
      else:
            print(self.stack[-1])

    def bottom(self):
      if not self.stack:
            print('栈为空!')
      else:
            print(self.stack)


提问:以上代码中,标红的两行有什么用,我把它删除了也是一样运行的啊~~

ba21 发表于 2019-11-6 18:01:22

能运行,不代表代码能正常工作。首先你要搞懂代码是干嘛用的。
这段代码明显就是栈的应用,就是让你对栈有更深的了解。
for x in X:
self.push(x) #函数用来初始化栈 没有这段代码你的栈就是空的
有:
>>> s = '123456'
>>> b = Stack(s)
>>> b.bottom()
1
>>> b.top()
6
没有:
>>> s = '123456'
>>> b = Stack(s)
>>> b.bottom()
栈为空!
>>> b.top()
栈为空!

zltzlt 发表于 2019-11-6 21:01:06

如果不写标红的代码,参数 X 就没有用了。代码的原意是如果有 X 参数 则先向栈推进 X 里的元素。
页: [1]
查看完整版本: Python代码疑问求助~~