Python四级考试笔记

Python四级考试笔记【源源老师】

四级标准

一、 理解函数及过程、函数的参数、函数的返回值、变量作用域等概念。

二、 能够创建简单的自定义函数。

三、 理解算法以及算法性能、效率的概念,初步认识算法优化 效率的方法。

四、 理解基本算法中递归的概念。

五、 掌握自定义函数及调用,实现基本算法中的递归方法。

六、 掌握基本算法中由递归变递推的方法。

七、 理解基本算法中的分治算法,能够用分治算法实现简单的 Python程序。

八、 掌握第三方库(模块)的功能、获取、安装、调用等。

函数

1. 定义

  • 函数:是组织好的,可重复使用的,用来实现特定功能的代码段。例如:
res = len('I like python')
print(res) #13
  • 为什么我们随时可以使用len函数?因为len函数是python的内置函数,已经提前写好了,可以重复被使用,len函数的作用就是用来统计长度的。我们使用过的:input()、print()、str()、int()等都是Python的内置函数。

函数主要有两大作用:

  • 将功能封装在函数内,可供随时随地重复利用
  • 提高代码的复用性,减少重复代码,提升效率

2. 语法

def 函数名(参数):函数体return 返回值

注意: ① 参数如不需要,可以省略 ② 返回值如不需要,可以省略 ③ 函数必须先定义后使用

举例:

def fn():print('我喜欢python')#调用函数,也就是让fn函数执行
fn()

3. 参数

参数的作用是:在函数进行计算的时候,接受外部(调用时)提供的数据

有如下代码,完成了2个数字相加的功能:

def add():sum = 1+2print(sum)#调用函数    
add()

这个函数的功能非常局限,只能计算1 + 2。有没有可能实现:每一次使用函数,用户给出任意两个数字,都能进行相加呢?可以的,使用函数的传入参数功能,即可实现。

def add(x, y):sum = x+yprint(sum)add(1,2) #每次调用函数时,可以传入想要的参数
add(3,4) #每次调用函数时,可以传入想要的参数
  • 形参:函数定义中,提供的x和y,称之为 形式参数(形参),表示函数声明将要使用2个参数,参数之间使用逗号进行分隔。
  • 实参:函数调用中,提供的1和2,称之为 实际参数(实参),表示函数执行时真正使用的参数值。传入的时候,按照顺序传入数据,使用逗号分隔。

【注意】:在Python中,如果一个方法定义时声明了某个参数,那么在调用这个方法时就必须提供这个参数的值,否则程序会报错。

4. 返回值

  • 返回值:就是程序中函数完成事情后,最后给调用者的结果
def add(x, y):sum = x+yreturn sumres = add(1,2)
print(res) #3

以上add函数用来对两个数进行相加,最后,会将相加的结果sum返回给函数调用者res
所以,变量res接收到了函数的执行结果,也就是res = 3.

  • 【扩展】:思考以下问题
    在这里插入图片描述

5. 函数的嵌套

  • 函数嵌套:指的是一个函数里面又调用了另外一个函数
def fn():print('I like python')def add(x, y):sum = x+yprint(sum)fn()add(1,2)

6. 变量作用域

  • 变量作用域指的是变量的作用范围(即变量在哪里可用,在哪里不可用)。变量作用域主要分为两类:局部变量和全局变量。

(1)局部变量

  • 局部变量:定义在函数体内部的变量,即只在函数体内部生效
在这里插入图片描述

变量num是定义在testA函数内部的变量,在函数内部访问不会报错,但在函数外部访问会报错。

(2)全局变量

  • 全局变量:在函数体内、函数体外都能访问的变量

思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办?
答:将这个数据存储在一个全局变量里面

在这里插入图片描述

7. 递归函数

  • 递归:即函数自己调用自己的特殊写法。

(1)计算n的阶乘

def fact(n):if n==1:return 1return n * fact(n - 1)
res = fact(5)
print(res) #120

我们可以拆解fact(5)计算的详细逻辑:

===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120

8. 递推算法

  • 递推算法:通常是通过循环来实现,直接从边界出发,直到求出函数值。

(1)斐波那契数

  • 斐波那契数 :该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。例如:0 1 1 2 3 5 8…
