函数是定义一个功能,后面需要时候直接调用
def <函数名> (<参数(0个或多个)>):
<函数体>
return <返回值>
def dayup (df): #def...while 定义函数 试错
dayup = 1
for i in range(365):
if i % 7 in [6, 0]:
dayup = dayup * (1 -0.01)
else:
dayup = dayup * (1 + df)
return dayup
dayfactor = 0.01
while dayup(dayfactor) < 37.78:
dayfactor +=0.001
print("工作日的努力参数是:{:.3f}".format(dayfactor))
# 计算n!
def fact(n):
s = 1
for i in range(1, n+1):
s *= i
return s
'''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,5,3,2)
print(a)'''
# 返回多个
def fact(n, m=1):
s = 1
for i in range(1, n+1):
s *= i
return s//m, n, m
a = fact(10, 5)
print(a)
1. 全局变量和局部变量即使名称相同,意义也不同。但可以用global保留字使其与全局变量相同
'''n ,s = 10,100
def fact(n):
s = 1
for i in range(1,n+1):
s *= i
return s
#fact()中s是局部变量,与全局变量s不同,所以后面输出结果仍然是100
print(fact(n),s)'''
n ,s = 10, 100
def fact(n):
global s # 使用global保留字 声明此处s是全局变量s
for i in range(1, n+1):
s *= i
return s
print(fact(n),s)
2. 局部变量为组合数据类型且没有在函数内被创建,等同于全局变量
Is = ["F","f"] # 通过使用[]真实创建了一个全局变量列表Is
def func(a):
Is.append(a)
# 此处Is是列表类型,未真实创建则等同于全局变量;append() 方法用于在列表末尾添加新的对象。
return
func("C") # 全局变量Is被修改
print(Is)
lambda函数
实例:七段数码管绘制
# 开发时间:2021/8/12 14:37i
#SevenDightsDraw
import turtle, time
def drawGap(): # 设置间隔
turtle.penup()
turtle.fd(5)
def drawLine(draw): # 绘制单段数码管
drawGap()
turtle.pendown() if draw else turtle.penup()
# 需要落笔就true,不需要就false
turtle.fd(40)
drawGap()
turtle.right(90)
def drawDight(dight): #根据数字绘制七段数码管
drawLine(True) if dight in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if dight in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if dight in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if dight in [0, 2, 6, 8] else drawLine(False)
turtle.left(90)
drawLine(True) if dight in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if dight in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if dight in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
'''def drawDate(date): # 获得要输出的数字
for i in date:
drawDight(eval(i)) # 通过eval()函数将数字变为整数'''
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:
drawDight(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() # 调用主函数 开始程序运行