2.3函数基础

目录

一、课程内容

二、知识点

1、函数的定义及作用

2、函数的创建及调用

3、含单个参数的函数

4、太阳花代码解析

四、延伸


一、课程内容

  1. 函数的定义
  2. 函数的创建及调用
  3. 含单个参数的函数

、知识点

1、函数的定义及作用

①函数的概念:

函数是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

②函数的作用:

可以加强代码的复用性,提高程序编写的效率

2、函数的创建及调用

①函数的创建:

1551063811346

在python中,创建函数需要使用def关键字来定义它,后接函数名、参数列表、冒号,从第二行开始是函数体,函数体需要进行缩进,通常是4个英文空格。例如:

def func():
    print("hello")

②函数名的明明要求:

a.函数名可以由字母、数字和下划线组成,但不能以数字作为开头

b.函数的名字尽量表达出函数的功能

③空函数

当我们创建函数时,如果没有想好怎么写函数体的代码,可以使用pass语句。pass是跳过的意思,它可以起到占位符的作用

def func1():
    pass

④函数的调用

函数定义好了,需要进行调用。如果不调用它,则不会产生任何效果

def func():
    print("hello")
func()

输出为:

hello

3、含单个参数的函数

1. ‌使用Tab键进行多行缩进

  • 在大多数文本编辑器和IDE中,选中多行文本后,按下Tab键可以一次性将这些行向右缩进一个制表符宽度。‌12
  • 如果需要减少缩进,可以按下Shift + Tab组合键,将选中的多行文本向左移动一个制表符宽度。

在python中,给函数设置参数非常简单,只需要在函数名后面的“()”中添加上参数,然后在函数体中使用参数即可。

python中设置的参数其实就相当于一个变量,然后直接在函数体中调用变量就可以了。

在python中,定义参数时,不用定义参数的数据类型。

设置参数时,参数时没有实际值的,我们称它为形参;当调用的时候,会另外给它传一个实际的参数,这个参数才会在函数体中生效,我们称它为实参。

例如:

def print_name(name):
    print("我的名字是"+name)
print_name("乐乐")

输出为:

我的名字是乐乐

在这个案例中,name是形参,相当于一个变量。当调用时,传入的“乐乐”就是实参。

4、太阳花代码解析

太阳花的代码为(拓展知识):

import turtle
turtle.speed(0)
turtle.up()
turtle.right(90)
turtle.forward(200)
turtle.down()
turtle.right(180)
# 花茎
turtle.pensize(8)
turtle.pencolor("green")
turtle.forward(100)
# 花叶
turtle.setheading(45)
turtle.circle(-120,60)
turtle.setheading(-135)
turtle.circle(-120,60)
turtle.setheading(135)
turtle.circle(120,60)
turtle.setheading(-45)
turtle.circle(120,60)
turtle.setheading(90)
turtle.forward(200)
# 花
turtle.pensize(1)
turtle.pencolor('orange')
turtle.fillcolor('yellow')
turtle.begin_fill()
# 画20个正方形
for i in range(20):
    # 绘制正方形
    for j in range(4):
        turtle.forward(80)
        turtle.left(90)
    # 每次画完正方形调整画笔角度以免重复
    turtle.left(18)
turtle.end_fill()
turtle.hideturtle()

我们把它分解开,画花的部分,我们在以前的课程里学过,代码如下:

# 花
turtle.pensize(1)
turtle.pencolor('orange')
turtle.fillcolor('yellow')
turtle.begin_fill()
# 画20个正方形
for i in range(20):
    # 绘制正方形
    for j in range(4):
        turtle.forward(80)
        turtle.left(90)
    # 每次画完正方形调整画笔角度以免重复
    turtle.left(18)
turtle.end_fill()

画花叶和花茎的代码如下:

import turtle
turtle.speed(0)
turtle.up()
turtle.right(90)
turtle.forward(200)
turtle.down()
turtle.right(180)
# 花茎
turtle.pensize(8)
turtle.pencolor("green")
turtle.forward(100)
# 花叶
turtle.setheading(45)
turtle.circle(-120,60)
turtle.setheading(-135)
turtle.circle(-120,60)
turtle.setheading(135)
turtle.circle(120,60)
turtle.setheading(-45)
turtle.circle(120,60)
turtle.setheading(90)
turtle.forward(200)

我们画太阳花时,画笔移动到一个地点后,开始画太阳花,这是,我们需要把画笔下移,从花的地步开始画:

import turtle
# 画笔向下移动一段距离
turtle.up()
turtle.right(90)
turtle.forward(200)
turtle.down()
turtle.right(180)

此时画笔由A点向下移动,接着画笔会先画花茎的下班部分,以及花叶:

1551081912782

代码为:

# 花茎
turtle.pensize(8)
turtle.pencolor("green")
turtle.forward(100)
# 花叶
turtle.setheading(45)
turtle.circle(-120,60)
turtle.setheading(-135)
turtle.circle(-120,60)
turtle.setheading(135)
turtle.circle(120,60)
turtle.setheading(-45)
turtle.circle(120,60)

