python语言程序设计(MOOC 嵩天)第五章 学习笔记(0214)

article/2025/1/5 9:56:50

第五章 函数和代码的复用

5.1 函数的定义与使用

5.1.1 函数的理解和定义

函数是一段代码的表示:
函数是IPO的实现
函数是一段代码的封装
①特定功能、可重用的语句组
②功能的抽象
#作用:降低编程难度、代码复用
def <函数名> ( <变量> ) :
<语句块>
return <返回值>

5.1.2 函数的使用及调用过程

定义时不被执行,调用时给定参数取代占位符

5.1.3 函数的参数传递

参数个数:0~n
(1)可选参数传递
def <函数名> ( <不可选参数> ,<可选参数>) :
<语句块>
return <返回值>
#如过在调用函数时给了可选参数的实际值,则继续
#如过在调用函数时没给可选参数的实际值,则使用定义时给出的默认值
(2)可变参数传递
def <函数名> ( <参数> ,*b) :
<语句块>
return <返回值>
注:*b的意思是表达不确定参数
(3)参数传递的两种方式
①位置传递
②名称传递

5.1.4 函数的返回值

函数可以有0~n个返回值,不确定使用return

5.1.5 局部变量和全局变量

(1)局部变量和全局变量是不同的变量
global <变量>:说明在本函数中使用的该变量为全局变量
(2)局部变量为组合数据类型且未创建,等同于全局变量
局部变量为组合数据类型,在函数中创建,运行结束后被释放

5.1.6 lambda函数

lambda函数返回函数名作为结果(函数的紧凑表达)
<函数名>:lambda <参数>:<表达式>

5.2 七段数码管绘制

(1)模块化思维:确定模块接口,封装功能
(2)规则化思维:过程抽象为规则,计算机自主判断
(3)化繁为简:多种功能的组合
代码优化过程:
单个数字的每一笔
完整的单个数字
根据输入时间输出8个数字
数字笔画间隔以美化
输出年月日的标识,并颜色区分
取得系统时间,格式化输出

