导图社区 Python函数和代码复用
本导图主要介绍了Python中的函数的定义与使用、代码复用和函数递归、Pyinstaller库的使用,导图内容来源于中国大学MOOC—Python语言程序设计(北京理工大学),配合课程使用效果更好。
编辑于2021-07-02 17:51:12本导图为作者备考中级经济师(人力资源)过程中形成的学习笔记,已取得人力资源管理师证。中级经济专业技术资格考试设《经济基础知识》和《专业知识和实务》两个科目,题型均为客观题。《专业知识和实务》为专业科目,分为工商管理、农业经济、财政税收、金融、保险、运输经济、人力资源管理、旅游经济、建筑与房地产经济、知识产权10个专业类别;《经济基础知识》为公共科目,由经济学基础、财政、货币与金融、法律、会计、统计六个部分组成。
本导图为中级经济师考试科目《经济基础知识》的统计部分,主要包括统计与数据科学、描述统计、抽样统计、回归分析、时间序列分析。
本导图为中级经济师考试科目《经济基础知识》的货币与金融部分,主要包括货币供求与货币均衡、中央银行与货币政策、商业银行与金融市场、金融风险与金融监管、对外金融关系与政策。
社区模板帮助中心,点此进入>>
本导图为作者备考中级经济师(人力资源)过程中形成的学习笔记,已取得人力资源管理师证。中级经济专业技术资格考试设《经济基础知识》和《专业知识和实务》两个科目,题型均为客观题。《专业知识和实务》为专业科目,分为工商管理、农业经济、财政税收、金融、保险、运输经济、人力资源管理、旅游经济、建筑与房地产经济、知识产权10个专业类别;《经济基础知识》为公共科目,由经济学基础、财政、货币与金融、法律、会计、统计六个部分组成。
本导图为中级经济师考试科目《经济基础知识》的统计部分,主要包括统计与数据科学、描述统计、抽样统计、回归分析、时间序列分析。
本导图为中级经济师考试科目《经济基础知识》的货币与金融部分,主要包括货币供求与货币均衡、中央银行与货币政策、商业银行与金融市场、金融风险与金融监管、对外金融关系与政策。
函数和代码复用
本导图主要介绍了Python中的函数的定义与使用、代码复用和函数递归、Pyinstaller库的使用,导图内容来源于中国大学MOOC—Python语言程序设计(北京理工大学),配合课程使用效果更好。
函数的定义与使用
函数的定义
def 函数名(参数): 函数体 return 返回值
函数的参数传递
参数个数
可以有也可以没有,但必须保留括号
可选参数传递
def 函数名(非可选参数,可选参数): 函数体 return 返回值 def fact(n,m=1): s=1 for i in range(1,n+1): s*=i return s//m a=fact(10) b=fact(10,2) print(a,b) >>> 3628800 1814400
可变参数传递
def 函数名(参数,*b): 函数体 return 返回值 def fact(n,*b): s=1 for i in range(1,n+1): s*=i for item in b: s*=item return s a=fact(10,3) b=fact(10,3,5,8) print(a,b) >>>10886400 435456000
传递方式
1、位置传递 def fact(n,m=1): >>>fact(10,5) 2、名称传递 def fact(n,m=1): >>>fact(m=5,n=10)
函数的返回值
可以返回0或多个结果
可以按照位置或名称方式传递
位置传递: >>>fact(10,5) 名称传递: >>>a,b,c=fact(10,5)
局部变量和全局变量
函数外部定义全局变量
p
函数内部定义全局变量
p
局部变量为组合且未创建时等同于全局变量
未创建: p 创建: p
lambda函数
用于定义简单函数 >>> f=lambda x,y: x+y >>> f(10,15) 25
七段数码管绘制
绘制步骤
问题:怎样用turtle以数码管形式绘制当前系统时间 1、绘制单个数码管 2、获得一串数字,绘制对应数码管 3、获得当前系统时间,绘制对应数码管
代码
#LED.py import turtle import 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,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.right(180) turtle.penup() turtle.fd(20)#移动到下一个数码管的起点 def drawDate(date):#date为日期,格式为'%Y-%m=%d+' 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(900,350,200,200) turtle.penup() turtle.fd(-340) turtle.pensize(5) turtle.speed(0) drawDate(time.strftime('%Y-%m=%d+',time.gmtime())) turtle.hideturtle()#隐藏海龟 turtle.done() main()
代码复用与函数递归
代码复用
把代码当成资源进行抽象: 代码资源化、代码抽象化、代码复用 代码复用的形式: 函数、对象
函数递归的理解
两个关键特征
链条:计算过程存在递归链条 基例:存在一个或多个不需要再次递归的基例
递归的实现
p 调用过程: p
字符串反转
方法1:s[::-1] 方法2: p
斐波那契数列
p p
汉诺塔
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 答案:需要2^n-1次 count=0 def hanoi(n,src,dst,mid):#把n个圆盘按照从小到大的顺序从初始柱移动到目标柱 global count if n==1: print("{}:{}-->{}".format(1,src,dst)) count+=1 else: hanoi(n-1,src,mid,dst)#把n-1个圆盘按照从小到大的顺序从初始柱移动到中转柱 print("{}:{}-->{}".format(n,src,dst))#把第n个圆盘从初始柱移动到目标柱 count+=1 hanoi(n-1,mid,dst,src)#把n-1个圆盘按照从小到大的顺序从中转柱移动到初始柱 hanoi(4,"A","B","C") print(count) ''' >>> 1:A-->C 2:A-->B 1:C-->B 3:A-->C 1:B-->A 2:B-->C 1:A-->C 4:A-->B 1:C-->B 2:C-->A 1:B-->A 3:C-->B 1:A-->C 2:A-->B 1:C-->B 15 '''
Pyinstaller库的使用
安装
1、win+r,输入:cmd 2、输入:pip install pyinstaller p
使用方法
1、打开命令窗口,进入源文件所在文件夹,输入打包指令 2、在项目所在文件夹中,同时按住鼠标右键和shift,在弹窗中点击在此处打开powershell窗口,在弹出的命令窗口中输入打包指令。 p
指令
在dist文件夹中生成独立的打包文件:pyinstaller -F xxx.py 生成以xxx.ico为图标的独立打包文件:pyinstaller -i xxx.ico -F xxx.py
科赫雪花
分形几何
一种迭代的几何图形
科赫曲线绘制
科赫曲线: p 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)
科赫雪花绘制
一阶科赫曲线绘制等边三角形:二阶科赫曲线绘制等边三角形: pp 三阶科赫曲线绘制等边三角形:五阶阶科赫曲线绘制等边三角形: pp p