Python 第三周① 函数和代码复用 您所在的位置:网站首页 drawline函数 Python 第三周① 函数和代码复用

Python 第三周① 函数和代码复用

2023-03-22 20:27| 来源: 网络整理| 查看: 265

Python 函数和代码复用 函数的定义和使用函数的定义参数传递可选参数传递可变参数传递参数传递两种方式 局部变量与全局变量lambda函数实例:七段数码管绘制函数递归实例一:将字符串s反转后输出实例二:斐波那契数列实例三:汉诺塔 科赫雪花实例

函数的定义和使用 函数的定义 def (): return 参数传递 可选参数传递 def (,): return

可选参数必须放在必选参数之后。

可变参数传递 def (,*b): return

*b:可以给出任意数量的参数。

参数传递两种方式

举例:

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

位置传递:

>>>fact(10,5) 725760

名称传递:

>>>fact(m=5,n=10) 725760 局部变量与全局变量

局部变量与全局变量 1.局部变量和全局变量是不同变量。 2.可以通过global保留字在函数内部声明全局变量。 3.局部变量为组合数据类型且未创建,等同于全局变量。

lambda函数 = lambda: >>>f = lambda x,y:x+y >>>f(10,15) 25

一般情况下,建议使用def函数体。

实例:七段数码管绘制 import turtle,time def drawgap(): turtle.penup() turtle.fd(5) def drawLine(draw): drawgap() turtle.pendown() if draw else turtle.penup() turtle.fd(40) drawgap() 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, 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 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)) 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() main()

运行结果: 在这里插入图片描述

函数递归 实例一:将字符串s反转后输出 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) 实例三:汉诺塔 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(3, "A", "C", "B") print(count) 科赫雪花实例 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(600, 600) turtle.penup() turtle.goto(-200, 100) turtle.pendown() turtle.pensize(2) level = 3 koch(400, level) turtle.right(120) koch(400, level) turtle.right(120) koch(400, level) turtle.hideturtle() turtle.done() main()

运行结果: 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有