这里主要说一下花叶的画法,我们以右边的花叶为例(左边也是同样的原理):

1551082391292

简单来说,花叶就是由两个圆的相交部分组成:

1551083008956

把它们相交的部分取出来,就得到了我们的叶子:

10

它的实现代码是这样的:

import turtle
 
turtle.setheading(45)
turtle.circle(-120,60)
turtle.setheading(-135)
turtle.circle(-120,60)

关于这一段代码,我们先来讲解circle():

它的第一个参数是圆的半径;

如果半径是正数,那么turtle会逆时针画圆,

12

如果是个负数,那么turtle会顺时针画圆,

11

第二个参数是圆的弧度,例如circle(-120, 60)就是取圆心角为60度的弧长,在turtle的官方文档中把弧长也叫作步长。

13

这里的半径-120和弧长60同学们是可以随意设置的,只需要花叶两边的大小和弧长一样即可(花叶的两边弧长不一样也能画出花叶,但是花叶就不会对称,而且计算难度会很复杂),它们的主要作用是设置花叶的大小。

接下来我们说一下画花叶的setheading(45)和setheading(-135)。这两个角度的数值是相互关联的,如果设置不正确,那么画的花叶就不会重合在一起。

首先,当画笔准备画花叶时,我们不一定能够控制好画笔的朝向,所以需要用setheading()重置画笔的朝向。

15

我们知道,花叶和花茎之间肯定是有一定的倾斜角的,这个时候我们需要设置一个角度达到倾斜的效果,这个角度,同学们可以自己设置想要的数值。

接下来我们来说第二个setheading():

16

这个角度需要根据第一个角度的数值进行设定,具体原理看下图:

14

这里我们以x和y轴的交点O作为画笔画花叶的起始位置,当画笔setheading(45)之后,会得到直线L1的朝向(L1和水平方向的夹角为45°,L1也是圆2的切线),此时我们进行画圆,会得到圆2,但我们只取60弧度,到达图中有小箭头的位置,这个时候,我们需要画花叶的另一半,依然使用setheading()调整画笔的方向,L2是一条水平线,

如果我们这时候依然使用setheading(45)画第二条弧,那么会得到下面的结果:

17

很明显,我们需要把第二条弧旋转180°,才能与第一条弧合起来形成一张花叶,所以这里第二个setheading()的角度与第一个是互为补角的关系,由于turtle里面,向左转为正数,向右方旋转为负数,所以如果第一个角设置为45°,那么第二个setheading设置的角度就需要是-135°

四、延伸

python本身内置了一些常用的函数,以便于我们使用。同学们定义自己的函数时,尽量不要与python的内置函数重名,否则会覆盖python的内置功能。

1551075856814

具体每一个内置函数的功能,同学们可以自行查看python的官方文档:

内置函数 — Python 3.7.13 文档

### Codesys 2.3入门教程和基础知识 #### 学习目标 为了更好地理解Codesys 2.3,学习者应熟悉该平台所支持的不同编程语言及其特点。这有助于编写高效、可靠的工业控制系统程序。 #### 支持的编程语言 Codesys V2.3提供了一个全面的开发环境来创建自动化应用程序,其中包含了多种IEC 61131-3标准定义的语言选项[^1]: - **结构化文本(Structured Text, ST)**: 这是一种高级文本型编程方式,适合处理复杂的逻辑运算。 - **功能块图(Function Block Diagram, FBD)**: 图形化的表示方法,通过连接不同的函数模块实现数据流传递。 - **梯形图(Ladder Diagram, LD)**: 类似于继电器电路的设计形式,在电气工程领域非常流行。 每种语言都有其特定的应用场景以及优势所在;因此,初学者可以根据个人喜好或者项目需求选择最适合自己的编程风格。 #### 开发流程概述 当启动一个新的工程项目时,通常会经历以下几个阶段的工作过程: 1. 创建新项目并配置硬件参数; 2. 设计程序架构,确定所需的功能组件; 3. 编写具体业务逻辑代码; 4. 测试与验证系统的正确性和稳定性; 5. 部署到实际运行环境中去执行任务。 在整个过程中,利用好集成调试工具可以大大提高工作效率,减少错误发生率。例如设置断点、单步执行等功能对于排查问题十分有用。 #### 获取更多资源和支持 除了官方文档外,还有许多在线社区论坛可供交流经验和技术心得。积极参与讨论能够加速成长速度,并解决遇到的各种难题。 ```python # 示例Python代码用于说明如何与其他系统交互(假设情景) import requests def send_data_to_server(url, data): response = requests.post(url=url, json=data) return response.status_code == 200 if __name__ == "__main__": url = "http://example.com/api" payload = {"key": "value"} success = send_data_to_server(url, payload) print(f"Data sent successfully? {success}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值