n = input('please input number: ')
n = int(n)
def fn(n):if n==0:return 0;list = [0,1]for i in range(2,n+1):list.append(list[i-1]+list[i-2]);return list[-1]
print(fn(n))

9. 分治算法

  • 分治算法:将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将结果合并以解决原来的问题。常见的分治算法:快速排序、归并排序、二分搜索。

分治算法的基本步骤包括:

  • 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题。
  • 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题。
  • 合并:将各个子问题的解合并为原问题的解。

10. 算法复杂度

  • 时间复杂度:描述了一个算法执行所需的时间,随输入数据量的增长而增长的量级。通常用大O符号(O)来表示。时间复杂度越高,意味着算法运行所需的时间越长。因此,在选择算法时,我们希望选择时间复杂度较低的算法以提高效率。

  • 空间复杂度:对一个算法在运行过程中临时占用存储空间大小的量度。空间复杂度越高,意味着算法运行所需的额外空间越大。因此,在选择算法时,我们也需要考虑其空间复杂度,以确保算法在运行时不会占用过多的空间资源。

11. python第三方库

Python使用import语句导入一个模块,导入官方模块,不需要考虑路径的问题,例如,导入系统自带的模块 math,直接导入即可。

import math

导入以后,你就可以认为math是一个指向已导入模块的变量,通过该变量,我们可以访问math模块中所定义的所有公开的函数、变量和类:

# 属性:圆周率
import math
print(math.pi) # 3.141592653589793# 函数:次方
print(math.pow(2, 3)) # 8.0

如果希望导入模块的指定部分属性或函数,比如我们希望导入math模块的圆周率pi,那么可以使用from…import…语句。

# 属性:圆周率
from math import pi
print(pi) # 3.141592653589793

这个时候,由于pow()函数没有导入,所以是不能使用pow()函数的。如果希望导入模块里面的所有内容,那么使用from …import *语句。

from math import *
print(pi) # 3.141592653589793
print(pow(2, 3)) # 8.0

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

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

相关文章

【开源】SpringBoot框架开发独居老人物资配送系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询社区4.2 新增物资4.3 查询物资4.4 查询物资配送4.5 新增物资配送 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的独居老人物资配送系统,包含了社区档案、…

win7自带截图工具保存失效解决办法

今日发现一台远航技术的win7中自带的截图工具使用时正常,保存图片时没有弹出保存位置的对话窗口,无法正常保存图片。解决方案如下: 1、进入注册表编辑器。开始-搜索程序和文件-输入 regedit 按下回车键,打开注册表; 2、…

多模态基础---BERT

1. BERT简介 BERT用于将一个输入的句子转换为word_embedding,本质上是多个Transformer的Encoder堆叠在一起。 其中单个Transformer Encoder结构如下: BERT-Base采用了12个Transformer Encoder。 BERT-large采用了24个Transformer Encoder。 2. BERT的…

静态时序分析:SDC约束命令set_clock_transition详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析:SDC约束命令create_clock详解一文的最后,我们谈到了针对理想(ideal)时钟,可以使用set_clock_transition命令直…

数据结构与算法:双向链表

朋友们大家好啊,在上节完成单链表的讲解后,我们本篇文章来对带头循环双向链表进行讲解 双向链表 双向链表、头节点和循环的介绍构建双向链表节点的构建初始化双向循环链表(空链表)销毁双向链表 链表的打印双向链表头尾的插与删尾插…

Medical Boundary Diffusion Modelfor Skin Lesion Segmentation

皮肤病灶分割的医学边界扩散模型 摘要 由于多尺度边界关注和特征增强模块的进步,皮肤镜图像中的皮肤病变分割最近取得了成功。然而,现有的方法依赖于端到端学习范式,直接输入图像和输出分割图,经常与极其困难的边界作斗争&#…

B端系统升级方案模板:针对美观性和体验性升级(总体方案)

大家好,我是大美B端工场,专注于前端开发和UI设计,有需求可以私信。本篇从全局分享如何升级B端系统,搞B端系统升级的有个整体思维,不是说美化几个图标,修改几个页面就能解决的,这个方案模板&…

Spring AMQP(3.1.1)设置ConfirmCallback和ReturnsCallback

文章目录 一、起因二、代码1. 定义exchange和queue2. RabbitTemplate3. EnhancedCorrelationData4. 发送消息 环境如下 VersionSpringBoot3.2.1spring-amqp3.1.1RabbitMq3-management 一、起因 老版本的spring-amqp在CorrelationData上设置ConfirmCallback。但是今天却突然发…

