Python语言程序设计-第五周-函数和代码复用-嵩天-黄天羽-礼欣

函数和代码复用:
5.1 函数的定义与使用
5.2 实例7:七段数码管绘制
5.3 代码复用与函数递归
5.4 模块4:PyInstaller库的使用
5.5 实例8:科赫雪花小包裹


5.1 函数的定义与使用:

  • ①函数的理解与定义
  • ②函数的使用及调用过程
  • ③函数的参数传递
  • ④函数的返回值
  • ⑤局部变量和全局变量
  • lambda函数

①函数定义

def <函数名>(参数A):
<语句块>
return 参数B

#函数定义  n的阶乘
def fac(n):
    s = 1
    for i in range(1,n+1):
        s *= i
    return s
    
 #函数调用   
fac(10) 

7f0ad2bb27d6ad9ade767bd724a6242a.png


②函数的使用及调用过程

13d914f7b96b6aa29624bac837b96e01.png


③函数的参数传递

(1)可选参数
e626ba2b08bea74b84adf532f7eb701c.png

#可选参数放在非可选参数之后
def fac(n,m = 1):
    s = 1
    for i in range(1,n+1):
        s *= i
    return s//m

(2)可变参数
69c7ff6759ac6fc0b9c4a2cca81ffd44.png

def fac(n, *b):
    s = 1
    for i in range(1,n+1):
        s *= i
    for item in b:
        s *= item
    return s

(3)参数传递方式
可按照位置或名称方式进行传递

def fac(n,m = 1):
    s = 1
    for i in range(1,n+1):
        s *= i
    return s//m
#两者相同
fac(1,2)
fac(m = 2,n=1)

④函数的返回值

返回值可以有多个
例如:

def fac(n,m = 1):
    s = 1
    for i in range(1,n+1):
        s *= i
    return s//m,n,m

⑤局部变量和全局变量

(1) 函数内的局部变量是函数内部的占用符,不影响函数外的变量
函数内想用到全局变量需要声明 global

d14e84a0fc8670dc33dd341189a32859.png


d418fc949b3c34d09eef8f4826d7414b.png


(2) 局部变量为组合数据类型且未创建,等同于全局变量
说白了就是全局变量在函数外创建了,函数内只是处理了一下
0dd5e8df5b0997d351b4709aaa586375.png

⑥lambda函数(*谨慎使用)

4199dd4ff119111198a4ea1c1464da86.png

5.2 实例7:七段数码管绘制

import turtle
import time

def drawLine(draw):    #绘制单段数码管
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    turtle.right(90)

def drawDigit(digit):
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9]else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9]else drawLine(False)
    turtle.left(180)
    turtle.penup()      
    turtle.fd(20)       #为绘制后续数字确定位置

def drawDate1(date):
    for i in date:
        drawDigit(eval(i))

def main():
    turtle.setup(800, 350, 200, 200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
    turtle.hideturtle()
    turtle.done()

def drawDate(date):
    turtle.pencolor("red")
    for i in date:
        if i == '-':
            turtle.write('年',font=("Arial", 18, "normal"))
            turtle.pencolor("green")
            turtle.fd(40)
        elif i == '=':
            turtle.write('月',font=("Arial", 18, "normal"))
            turtle.pencolor("blue")
            turtle.fd(40)
        elif i == '+':
            turtle.write('日',font=("Arial", 18, "normal"))
        else:
            drawDigit(eval(i))

main()

5.3 代码复用

代码复用:模块内部尽量紧耦合,模块之间松耦合
函数递归:
两个关键特征-- 链条,基例
0fb136987fde2c5f197d89cec665eddc.png
3db4029a09fea8925a9c85a938c3f799.png

5.4 模块4:PyInstaller库的使用

生成exe程序
3d062dfc651f1511b07e9cdac63abdeb.png

注意:打包用jupyter写的代码时,需要先将.ipynb文件转换成.py文件再打包。

db4567c1aeb2e51264b3ed095a44a784.png

5.5 实例8:科赫雪花小包裹

import turtle

def koch(size, n):   #直线长度size,科赫曲线阶数n
    if n ==0:
        turtle.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
            turtle.left(angle)
            koch(size/3, n-1)

def main():
    turtle.setup(800,400)
    turtle.penup()
    turtle.goto(-300, -50)
    turtle.pendown()
    turtle.pensize(2)
    turtle.pencolor("purple")
    koch(600, 3) # 长600,3阶
    turtle.hideturtle()
main()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值