python学习基础 Task6作业

函数及匿名函数

作业

1. 怎么给函数编写⽂档?
2. 怎么给函数参数和返回值注解?
3. 闭包中,怎么对数字、字符串、元组等不可变元素更新。
4. 分别根据每一行的首元素和尾元素大小对二维列表 a = [[6, 5], [3, 7], [2, 8]] 排序。(利用lambda表达式)
5. 利用python解决汉诺塔问题?
有a、b、c三根柱子,在a柱子上从下往上按照大小顺序摞着64片圆盘,把圆盘从下面开始按大小顺序重新摆放在c柱子上,尝试用函数来模拟解决的过程。(提示:将问题简化为已经成功地将a柱上面的63个盘子移到了b柱)

1.函数文档起到描述函数的作用,一般在“”“”“”三引号括住

def funcname():
    """Hello World"""
    ...
    return ...

2.参数注解就是,在定义函数的时候,参数列表内部的参数后面,加上冒号和要传入的类型
返回值注解:在参数列表后面,冒号前面,增加一个 -> 后面接返回值的类型。

def add(x:int, y:int): #参数注解
    return x+y 
def add(x:int, y:int) -> int:  #返回值注解
    return x+y

3.将不可变元素置于一些可变对象,如列表、字典中
或者使用nonlocal将变量声明为自由变量

def foo():
    ns = {}
    ns['a'] = 1
    def bar():
        ns['a'] += 1
        print (ns['a'])
    return bar

4.代码如下:

lst = [[6, 5], [3, 7], [2, 8]] 
lst1 = sorted(a, key=lambda x: x[0])
print(lst1)
lst2 = sorted(a, key=lambda x: x[1])
print(lst2)
"""
[[2, 8], [3, 7], [6, 5]]
[[6, 5], [3, 7], [2, 8]]
"""

5.代码如下:

def hanoi(n,x,y,z):
    if n == 1:
        print(x,'-->',z)
    else:
        hanoi(n-1,x,z,y)
        print(x,'-->',z)
        hanoi(n-1,y,x,z)
n = int(input("请输入汉诺塔的层数:"))
hanoi(n,'X','Y','Z')

"""
请输入汉诺塔的层数:4
X --> Y
X --> Z
Y --> Z
X --> Y
Z --> X
Z --> Y
X --> Y
X --> Z
Y --> Z
Y --> X
Z --> X
Y --> Z
X --> Y
X --> Z
Y --> Z
"""

问题5参考文献:https://www.bilibili.com/video/BV1xs411Q799?p=25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值