当前位置: 首页 > news >正文

Python编程实验四:函数的使用

目录

一、实验目的与要求

二、实验内容

三、主要程序清单和程序运行结果

第1题

第2题

第3题

第4题

第5题

四、实验结果分析与体会


一、实验目的与要求

(1)通过本次实验,学生应掌握函数的定义与调用的基本语法,能根据需要灵活应用递归函数;
(2)掌握函数的可变参数的常见用法,以及列表作为参数传递时的注意事项;
(3)学习map函数和lambda表达式的应用;
(4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)

二、实验内容

使用Python语言在Jupyter Notebook环境下编程完成下列题目的要求:

1、改编自教材第120页实训1:编写一个计算列表中位数的函数。

要求根据下图给定的程序框架完善median函数的定义,并且不允许函数修改实参列表。

2、定义并调用一个名为specify的函数,实现计算多个月份的平均访客量。请根据下图给定的程序框架完善specify函数的定义,每个月的访客量数据由data列表给出。

3、定义并调用一个名为person的函数,实现人员信息的输出。请根据预期的输出效果完善下面的程序框架,要求人员的名字信息必须要有,其他信息可有可无。

4、改编自教材第120页实训2:使用map函数和lambda表达式对列表中的元素求平方。请根据下图给定的程序框架,利用map函数和lambda表达式,只填写一行代码,实现对列表中每个元素求平方。

5、定义一个递归函数实现对字符串的逆序输出。例如,对“student”字符串,调用该函数,实现逆序输出为“tneduts”。

三、主要程序清单和程序运行结果

第1题

1、改编自教材第120页实训1:编写一个计算列表中位数的函数。

要求根据下图给定的程序框架完善median函数的定义,并且不允许函数修改实参列表。

def median(ls):sorted_ls = sorted(ls)  # 对列表进行排序n = len(sorted_ls)if n % 2 == 0:mid_idx = n // 2median = (sorted_ls[mid_idx - 1] + sorted_ls[mid_idx]) / 2else:mid_idx = n // 2median = sorted_ls[mid_idx]return medianls1=[26,92,-5,13,6]
ls2=ls1+[117,-25,73]
print("列表ls1的中位数是{}".format(median(ls1)))
print("列表ls2的中位数是{}".format(median(ls2)))
print("调用函数后列表ls1中的元素:",ls1)
print("调用函数后列表ls2中的元素:",ls2)

运行结果: 

第2题

2、定义并调用一个名为specify的函数,实现计算多个月份的平均访客量。请根据下图给定的程序框架完善specify函数的定义,每个月的访客量数据由data列表给出。

def specify(*lst):total_visitors = 0for visitors in lst:total_visitors += data[visitors]average = total_visitors / len(lst)print("指定月份的平均访客量位{:.2f}".format(average))data=[200,388,123,456,987,342,767,234,124,345,123,234]
specify(1,2,3,4)
specify(10,9,8,7,6)

运行结果: 

 

第3题

3、定义并调用一个名为person的函数,实现人员信息的输出。请根据预期的输出效果完善下面的程序框架,要求人员的名字信息必须要有,其他信息可有可无。

def person(name,**kwargs):print(f"The information of {name} is:")for key,value in kwargs.items():print(f"{key}:{value}")person('Alice',city='GL')
person('Bob',gender='M',job='Teacher')
emp1={"name":"Rose","favorite":"music","age":18}
person(**emp1)

运行结果:

第4题

4、改编自教材第120页实训2:使用map函数和lambda表达式对列表中的元素求平方。请根据下图给定的程序框架,利用map函数和lambda表达式,只填写一行代码,实现对列表中每个元素求平方。

ls=[1,3,7]
squared_numbers = list(map(lambda x: x**2, ls))
print(squared_numbers)

运行结果:

第5题

5、定义一个递归函数实现对字符串的逆序输出。例如,对“student”字符串,调用该函数,实现逆序输出为“tneduts”。

def reverse_string(string):if len(string) == 0:return ""else:return reverse_string(string[1:]) + string[0]result = reverse_string("student")
print(result)

运行结果: 

四、实验结果分析与体会

        通过本次实验,掌握了函数的定义与调用的基本语法,能根据需要灵活应用递归函数。学会了函数的可变参数的常见用法,以及列表作为参数传递时的注意事项;map函数和lambda表达式的应用。

        模块化和重用性:函数允许将一段代码封装成一个独立的模块,这样可以在程序中多次调用,提高了代码的重用性和可维护性。参数传递:函数可以接受输入参数,这使得函数更加灵活和通用。通过参数的传递,可以让函数处理不同的数据,实现不同的功能。返回值:函数可以返回计算结果,这样可以将函数的输出作为其他部分的输入,实现更复杂的逻辑。作用域:函数内部可以定义局部变量,这些变量只在函数内部有效,避免了命名冲突和变量污染。匿名函数和闭包:Python支持匿名函数和闭包的特性,这使得函数的使用更加灵活和方便。

相关文章:

Python编程实验四:函数的使用

目录 一、实验目的与要求 二、实验内容 三、主要程序清单和程序运行结果 第1题 第2题 第3题 第4题 第5题 四、实验结果分析与体会 一、实验目的与要求 (1)通过本次实验,学生应掌握函数的定义与调用的基本语法,能根据需要…...

SVN服务备份

hotcopy备份 window批处理 保存以下内容到svn_buckup.bat,确保内容的路径正确,最后双击bat文件进行备份即可 echo offrem SVN安装路径 set svn"C:\Program Files\VisualSVN Server\bin"rem 仓库根目录 set homeE:\Repositories\WorkSpacere…...

