【Python】八、函数的使用

news2024/11/24 2:22:28

文章目录

  • 实验目的
  • 一、定义函数
  • 二、调用函数
  • 三、参数的传递和函数的返回值
  • 四、编写函数,输入不同的参数,绘制不同的科赫曲线
    • 参考代码
    • 实验截图


实验目的

  1. 掌握函数的定义和调用;
  2. 掌握函数的用法;
  3. 理解递归;
  4. 培养学生动手查阅资料能力和解决实际问题的能力和团队合作能力。

一、定义函数

       在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
定义函数的三种形式:
一、无参函数
       定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名
       在函数阶段括号内没有参数,称为无参函数。需要注意的是:定义时无参,意味着调用时也无需传入参数。
       如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成无参函数。

def func():
    print('hello nick')
    
func()  # hello nick

二、有参函数
       在函数定义阶段括号内有参数,称为有参函数。需要注意的是:定义时有参,意味着调用时也必须传入参数。
       如果函数体代码逻辑需要依赖外部传入的值,必须得定义成有参函数。

def sum_self(x, y):
    """求和"""
    res = x+y
   print(res)

sum_self(1,2)  # 3

三、空函数
       当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能。

def func():
    Pass

二、调用函数

       和C++一样,Python中函数的定义必须在调用的前面,但是在函数的内部调用一个函数,不用考虑函数的顺序,只要被调用的函数被定义了即可。
一、先定义后,后调用为一般方法:

def  add_test(a,b):
        return a+b
result  =  add_test(1,2)
print(result)

二、可以在函数内部调用后面的函数

def add_1(a,b):
    return add_2(a,b)   #函数内部调用add_2
def add_2(a,b):
    return a+b
print ('add_1的调用:',add_1(1,2))   #3
print('add_2的调用:',add_2(2,3))    #5

三、不可以先调用后定义

print("add的调用",add(a,b))
def  add(a,b):
        return a+b

三、参数的传递和函数的返回值

函数:封装功能独立的代码,在需要时通过函数名被调用
参数:外界希望在函数内部处理的数据
a、位置参数:
实参的位置和形参保持一致,按形参声明的先后顺序一一赋值。
b、关键字参数:
调用函数的时候以 形参=实参的方式来传参,这个时候实参的顺序无所谓

函数根据有无参数和返回值,可以相互结合,共有4种组合形式

1.无参数,无返回值
2.无参数,有返回值
3.有参数,无返回值
4.有参数,有返回值

1、什么是返回值
a、返回值就是函数调用表达式的值,就是return关键字后面的表达式的值。返回值就是将函数里面的数据传递到函数外面。
b、Python中每个函数都有返回值,默认是None,如果遇到return ,return 后面是什么返回值就是什么。
return功能
确定函数的返回值
结束函数,执行时遇到return,函数直接结束,并且将return后面的值作为函数返回值。

2、多个返回值
return 值1, 值2, 值3… 相当于返回一个元祖

def fun3():
    return 1, 2, 3

fun3()
print(type(fun3()))

3、怎么确定函数是否需要返回值
函数执行完成后是否产生新的数据,如果产生新的数据就将这个数据用return返回。


四、编写函数,输入不同的参数,绘制不同的科赫曲线

参考代码

import turtle  # 引入决解问题需要的工具——turtle作图包


# 定义turtle画笔和画布的参数
def huabi(i, h):
    if i == 6:
        turtle.pencolor('red')
        turtle.speed(0)  # speed()参数有[0,10]:“0”特殊、代表最快速度,其余[1,10]值越大、速度越快
    elif i == 5:
        turtle.pencolor('blue')
        turtle.speed(10)
    elif i == 4:
        turtle.pencolor('purple')
        turtle.speed(8)
    elif i == 3:
        turtle.pencolor('pink')
        turtle.speed(6)
    elif i == 2:
        turtle.pencolor('green')
        turtle.speed(4)
    else:
        turtle.speed(2)
    turtle.pensize(2)  # 设置画笔宽度为2
    turtle.setup(800, 1200, 100,
                 10)  # setup()参数有4个:前两个代表画布的“宽”和“高”,当数值为整数时、表示绝对像素大小,当小数时、表示站屏幕的比例。后两个可以省略,默认为屏幕中心位置,代表距离“屏幕左上角”的距离,单位是像素密度,
    turtle.penup()  # 抬起画笔,之后的画笔动作、就不会产生图线
    turtle.goto(-300, h)  # 以画布中心点为坐标原点(0,0),将画笔移动到坐标(-300,100)处
    turtle.pendown()  # 落下画笔,以便画图


