python--实验7 函数(1)

news2024/9/24 7:20:11

知识点

函数的定义与调用

  • 函数分类:内置函数和自定义函数。
  • 函数定义:使用def关键字定义函数,包括函数名、参数列表和函数体。
  • 注意:
    • (1)即使该函数不需要接收任何参数,也必须保留一对空的圆括号。
    • (2)python的参数不需要声明数据类型
    • (3)括号后面的冒号不能省略。
    • (4)函数体相对于def关键字必须保持一定的空格缩进。  
    •   (5)return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return           相当于返回 None。强调了即使函数不需要参数,也必须保留空括号,参数不需要声明数据类型,函数体需要适当的缩进,以及return语句的使用。
  • 无参函数有参函数:无参数和有参数的函数。
  • 空函数:使用pass关键字定义空函数的情况
  • 函数调用:如何调用函数,包括无参数和有参数的情况。
    • 如果调用的是无参数函数,则实参列表省略。 通常将函数定义和函数调用都放在一个程序文件中,然后运行程序文件。
    • 嵌套调用

递归函数

  • 递归定义:指一个函数的函数体中又直接或间接地调用该函数本身的函数。
  • 递归出口与递归体:如何设置递归的终止条件(出口)和递归的计算过程(体)。
  • 实例:提供了计算阶乘和求和的递归函数示例。

函数参数的传递

  • 参数传递:Python中参数传递的机制,区分了不可变对象和可变对象的传递方式。在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。当参数类型为固定数据类型(如整数、浮点数、字符串、元组等)时,类似 C++ 的值传递,在函数内部直接修改形参的值不会影响实参。当参数类型为可变数据类型(如列表、字典、集合等)时,类似 C++ 的引用传递。在函数内部使用下标或其他方式为其增加、删除元素或修改元素值时,修改后的结果是可以反映到函数之外的,即实参也会得到相应的修改
  • 不可变参数类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。展示了在函数内部修改不可变类型参数不会影响外部变量。
  • 可变参数类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。展示了可变类型参数在函数内部的修改会影响到外部变量。

参数的类型

  • 位置参数:调用函数时实参和形参的顺序和数量必须一致。
  • 关键字参数:如何使用关键字参数来指定实参对应的形参,允许参数的顺序不固定。
    • 关键字参数的形式为:        形参名=实参值
    •   通过形式参数的名称来指示为哪个形参传递什么值,这可以跳过某些参数或脱离参数的顺序。(实参名来自形参的名字)
  • 默认值参数:展示了如何为函数参数设置默认值,以及相关的规则。
    • 默认值参数的形式为:     形参名=默认值
    • 注意: (1)默认值参数必须出现在形参表的最右端。也就是说,第一个形参使用默认值参数后,它后面的所有形参也必须使用默认值参数,否则会出错。 (2)所有的位置参数必须在默认参数前,包括函数定义和调用
  • 可变长度参数(形参):使用***来接受不定数量的参数,分别将它们存储在元组和字典中。可变长度参数永远放在参数的最后面。
    • 形参名前面加*,用来接受任意多个实参并将其放在一个元组中。
    • 元组可变长度形参
    • 形参名前面加**,可以接受任意多个 关键字=实参值 形式的实参。关键字参数和实参值参数被放入一个字典,分别作为字典的关键字和字典的值
    • 字典可变长度形参
  • 参数的解包裹传递:如何使用***来解包裹元组和字典,将它们作为参数传递给函数。包裹和解包裹并不是相反操作,是两个相对独立的过程。
    • 调用函数时,若函数接收的实参为元组或字典类型,可以对函数参数进行解包裹:
    • 使用* 可以解压待传递到函数中的元组、列表、字符串等类型,并按位置传递到函数入口参数中
    • 使用**可以解压待传递到函数的字典,并按关键字传递到函数入口参数中

                                                       代码部分 

  • 实验目的
  1. 熟练python编辑器pycharm的使用。
  2. 掌握python的函数的定义
  3. 掌握python的函数结构,参数位的设计,如何灵活使用不定长参数
  4. 理解python参数传递的过程
  5. 熟练并理解使用函数优化编程结构以及思路

二、实验环境

本次实验需使用实验室提供的Windows主机环境+pycharm

实验内容

说明:基础题为必做题,提高题为选做题

  1. (基础题)对于一个十进制的正整数, 定义函数f(n)为其各位数字的平方和,如:

    f(13)  : 10

    f(207) : 53

代码:

def f(n):
    return sum(int(digit)**2 for digit in str(n))