#七段数码管
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(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,5,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.left(180)turtle.penup()turtle.fd(20)def drawDate(date):     #根据数字绘制数码管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():    #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()

5.3代码复用与函数递归

5.3.1 代码复用与模块化设计

代码复用:函数和对象、资源化和抽象化
模块化设计:通过函数或对象封装将程序划分为模块或模块间的表达(分而治之、分层抽象、体系化)
模块内部紧耦合,模块之间松耦合

5.3.2 代码复用与函数递归

函数递归:在函数定义中调用函数自身
递归:链条与基例
数学归纳法

5.3.3 函数递归的调用过程

递归的实现
递归本身是一个函数,需要用函数定义方式描述
函数内部,采用分支语句对输入参数进行判断
基例和链条,分别编写对应代码

5.3.4 函数递归实例

(1)字符串反转输出函数

def rvs(s):if s == "":return selse :return rvs(s[1:])+s[0]

(2)斐波那契数列函数

def f(n):if n==1 or n==2:return 1else:return f(n-1)-f(n-2)

(3)汉诺塔问题函数

count=0
def hanoi(n,src,dst,mid):global countif n==1:print("{}:{}->{}".format(1,src,dst))count+=1else:hanoi(n-1,src,mid,dst)print("{}:{}->{}".format(1,src,dst))count+=1hanoi(n-1,src,mid,dst)
hanoi(3,"a","b","c")
print(count)

5.4 PyInstaller库的使用

常用参数
在这里插入图片描述

5.5 科赫雪花小包裹

分形几何、科赫曲线、雪花曲线、迭代关系
(1)三阶科赫曲线

#KochDraw.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(800,400)turtle.penup()turtle.goto(-300,-50)turtle.pendown()turtle.pensize(2)koch(600,3)turtle.hideturtle()
main()

(2)科赫雪花
打包操作:pyinstaller -i curve.ico -F KochDrawV2.py
绘制阶数、科赫曲线的基本定义及角度、基础框架图形
康托尔集、谢尔宾斯基三角形、门格海绵
龙形曲线、空间填充曲线

#KochDraw.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 = 3koch(400,level)turtle.right(120)koch(400,level)turtle.right(120)koch(400,level)turtle.hideturtle()
main()

http://chatgpt.dhexx.cn/article/u6S4gUEs.shtml

相关文章

Python-3.函数和代码复用

一、函数的定义与使用 使用保留字def定义函数,lambda 定义匿名函数可选参数(赋初值)、可变参数(*b)、名称传递保留字 return 可以返回任意多个结果保留字 global 声明使用全局变量,一些隐式规则1.1 函数的理解与定义 函数是一段代码的表示 函数是一段具有特定功能的、可重用的…

python123练习5: 函数和代码复用 (第5周)

实例7:七段数码管绘制 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 描述 这是"实例"题,与课上讲解实…

北京理工大学:《Python语言程序设计》详细笔记

第一章&#xff1a;程序设计基本方法 计算机与程序设计 计算机是根据指令操作数据的设备计算机发展参照摩尔定律&#xff0c;表现为指数形式 编译和解释 计算机执行源程序两种方式&#xff1a;编译和解释编译&#xff1a;将源代码一次性转换成目标代码的过程。执行编译过程…

Python语言程序设计(嵩天)-第5周-函数和代码复用

目录&#xff1a; 5.1 函数的定义与使用5.2 实例7: 七段数码管绘制5.3 代码复用与函数递归5.4模块4: PyInstaller库的使用5.5实例8: 科赫雪花小包裹 导学 前课复习 数字类型及操作&#xff1a; 整数类型的无限范围及4种进制表示浮点数类型的近似无限范围、小尾数及科学计数…

练习5: 函数和代码复用

练习5: 函数和代码复用 1 .1实例7&#xff1a;七段数码管绘制 描述 这是"实例"题&#xff0c;与课上讲解实例相同&#xff0c;请作答检验学习效果。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬…

《python语言程序设计》笔记

《python语言程序设计》笔记 第一章 程序设计基本方法1.1基本知识1.2计算机编程1.3数据类型温度转换1.4课后习题1.5python123习题与测试第二章2.1turtle库(海龟库)2.1.1空间坐标体系2.1.2turtle角度坐标体系2.1.3RGB色彩体系2.2turtle程序语法元素分析2.2.1库引用和 import2.…

中国大学MOOCPython语言程序设计(北京理工大学)第5-6周学习笔记和课后练习

中国大学MOOCPython语言程序设计&#xff08;北京理工大学&#xff09;第5-6周学习笔记和课后练习 第5周 函数与代码复用5.1 函数的定义与使用5.2 实例7: 七段数码管绘制5.3 代码复用与函数递归汉诺塔问题 5.4 模块4: PyInstaller库的使用5.5 实例8: 科赫雪花小包裹任意累积斐波…

全国计算机等级考试二级Python(2021年9月)备考笔记 第五天

文章目录 Python语言程序设计-嵩天老师(MOOC)听课笔记 第5周知识点一函数的定义函数的调用函数的调用过程参数个数可选参数传递可变参数传递参数传递的两种方式函数的返回值局部变量和全局变量lambda函数lambda函数的应用 实例 七段数码管绘制问题分析举一反三 知识点二代码复用…

Python语言程序设计笔记

例&#xff1a;获得用户输入数字N&#xff0c;计算并输出从N开始的5个质数&#xff0c;单行输出 首先&#xff1a;定义函数判断一个数是否是质数&#xff0c;return True/False&#xff0c;注意return True的格式&#xff0c;不在for循环体中&#xff0c;在函数体中(循环的高…

Python——函数和代码复用(模块4:PyInstaller库的使用)(实例:七段数码管绘制科赫雪花小包裹)

前言 本篇主要介绍函数和代码复用&#xff0c;以七段数码管绘制为例&#xff0c;介绍函数的定义和使用。以科赫雪花小包裹为例&#xff0c;介绍PyInstaller库的使用。 &#xff08;从本篇开始&#xff0c;出现的一些库中函数介绍以及部分简单代码都将以图片形式呈现&#xff0…

Python语言程序设计第五章

第五章 函数和代码复用 方法论 -Python基本代码抽象即函数的使用方法 实践能力 -学会编写带有函数并复用代码的程度 5.1 函数的定义与使用 1、函数的理解与定义 函数是一段代码的表示 -函数是一段具有特定功能的、可重用的语句组 -函数是一种功能的抽象&#xff0c;一般函数…

创意画板延伸内容

在完成了创意画板的基础功能实现后&#xff0c;我们就可以通过画板来绘制一些有趣的图形了 1.平面山脉图 效果图如上 山脉图是由一个个山峰构成的&#xff0c;所以先绘制一个山峰 而山峰的绘制算法是&#xff1a;先确定两个点A B&#xff0c;然后获取A B的中间点P&#xff0…

Java第六课——画图板

Java第六课——画图板 这节课画一个画图板&#xff0c;可以画线画圆&#xff0c;还可以通过递归画出好看的图案如&#xff1a;谢尔宾斯基三角形&#xff0c;康托尔方形集&#xff0c;甚至立体图门格海绵。 首先创建一个窗体。定义一个类和一个方法。 public class Draw{publ…

分形理论中的分维解析

最近打算利用一段时间好好学习一下分形理论&#xff0c;也写一系列博客记录下自己的学习归纳情况。下面是这部分文章的目录&#xff1a; 一、分形理论的历史过程 二、分形理论的基础概念 三、分形理论的分维解析 四、分形理论的Hausdorff维数 五、分形理论的盒维数 六、分形理论…

python绘制n阶科赫曲线线段_分形几何中科赫雪花的绘制

目录分形几何在自然界中广泛存在(康托尔集、谢尔滨斯基三角形、门格海绵、龙形曲线、科赫曲线...),实际上分形几何是一种迭代的几何图形。本文主要讨论科赫曲线。 科赫曲线的绘制: import turtle def koch(size,n):#绘制科赫曲线含俩个参数,大小和阶数 if n == 0:#基线情…

【计算几何】大自然的数学模型--分形几何

一、前言 分形几何是几何数学中的一个分支&#xff0c;也称大自然几何学&#xff0c;由著名数学家本华曼德勃罗&#xff08; 法语&#xff1a;BenoitB.Mandelbrot&#xff09;在 1975 年构思和发展出来的一种新的几何学。分形几何是对大自然中微观与宏观和谐统一之美的发现&…

Java分形递归——门格海绵

门格海绵的结构简单来说就是从一个正方体开始&#xff1b;再把正方体的每一个面分成9个正方形&#xff0c;这时就形成了由27个小正方体组成的一个大正方体&#xff1b;然后再把每一面的中间的正方体和最中心的正方体去掉&#xff0c;最终留下20个正方体。最后&#xff0c;把每一…

门格海绵的实现

实现效果&#xff1a; 源代码&#xff1a; package sponge;import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Polygon;import javax.swing.JFrame;public class Sponge_Main extends JFrame impleme…

混沌与分形(一):谢尔宾斯基三角形与门格海绵

研究混沌运动&#xff0c;少不了对分形理论的探讨。分形&#xff1a;通常被定义为“一个粗糙或零碎的几何形状&#xff0c;可以分成数个部分&#xff0c;且每一部分都&#xff08;至少近似地&#xff09;是整体缩小后的形状”&#xff0c;即具有自相似的性质。 本篇将从一维过…

分形之门格海绵

门格海绵解决思路&#xff1a; 1. 迭代如何实现 2. 立方体该怎么画 3. 实现门格海绵代码 4. 画图板门格海绵代码 1. 迭代如何实现 为了实现从1图—>2图—>3图效果,我们就要想到用迭代去实现. 因为像3图这样的图形,是由若干个2图这样的基本图形组成的 那么,怎样实现…