当前位置: 移动技术网 > IT编程>脚本编程>Python > Python学习笔记(五)

Python学习笔记(五)

2019年10月16日  | 移动技术网IT编程  | 我要评论

挑逗奥特曼怪兽版,包头轻工职业学院,熊家冢

python学习笔记(五)——  函数和代码复用

一、函数

  1、函数的定义:函数是一段代码的表示

    

 

      

 

 

   2、函数的调用

 

    

 

 

   3、函数的参数传递

    3.1 参数个数

 

    

 

    

 

             

 

    

 

 

    

       3.2 参数传递的两种方式:按照位置或名称方式传递

      

 

    4、函数的返回值

     

 

    5、局部变量和全局变量

    

 

    例子:

    

 

      5.1 局部变量和全局变量是不同变量

        

 

        例子:

        

                            

 

      5.2 局部变量为组合数据类型且未创建,等同于全局变量

        

 

            

 

        

     6、lambda 函数

      6.1 lambda 函数概述  

        

 

      6.2 格式

            

 

      6.3 例子

        

 

      6.4 注意事项

        

 

 

 

二、函数递归

  1、定义:函数定义中调用自身的方式

  2、函数递归的调用过程

    2.1 递归的实现:函数 + 分支语句

      

 

    2.2 递归的调用过程图示

      

 

      

 

   3、函数递归实例解析

    3.1 字符串反转

      

 

    3.2 斐波拉契数列

      

 

               

 

    3.3 汉诺塔

      

 

      

 

 三、函数应用场景

  1、七段数码管绘制时间

    1.1 绘制样式

      

 

 

    1.2  基本思路

      

 

       1.3  绘制单个数码管

      

 

      代码:       

print()

     1.4 获取一段数字,绘制多个数码管

      

 

      代码:  

      

 

       1.5 获取当前系统时间,绘制对应的数码管

        1.5.1 增加七段数码管之间的线条间隔

          

 

        代码:     

#绘制数码管间隔
def drawgap():
    turtle.penup()
    turtle.fd(5)

        1.5.2 获取当前时间

        

 

      代码:   

  1. def drawdate(date):
  2.     turtle.pencolor("red")
  3.     for in date:
  4.         if ='-':
  5.             turtle.write('年',font=("arial"18"normal"))
  6.             turtle.pencolor("green")
  7.             turtle.fd(40)
  8.         elif ='=':
  9.             turtle.write('月',font=("arial"18"normal"))
  10.             turtle.pencolor("blue")
  11.             turtle.fd(40)
  12.         elif ='+':
  13.             turtle.write('日',font=("arial"18"normal"))
  14.         else:
  15.             drawdigit(eval(i))

      

 

      

 

     1.6 七段数码管完整代码:     

  1. #sevendigitsdrawv2.py
  2. import turtle, time
  3. def drawgap(): #绘制数码管间隔
  4.     turtle.penup()
  5.     turtle.fd(5)
  6. def drawline(draw):   #绘制单段数码管
  7.     drawgap()
  8.     turtle.pendown() if draw else turtle.penup()
  9.     turtle.fd(40)
  10.     drawgap()
  11.     turtle.right(90)
  12. def drawdigit(d): #根据数字绘制七段数码管
  13.     drawline(trueif in [2,3,4,5,6,8,9else drawline(false)
  14.     drawline(trueif in [0,1,3,4,5,6,7,8,9else drawline(false)
  15.     drawline(trueif in [0,2,3,5,6,8,9else drawline(false)
  16.     drawline(trueif in [0,2,6,8else drawline(false)
  17.     turtle.left(90)
  18.     drawline(trueif in [0,4,5,6,8,9else drawline(false)
  19.     drawline(trueif in [0,2,3,5,6,7,8,9else drawline(false)
  20.     drawline(trueif in [0,1,2,3,4,7,8,9else drawline(false)
  21.     turtle.left(180)
  22.     turtle.penup()
  23.     turtle.fd(20)
  24. def drawdate(date):
  25.     turtle.pencolor("red")
  26.     for in date:
  27.         if ='-':
  28.             turtle.write('年',font=("arial"18"normal"))
  29.             turtle.pencolor("green")
  30.             turtle.fd(40)
  31.         elif ='=':
  32.             turtle.write('月',font=("arial"18"normal"))
  33.             turtle.pencolor("blue")
  34.             turtle.fd(40)
  35.         elif ='+':
  36.             turtle.write('日',font=("arial"18"normal"))
  37.         else:
  38.             drawdigit(eval(i))
  39. def main():
  40.     turtle.setup(800350200200)
  41.     turtle.penup()
  42.     turtle.fd(-350)
  43.     turtle.pensize(5)
  44. #    drawdate('2018-10=10+')
  45.     drawdate(time.strftime('%y-%m=%d+',time.gmtime()))
  46.     turtle.hideturtle()
  47.     turtle.done()
  48. main()

  2、科赫雪花小包裹

    2.1 问题描述

       

    2.2 绘制n阶科赫曲线

       代码:   

  1. #kochdrawv1.py
  2. import turtle
  3. def koch(size, n):
  4.     if =0:
  5.         turtle.fd(size)
  6.     else:
  7.         for angle in [060-12060]:
  8.            turtle.left(angle)
  9.            koch(size/3, n-1)
  10. def main():
  11.     turtle.setup(800,400)
  12.     turtle.penup()
  13.     turtle.goto(-300-50)
  14.     turtle.pendown()
  15.     turtle.pensize(2)
  16.     koch(600,3)     # 0阶科赫曲线长度,阶数
  17.     turtle.hideturtle()
  18. main()

        

 

     2.3 科赫曲线到科赫雪花的绘制

      代码:  

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      # 3阶科赫雪花,阶数
    koch(400,level)     
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.hideturtle()
main()

 

    

 

      运行结果:

      

 

      

 

 

 

 

 

       

    

 

 

 

    

 

 

 

 

 

 

    

 

      

 

 

 

 

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网