# 测试代码
print(f(13))  # 输出: 10
print(f(207)) # 输出: 53

  1. (基础题)编写一个函数, 接收字符串参数, 返回一个元组,元组的第一个值为大写字母的个数, 第二个值为小写字母个数,‘hello WROLD’,返回:(5,5)

代码:

def count_letters(s):
    upper_count = sum(1 for char in s if char.isupper())
    lower_count = sum(1 for char in s if char.islower())
    return (upper_count, lower_count)

# 测试代码
print(count_letters('helloWROLD')) # 输出: (5, 5)

提示:已知有字符串ls

ls.isupper() #判断是否为大写字母,若是,返回True

ls.islower() #判断是否为小写字母,若是,返回True

  1. (基础题) 定义一个函数,能够获取任意多个数(1-100以内)中的最大值

代码:

def max_value(*args):
    return max(args)

# 测试代码
print(max_value(10, 20, 30, 40)) # 输出: 40

  1. (提高题)编写一个函数calcuate_ave, 可以接收任意多个数,返回的是一个元组.元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数

例如:calcuate_ave(10,13,14,15) 返回(13,[14,15])

      calcuate_ave(10,11,14,15,12) 返回(12.4,[14,15])

代码:

def calculate_ave(*args):
    total = sum(args)
    average = total / len(args)
    above_average = [num for num in args if num > average]
    return (average, above_average)

# 测试代码
print(calculate_ave(10, 13, 14, 15)) # 输出: (12.75, [13, 14, 15])
print(calculate_ave(10, 11, 14, 15, 12)) # 输出: (12.4, [14, 15])

总结

        本节深入探讨了函数的基础知识,包括其定义、如何进行调用、不同参数传递机制以及装饰器的概念和使用,同时解释了变量的作用域。在Python编程语言中,函数不仅仅是数学概念中的函数映射,它更是一种执行特定运算或处理数据的程序单元。通过将代码封装进函数中,可以在程序的多个地方重复利用这段代码,而无需每次都重新编写,这正是函数带来的便利和效率。

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

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

相关文章

探索多模态预训练:MAnTiS、ActionCLIP、CPT与CoOp的Prompt技巧

上一篇博文整理了 预训练新范式(Prompt-tuning,Prefix-tuning,P-tuning) ,主要是围绕NLP上的成果,具体的概念本文也不做过多赘述。本篇文章将主要整理几篇有代表性的Prompt方法在多模态领域中的应用。 Mult…

收银系统源代码-收银端UI风格