# 定义“尖”
def koch(size, n):
    if n == 0:  # 0阶的科赫雪花曲线就是一条线,大小为输入的“size”
        turtle.fd(size)
    else:  # 高阶科赫雪花曲线
        for i in [0, 60, -120, 60]:  # turtle在“尖”的四条线上改变的角度,分别为0°,60°,-120°,60°
            turtle.left(i)  # 对应上边四个角度,一共需要转4次弯,画出本阶的四条线,
            koch(size / 3, n - 1)  # 每个角度下的一个边,对应低一阶的客户雪花曲线的“尖”;至此完成函数本身的循环和复用,自动画出一个完整的n阶“尖”


# 定义main()主函数
def main():  # 设定参数接口
    size = int(input("请输入尺寸:"))
    h=int(input("请输入高:"))
    for i in range(1, 7):
        h = h - 150
        huabi(i, h)
        koch(size, i)

main()  # 在设定参数之后,调用主函数

实验截图

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源:分享4个非常经典的CMS开源项目

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

Spark系列之Spark安装部署

title: Spark系列 第二章 Spark安装部署 2.1 版本选择 下载地址: https://archive.apache.org/dist/spark 四大主要版本 Spark-0.X Spark-1.X(主要Spark-1.3和Spark-1.6) Spark-2.X(最新Spark-2.4.8) Spark-3.x&a…

降级、熔断和限流———一看就会

设定:A上游系统、B本系统、C下游系统 服务降级 服务降级是从整个系统B的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在B其内部暂时舍弃对一…

【Mybatis编程:统计相册表中的数据的数量】

目录 1. 书写SQL语句 2.在AlbumMapper.java接口中添加抽象方法 3. 在AlbumMapper.xml中配置SQL语句 4. 在AlbumMapperTests.java中编写并执行测试 1. 书写SQL语句 需要执行的SQL语句大致是: select count(*) from pms_album 在设计抽象方法时,如果要…

【三维重建补充知识-0】视差、深度概念及其转换

一、基本概念 把手指放在眼前,分别闭上左、右眼,我们会发现手指与后边物体的相对位置是不同的,也即两眼所识别的两幅图像之间存在视觉差异,我们通过“视差”这一概念来表示这种差别。 该过程也可以通过两个处于同一平面的相机来模…

Ajax学习:Ajax请求基本操作

点击按钮,发送请求(前端页面和服务端页面信息交流 但是不刷新页面) 注意使用谷歌浏览器 服务器端打开:使用nodemon //1、导入express const expressrequire(express) //2、创建应用对象 创建web服务器 const appexpress() //3、…

软考高级系统架构师_计算机组成与结构02_高速缓存_磁盘结构_输入输出技术_总线结构_可靠性_---软考高级系统架构师005

1.Cache是Cpu与主存储器之间的速度比主存储器要块10倍左右,因为cpu用的说主存储器中的地址, 而cpu速度很快,主存储器速度慢,所以中间加了这个cache,那么这里就涉及到,怎么把cache地址转化成主存储器的地址,cpu使用地址的时候首先访问主存储器地址,但是访问的是cache,所以这个时…

第十二周学习总结 Progress Lack