FIDO2入门以及相关概念 Client to Authenticator Protocol

​ 本文根据官方文档的定义以及我疑惑的问题做出的相关整理的问答,可能会有偏差,请以官网为准。 官网文档网址:Client to Authenticator Protocol (CTAP) ​ FIDO是什么 FIDO(Fast Identity Online)是一组开放标准和…...

Linux系统入门:嵌入式系统的操作系统选型

(本文为简单介绍,内容来源网络和AI模型生成) Linux是一种开源的操作系统,它建立在Unix操作系统的基础之上,采用了Unix的很多理念和设计思想。与商业操作系统如Windows相比,Linux系统资源占用少,运行高效稳定,且Linux系统免费开源,使用和传播…...

数据结构——时间复杂度

前言: 当谈到数据结构和算法时,时间复杂度是一个至关重要的概念。时间复杂度是衡量算法执行时间随输入规模增长而变化的度量,它指示了算法的效率和性能。在本篇博客中,我们将深入探讨时间复杂度的相关知识,并结合C语言…...

《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_5

《剑指Offer》笔记&题解&思路&技巧&优化_Part_5 😍😍😍 相知🙌🙌🙌 相识😢😢😢 开始刷题🟢1. LCR 158. 库存管理 II——数组中出现次数超过一…...

ubuntu上安装docker

在 Ubuntu 上安装 Docker,可以按照以下步骤进行操作: 更新软件包列表:运行以下命令来更新系统的软件包列表: sudo apt update安装必要的依赖项:运行以下命令来安装 Docker 所需的依赖项: sudo apt install …...

【Docker】Linux主机部署Docker

Docker部署 1.二进制文件部署 到如下地址,下载二进制包。 Docker官网:https://docs.docker.com/engine/install/binaries/ 网易镜像源:https://mirrors.163.com/docker-ce/linux/static/stable/x86_64/ 下载好的二进制包上传到主机&#xf…...

vue前端docx库生成word表格 并合并单元格的例子

Vue.js 是一个流行的前端JavaScript框架,用于构建用户界面和单页应用程序。在Vue中生成Word表格并合并单元格,通常需要使用额外的库,如docx,它是一个用于创建和修改Word文档(.docx)的JavaScript库。 …...

FastGPT配置文件及OneAPI程序:

FastGPT配置文件及OneAPI程序:百度网盘 请输入提取码 提取码:wuhe 创建fastgpt目录:mkdir fastgpt 切换到fastgpt目录:cd fastgpt 下载docker-compose文件:curl -O https://raw.githubusercontent.com/labring/Fast…...

Positive Semidefinite Matrices 什么是半正定矩阵?(undone)

参考视频:https://www.bilibili.com/video/BV1Vg41197ew/?vd_source7a1a0bc74158c6993c7355c5490fc600 参考资料(半正定矩阵的定义):https://baike.baidu.com/item/%E5%8D%8A%E6%AD%A3%E5%AE%9A%E7%9F%A9%E9%98%B5/2152711?frge_ala 看看半正定矩阵的…...

shapely 笔记:STR TREE

数据结构笔记:R树-CSDN博客 1 基本介绍 使用Sort-Tile-Recursive (STR) 算法创建的仅查询的R-tree空间索引该树索引每个几何图形的边界框。树在初始化时直接构建,且一旦创建后不能添加或移除节点所有操作返回输入几何图形的索引边界框限于二维并且是轴…...

neo4j常用代码

1】查版本: CALL dbms.components() YIELD name, versions RETURN name, versions; 2】清数据: MATCH ()-[r]->() DELETE r; MATCH (n) DETACH DELETE n; 3】NEO4J 操作入门_neo4j查看历史执行命令-CSDN博客 :play --首页 :help match/keys/com…...

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(五)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模型DALL-E基础上开发而成的。模型的训练数据既包含公开…...

Less预处理器教程

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈 一、Less介绍 less官方文档 lesscss.org/ less中文文档 less.bootcss.com/ less是一种css预处理器,它扩展了css语言&#xff0c…...

PCL 计算点云AABB包围盒的体积

目录 一、AABB包围盒二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。爬虫自重,把自己当个人。 一、AABB包围盒 AABB包围盒又称了 轴对齐包围盒,是点云包围盒里最简单的一种,其计算方法也极其简单。获取包围盒之后,根据包围盒的长宽高进行体积计算即…...

论软件测试工程师 重要性!

在生活中,我们常常会遇到以下几种窘迫时刻: 准备骑共享单车出行,却发现扫码开锁半天,车子都没有反应;手机导航打车,却发现地图定位偏差很大,司机总是跑错地方;买个水,却…...

防御第六次作业-防火墙综合实验(av、url过滤、dns过滤)

目录 拓扑图: 要求: 8 9 10 11 拓扑图 要求 前7个要求在上一篇博客; 8.分公司内部的客户端可以通过域名访问到内部的服务器 9.假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件,内网的FTP服务器也需要…...

打码半年,开源一款自定义大屏设计软件!

hi,大家好,我是Tduck马马。 最近我们开源了一款大屏软件-TReport,与大家分享。 TReport是一款基于Vue3技术栈的数据可视化系统,支持静态、动态api等数据源;可用于数据可视化分析、报表分析、海报设计使用。 提供自定…...

云计算基础-大页内存

大页内存功能概述 什么是大页内存 简单来说,就是通过增大操作系统页的大小来减小页表,从而避免快表缺失 主要应用场景 主要运用于内存密集型业务的虚拟机,比如对于运行数据库系统的虚拟机,采用HugePages(大页)后,可…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如&#xff1a…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

Unity中的transform.up

2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

2.3 物理层设备

在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...