智慧新零售收银系统是一套线下线上一体化收银系统,给商户提供含线下收银称重、线上商城、精细化会员管理、ERP进销存、丰富营销活动、移动店务助手等一体化的解决方案。 如Windows版收银(exe安装包)、安卓版收银(apk安装包&#…

“创新电商营销:‘精选返现‘模式引领购物新风尚“

在电子商务领域的蓬勃发展中,创新营销模式层出不穷,其中“精选返现”模式凭借其创新的互动机制与激励机制,赢得了广大消费者的青睐。该模式通过优化价格策略、融入社交互动及构建梯度回馈体系,有效激发了消费者的购买动力&#xf…

从零开始学LangChain(7):Callback模块

回调模块允许接到LLM应用程序的各个阶段,鉴于LLM的幻觉问题,这对于日志记录、监视、流式处理和其他任务非常有用,现在也有专用的工具Helicone,Arize AI等产品可用,下面我们开始看代码: 自定义回调对象 所…

Labview_压缩文件

调用顺序 源文件 生成后的文件 1.新建ZIP文件 生成ZIP文件的路径:为最终生成ZIP文件的路径,需要提供ZIP文件的名称和类型 2.添加文件到压缩文件 源文件路径:为需要压缩的文件路径,非文件夹路径 生成ZIP文件时的路径&#x…

uniapp 数据父传子

文章目录 可能出现的问题 在uni-app中,父组件向子组件传递数据主要通过属性绑定的方式实现。这里提供一个简单的示例来说明如何进行父传子的数据传递: 父组件 准备数据: 在父组件的data中定义要传递的数据。 export default {data() {return {parentMe…

AE-图层

目录 图层初体验 项目、合成和图层的关系 图层的通用参数 锚点(快捷键A) 位置(快捷键P) 缩放(快捷键S) 旋转(快捷键R) 不透明度(快捷键T) 向后平移锚…

参数手册 : PXIe-1095

PXIe-1095 起售价 RMB 97,950.00 产品详细信息 PXI机箱类型: PXIe 机箱电源类型: 交流 混合插槽数量: 5 PXI Express插槽数量: 11 冗余硬件选项: 是 最大系统带宽: 24 GB/s 插槽数量: 18 PXI插槽数量: 0 系统定时插槽: 是 槽冷却能力: 82 瓦 简介 PXIe,18槽&am…

PTrade常见问题系列6

执行k_start.sh脚本发现没有生成日志? 执行k_start.sh脚本发现没有生成日志? 1、检查k_start.sh脚本发现执行downloader前需要检查是否有已存在的downloader进程,ps -ef|grep downloader 发现有很多历史的僵尸进程,所以下载进程…

企业应对策略:全面防御.DevicData-P-xxxxxx勒索病毒

引言 在数字化时代,网络安全已成为不可忽视的重要议题。随着互联网的普及,各种网络威胁层出不穷,其中勒索病毒以其独特的攻击方式和巨大的破坏性,给个人用户和企业带来了严重的经济损失和数据安全风险。在众多勒索病毒中&#xff…

如果成为亚马逊VC供应商你应该知道这些

亚马逊VC账号(Vendor Central)是全面平台,助供应商管理客户产品及销售。它涵盖购买、存储、运输、处理全过程。成为亚马逊供应商需受邀,彰显高声望。深入了解VC账号,可挖掘其优势并为企业带来好处。 以下是成为VC供应商…

apache启动报错:the requested operation has failed

Apache24\bin cmd 回车 httpd -t 因为我重新压缩了,记住,重新压缩要使用原路径, 因为你安装的 时候使用的是原路径 还是不行就改个端口,切记修改配置文件httpd.conf先把Tomcat停了 Define SRVROOT "F:\Apache\Apache24&q…

SuperMap GIS基础产品FAQ集锦(20240709)

一、SuperMap iDesktopX 问题1:请问针对iDesktopX地质体建模功能的数据组织格式相关问题请教哪位同事? 11.1.1 【解决办法】“地质体构建”功能可依据多个地质点数据集实现对地质体的构建,构建地质体中点图层的顺序对应实际地层由高到低。可参考官方博…

python调用串口收发数据

1、确认串口信息 2、安装pyserial库 打开终端或命令行,敲入这行命令:pip install pyserial 3、python编程 import serial def main(): #创建串口对象 ser serial.Serial(COM4, 9600, timeout1) if not ser.isOpen(): print("串…

AI in Healthcare 医疗领域AI应用-基于DeepNLP AI App Store 真实用户评论打分和排名

website: Best AI in Healthcare DeepNLP AI Store github: https://rockingdingo.github.io/ai_store 医疗健康(AI in Healthcare)领域哪些AI服务应用更能满足用户的需求,排名最高? 参考deepnlp.org网站根据用户真实评论打分和show case分享,分为下列…

【经验帖】做亚马逊3年,总结了这8个选品关键点!

第一:选择持续上升的市场 小卖家是切忌做有明显淡旺季的FBA产品,FBM可以无所谓,只有市场每年都有上升趋势,至少增长率大于5%,才可以布局。 我们可以筛选某类目下,最近1个月销量增长较快的细分市场。比如我…

从资金到未来:技术融资如何重塑IT顾问在AI与网络安全的角色?

一方面是人工智能 (AI) 和机器学习 (ML) 的双引擎,另一方面是网络安全和数据泄露威胁中不断变化的威胁形势,IT 格局正在经历翻天覆地的变化。这场数字革命对 IT 顾问来说既是挑战也是机遇,但要成…

传统监测以及现代智能科技监测:输电线路分布式故障定位监测装置

传统监测以及现代智能科技监测:输电线路分布式故障定位监测装置 随着电力系统的不断发展和电力需求的日益增长,输电线路的稳定性和安全性对于保障电力供应至关重要。然而,由于输电线路动辄几十上百里的长距离传输,以及复杂的地理…

智能猫砂盆怎么买才不踩雷?2024热门的三款智能猫砂盆分享!

上班外出来不及铲屎怎么办?那当然是入手一个智能猫砂盆啦。实不相瞒,以前我也是被手动铲屎长期折磨的可怜铲屎官,但上班出差哪有空一直盯着猫砂盆看呢?索性后面一不做二不休直接购入了智能猫砂盆。如果你也想将家里的普通猫砂盆换…

STC32G/F/8H通用无刷电机驱动板

STC32G/F/8H通用无刷电机驱动板 📌相关篇《低成本STC32G8K64驱动控制BLDC开源入门学习方案》 ✨该驱动板是在上一版的基础上改版而来。这里的STC32G/F/8H所指的是封装型号为-LQFP48的STC32G8K64、STC32G12K128、STC32F12K54、STC8H8K64U。是一款兼容有感和无感设计的…