Python学记(九)函数和代码复用(下)

    xiaoxiao2022-07-09  191

    day 2019.5.22 函数和代码复用

    代码复用与函数递归

    代码复用与模块化设计

    代码复用 把代码当成资源进行抽象 代码资源化:程序代码是一种用来表达计算的"资源" 代码抽象化:使用函数等方法对代码赋予更高级别的定义 代码复用:同一份代码在需要时可以被重复使用模块化设计 分而治之:通过函数或对象封装程序划分为模块及模块间的表达紧耦合 松耦合 紧耦合:两个部分之间交流很多,无法独立存在 松耦合:两个部分之间交流较少,可以独立存在 模块内部紧耦合,模块之间松耦合

    函数递归的理解

    函数递归的调用过程

    def fact(n): if n == 0: return 1 else: return n*fact(n-1)

    函数递归实例解析

    字符串反转 将字符串s反转后输出 >>> s[::-1] def rvs(s): if s == "" return s else: return rvs(s[1:]+s[0]) 斐波那契数列 def f(n): if n == 1 or n == 2: return 1 else: return f(n-1) + f(n-2) print(f(8)) >>> 21 汉诺塔问题 count = 0 def hanoi(n,src,dst,mid): global count if n == 1: print("{}:{}->{}".format(1, src, dst)) count += 1 else: hanoi(n-1, src, mid, dst) print("{}:{}->{}".format(n, src, dst)) count += 1 hanoi(n-1, mid, dst, src) hanoi(10,"A","C","B") print(count)

    PyInstaller库

    PyInstaller是第三方库

    科赫雪花小包裹

    分形几何 科赫曲线 # 科赫曲线 import turtle def koch(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.pensiz(2) koch(600, 3) turtle.hideturtle() main() # 科赫雪花 import turtle def koch(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(-200, 100) turtle.pendown() turtle.pensiz(2) level = 3 #3阶科赫雪花 koch(400, level) turtle.right(120) koch(400, level) turtle.right(120) koch(400, level) turtle.right(120) turtle.hideturtle() main()
    最新回复(0)