|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
定义一个栈(Stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构- class Stack:
- def __init__(self, start=[]):
- self.stack = []
- for x in start:
- 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:
- return self.stack.pop()
-
- def top(self):
- if not self.stack:
- print('警告:栈为空!')
- else:
- return self.stack[-1]
-
- def bottom(self):
- if not self.stack:
- print('警告:栈为空!')
- else:
- return self.stack[0]
复制代码
1.在这个代码中的2~5行是一个初始化的过程,他先定义了一个空栈,然后又把start列表里面的内容穿进去?start在第二行方法后面的定义中不是已经定义start=【】空列表了吗?空列表怎么传到栈里面去啊
2.第八行的代码中有个return not self.stack这个代码什么意思啊?返回的是什么?self.stack在第3行不是已经定义为一个栈了吗?
3.还有我想问一下第15行的print('警告')和第 17行的return self.stack.pop()这两个语句在显示和作用上有没有什么区别啊?这两个语句一直弄混,不知道什么情况下用print什么情况下用return能说明一下吗
本帖最后由 Twilight6 于 2020-6-18 17:24 编辑
1.在这个代码中的2~5行是一个初始化的过程,他先定义了一个空栈,然后又把start列表里面的内容穿进去?start在第二行方法后面的定义中不是已经定义start=【】空列表了吗?空列表怎么传到栈里面去啊
start = [] 是设置了默认参数的值,而如果是空列表for 循环就不会执行,而如果你传入了你自己的列表 那么久将你这个列表逐个放入栈中
2.第八行的代码中有个return not self.stack这个代码什么意思啊?返回的是什么?self.stack在第3行不是已经定义为一个栈了吗?
第八行就算调用看栈是否为空栈 , 因为 not [] 会返回 1 而如果 栈里面有元素就返回 0
3.还有我想问一下第15行的print('警告')和第 17行的return self.stack.pop()这两个语句在显示和作用上有没有什么区别啊?这两个语句一直弄混,不知道什么情况下用print什么情况下用return能说明一下吗
有区别,print 只是单纯的打印,没有返回值,也就是打印数值到屏幕上给我们看的,而return 是函数返回时候用的 , 只能在函数内用 ,没有print的就不会打印显示返回值
但是你在IDLE 或者其他编辑器的控制台会自动打印返回值
|
|