鱼C论坛

 找回密码
 立即注册
查看: 484|回复: 2

[已解决]小甲鱼课后第039讲课后题求助

[复制链接]
发表于 2021-12-1 16:07:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在做课后作业的时候遇到了一些问题,请各位鱼油赐教^_^!

1. 定义一个栈(Stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构。至少需要有以下方法:

我的问题:__init__方法里面的start=[]的意义在哪里呢?如果要传递进去一个列表,那应该是def __init__(self,start),调用Stack类的时候Stack(start=[1,'2',None])
答案这样给start赋初值是有什么原理在里面吗?



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]
最佳答案
2021-12-1 18:46:51
这应该属于函数部分的基础知识了,在函数定义的部分,直接在参数定义的地方给参数赋值的意思是设定一个默认值,调用该函数时,若未传入该参数,则这个参数使用默认值
也就是说,我在实例化一个Stack类时,可以不传入start参数,这时候,start参数就是默认的空列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-1 17:44:07 | 显示全部楼层
其实都可以,主要是要实现定义一个栈(Stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-1 18:46:51 | 显示全部楼层    本楼为最佳答案   
这应该属于函数部分的基础知识了,在函数定义的部分,直接在参数定义的地方给参数赋值的意思是设定一个默认值,调用该函数时,若未传入该参数,则这个参数使用默认值
也就是说,我在实例化一个Stack类时,可以不传入start参数,这时候,start参数就是默认的空列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 15:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表