关于计划的制定 FlowUs计划链接: 点击我进入计划 发现不足:首先,制定计划经验不足,制定计划应该是具体的、有任务量、完成时间。 其次任务应该是可衡量的(比如,我阅读李升波老师的网站文章,应…

【WAX链游】发布一个免费开源的Alien Worlds【外星世界】合约脚本TLM

前言 《链游Farmers World【农民世界】爆火,发布一个免费开源的脚本》 在之前的文章中,我们分享了一个开源的农民世界(Farmers World)脚本 【OpenFarmer】:https://github.com/encoderlee/OpenFarmer 经过这段时间以来的不断学习&#xff…

【HTML】重点知识内容~快速上手

推荐前端学习路线如下: HTML、CSS、JavaScript、noodJS、组件库、JQuery、前端框架(Vue、React)、微信小程序和uniapp、TypeScript、webpack 和 vite、Vue 和 React 码源、NextJS、React Native、后端内容。。。。。。 HTML基本结构&#xff…

QT教程:QSortFilterProxyModel代理实现自定义排序、联合过滤

1. QsortFilterProxyModel介绍 QsortFilterProxyModel类用来为model和view之间提供强大的排序和过滤支持。将模型排序或者过滤后在视图上显示,并且无需对模型中的数据进行任何转换,也无需对模型在中数据进行修改。 比如: 对某列筛选带有”xxx”的关键字出来.并支持…

Maya——1——在maya中,用Arnold(阿诺德)还原Subtance Painter(sp)中的材质效果。

1根据上图的导出选项,在sp中设置arnold的导出参数,得到五张贴图,删掉其中的高度图(用不上)留下这四张 base(基础颜色) Metallic(金属度) Normal(法线&#x…

Google Colab训练yolov3自定义数据集

共分7步: 一、进入Google Colab训练环境 二、下载编译Darknet 三、上传数据集 四、修改配置文件 五、下载预训练权重文件 六、开始训练数据 七、测试训练结果 一、进入Google Colab训练环境 打开 Google Drive 云端硬盘 新建Google Colaboratory文件,…

公共大数据集群中如何配置 YARN 的公平调度器和容量调度器

公共大数据集群中如何配置 YARN 的公平调度器和容量调度器 1 YARN 资源管理框架与公平/容量调度器 作为一款资源调度框架,Yarn 支持可插拔的调度器,常见的调度器有公平调度器 fair scheduler 和容量调度器 capacity scheduler。常见的大数据发行版中&a…

一张照片,如何生成一个二维码?

冬天落在恭王府的第一场大雪、春天聚在河边觅食的麻雀、盛夏午后从冰箱里拿出来的大西瓜、深秋爬满南墙的红叶……每一份惊喜和快乐,都值得分享给更多的朋友。 今天我们要介绍的是,如何将一张照片,做成一个二维码,扫码后就可以看…

利用两个小demo理解汇编代码排查内存溢出问题

利用两个小demo理解汇编代码排查内存溢出问题 https://www.cnblogs.com/liuchuanloong/articles/16925695.html 【背景】 近日处理现场问题时遇到了踩内存导致的崩溃问题,然而个人对反汇编程序执行过程不熟悉,通过查阅资料,对比分析两个小d…

不适用于云的应用程序有哪些?

所有应用程序都适合在云上运行吗?这是在云计算中寻求改进IT解决方案的企业经常问的一个问题。这个问题的答案是“视情况而定”。虽然企业云的应用正在飞速发展,大多数企业都在考虑将整个应用程序迁移到云上,以实现可伸缩、灵活、可访问、敏捷和精益的工…

PC端配置定位服务步骤(依赖于腾讯位置服务)

目录 第一步 : 安装 jsonp 第二步 : 在mian.js中配置并使用 第三步 : 在 manifest.json中进行相关配置 第四步 : 获取经纬度值,从而得到地址 第一步 : 安装 jsonp 执行此代码 : np…

Origin2022安装教程

Origin2022他来了! 本人虽然是Python和R的资深绘图用户,偶尔也用用Origin,Origin的优势区间是手动、全可控,要素复杂事图片效果好: 安装方法和安装包下载破解见文末: Origin 2022新要素 1.对地理要素和…

基于 51 单片机室内灯光控制系统

1. 功能介绍 这是基于 STC89C52 单片机设计的灯光控制系统,实现对室内灯光的控制,采集光敏传感器,红外线热释电传感器,声音传感器,光照照度传感器等数据进行处理,完成室内灯光的智能控制。 支持的功能与设…