(1)解释:
(2)表示
def <函数名> (<参数(0个或多个)>):
<函数体>
return <返回值>
(3)举例:计算n!
def fact(n) :
s = 1
for i in range(1,n+1)
s*=i
return s
解释:函数可以有参数,也可以没有,但一定要有括号
(1)可选参数传递
解释:函数定义时可以为某些参数指定默认值,构成可选参数
************必选参数必须在前面****************
def <函数名> (<必选参数>,<可选参数>):
<函数体>
return <返回值>
(2)可变参数传递
解释:函数定义时可以设计可变数量参数,即不确定参数总数量
def <函数名> (<参数>,*b):
<函数体>
return <返回值>
(1)规则1:局部变量和全局变量是不同变量
global
保留字在函数内部使用全局变量举例:
(2)规则2:局部变量为组合数据类型且未创建,等同于全局变量
举例1:
举例2:
解释:
lambda
函数是一种匿名函数,即没有名字的函数lambda
保留字定义,函数名是返回结果lambda
函数用于定义简单的,能够在一行内表示的元素用法:
<函数名> = lambda <参数>:<表达式>
举例:
>>>f = lambda x,y :x+y
//解释:定义了lambda函数。这个函数有xy两个参数,执行的是x+y的运算
>>>f(10,15)
25
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(d): #根据数字绘制七段数码管
drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False)
drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False)
drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False)
drawLine(True) if d in [0,2,6,8] else drawLine(False)
turtle.left(90)
drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False)
drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False)
drawLine(True) if d 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(-350)
turtle.pensize(5)
# drawDate('2018-10=10+')
drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
turtle.hideturtle()
turtle.done()
main()
紧耦合
:两个部分之间交流很多,无法独立存在松耦合
:两个部分之间交流很少,可以独立存在两个基本要素:
链条
:计算过程中存在递归链条基例
:存在一个或多个不需要再次递归的基例dev rvs(s):
if s == "":
return s
else:
return rvs(s[1:]) + s[0]
dev 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):
gloibal 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)
pip install pyinstaller
,哪个文件夹下不要紧Preparing wheel metadata ... error
,就先执行pip install wheel -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install Pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
(1)cmd命令行下
pyinstaller -F 文件名.py
代码:
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()
main()