Python入门5.1 函数的定义与使用 | 实例:七段数码管绘制

 函数是定义一个功能,后面需要时候直接调用

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()  # 调用主函数 开始程序运行

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值