非常详细!操作系统【IO核心子系统】

🌈个人主页:godspeed_lucip 🔥 系列专栏:OS从基础到进阶 🏆🏆本文完整PDF源文件请翻阅至文章底部下载。🏆🏆 1 I/O核心子系统——概述1.1 核心子系统要完成的功能1.1.1 假脱机技术1…

Python 异常处理及程序调试

Python 是一门功能强大而又易于学习的编程语言,它提供了丰富的工具和库来帮助开发者编写高效、稳定的程序。然而,在编写复杂的应用程序时,错误和异常是难以避免的。本文将介绍 Python 中的异常处理机制以及程序调试技巧,帮助读者提…

JavaScript中什么是事件委托

JavaScript 中的事件委托(Event delegation)是一种重要的编程技术,它能够优化网页中的事件处理,提高程序的性能和可维护性。本文将详细介绍事件委托的概念、工作原理,并提供示例代码来说明其实际应用。 事件委托是基于…

Linux版Black Basta勒索病毒针对VMware ESXi服务器

前言 Black Basta勒索病毒是一款2022年新型的勒索病毒,最早于2022年4月被首次曝光,主要针对Windows系统进行攻击,虽然这款新型的勒索病毒黑客组织仅仅才出来短短两个多月的时间,就已经在其暗网平台上已经公布了几十个受害者之多&…

【案例8】用户中心实现涉及内容和过程

图1 如图1是用盒子模型内容实现的,但是需要了解一些内容。 一.内容知识引入 1.内边距属性(padding) 为了调整盒子在网页中的显示位置,常常需要为元素设置内边距。内边距也被称为内填充,是指元素内容和边框之间的距离…

linux安装mysql8且初始化表名忽略大小写

mysql8下载地址 MySQL8.0安装步骤 1、把安装包上传到linux系统,解压、重命名并移动到/usr/local/目录: cd ~ tar -xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz mv mysql-8.0.32-linux-glibc2.12-x86_64/ mysql80/ mv mysql80/ /usr/local/2、在M…

VMwareWorkstation17.0虚拟机安装Windows2.03完整详细步骤图文教程

VMwareWorkstation17.0虚拟机安装Windows2.03完整详细步骤图文教程 第一篇 下载Windows2.03第二篇 配置Windows2.03虚拟机机器环境第三篇 启动Windows2.03系统 第一篇 下载Windows2.03 1.Windows2.0原版软盘下载地址是 暂不提供,后续更新 2.Windows2.03虚拟机镜像下…

鸿蒙开发-HarmonyOS UI架构

初步布局Index 当我们新建一个工程之后,首先会进入Index页。我们先简单的做一个文章列表的显示 class Article {title?: stringdesc?: stringlink?: string }Entry Component struct Index {State articles: Article[] []build() {Row() {Scroll() {Column() …

GiantPandaCV | 视觉类表面缺陷检测项目相关技术总结

本文来源公众号“GiantPandaCV”,仅用于学术分享,侵权删,干货满满。 原文链接:视觉类表面缺陷检测项目相关技术总结 本文由海滨撰写,首发于GaintPandaCV。 零、前言 做这个方向的项目也有一段时间了,作为…

Deep learning学习笔记

lec 1:Regression 1.5 Linear neural networks for regression线性神经网络的回归 I parameterizing output layer, I handling data, I specifying loss function, I training model. 浅层网络包括线性模型,其中包含了许多经典的统计预测方法&…

C++中的拷贝构造函数

一、拷贝构造函数的概念 拷贝构造函数用于创建一个与已有对象相同的对象,本质上也是构造函数的重载 拷贝构造函数只有一个类型为 const 类类型引用的形参,当我们要创建一个与已存在对象相同的对象时,由编译器自动调用拷贝构造函数。 clas…

简单的edge浏览器插件开发记录

今天在浏览某些网页的时候,我想要屏蔽掉某些信息或者修改网页中的文本的颜色、背景等等。于是在浏览器的控制台中直接输入JavaScript操作dom完成了我想要的功能。但是每次在网页之间跳转该功能都会消失,我需要反复复制粘贴js脚本,无法实现自动…