python函数实验总结_Python程序设计实验报告六:函数_weixin_39518530的博客-程序员宅基地

技术标签: python函数实验总结  

安徽工程大学

Python程序设计 实验报告

班级 物流191 姓名姚彩琴学号3190505129 成绩

日期 2020.5.3 指导老师修宇

【实验目的】

掌握函数的定义与使用方法;掌握函数的参数传递和变量的作用域;掌握函数的嵌套调用和递归调用的方法;

【实验条件】

PC机或者远程编程环境

【实验内容】

1、完成三个编程题。

题目一 、计算三维空间某点距离原点的欧式距离

题目描述:

欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义。三维空间里点a和b的坐标如果分别为a(x1,y1,z1)、b(x2,y2,z2),则ab的距离的计算机公式是dist(a,b) = √( (x1-x2)^2+(y1-y2)^2+(z1-z2)^2 )‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬提示:使用math.sqrt()函数求平方根

要求:将虚线下的代码复制到答题区域、补充完善后再提交。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

-------------------------------------------------------------------------------------------------------------------------‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

#请在这里定义distance函数,计算点(x,y,z)与原点的距离值并返回‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬x,y,z=input().split(",")‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

d=distance(float(x),float(y),float(z))#调用distance函数‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

print("{:.2f}".format(d))#输出距离值,保留三维小数‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

#代码区结束‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入格式:

输入是一个点a的三维坐标,以逗号分割,形如:x,y,z ,其中x,y,z都是非负实数。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

例如:1.2,1.3,1.4‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输出格式:

输出点a与原点的距离(保留小数点后两位)‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬, 例如:2.08‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入输出示例:

输入 输出

示例 1 1.0,1.0,1.0 1.73

拓展:

在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。使用这个距离,欧氏空间成为度量空间。相关联的范数称为欧几里得范数。较早的文献称之为毕达哥拉斯度量。在实践中这个函数在数据分析及挖掘中经常会被使用做相似度的计算。

1956628-20200503204053361-811196519.png

1956628-20200503204152721-2015312279.png

题目2、汉诺塔的求解(可选,自行在本地电脑实现)

描述

汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

知乎上有关 汉诺塔的讨论 :

spacer.gifhttps://www.zhihu.com/question/24385418

百度百科:https://baike.baidu.com/item/%E6%B1%89%E8%AF%BA%E5%A1%94/3468295?fr=aladdin

6175a41113d5a6dbc142651330104598.png

本题要求:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

1. 使用函数递归的方法实现一个汉诺塔的求解程序;‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

2. 汉诺塔的层数为:3‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

3. 要求将所有的圆盘从最右边的A号柱子全部移动到最左边的C号柱子,且每次只能移动一个圆盘。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

4. 输出总共移动了多少次。

三根柱子从左至右依次为A、B、C,

六颗串珠从小到大依次为1到3

1956628-20200503204307459-1761929682.png

1956628-20200503204342595-1163950158.png

题目3、判断闰年

闰年是公历中的名词。闰年分为普通闰年和世纪闰年。普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年。(如2004年就是闰年);世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年);

闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份为闰年。闰年共有366天(1-12月分别为31天,29天,31天,30天,31天,30天,31天,31天,30天,31天,30天,31天)

关于闰年 : https://baike.baidu.com/item/%E9%97%B0%E5%B9%B4/27098?fr=aladdin

抽象:闰年的判断

1、能被4整除,但不能被100整除;

2、能被400整除;

提示

1)怎么实现“能被4整除,但不能被100整除”判断?

对year 求余数,看看余数是否为0;参考:year%4==0 and year%100!=0

2)怎么实现“能被400整除”判断?

还是对year求余数 year%400==0:

3)把二个条件同时考虑

(year%4==0 and year%100!=0) or year%400==0

描述

编写函数leap,根据“四年闰百年不闰,四百年又闰”判断是否闰年。在主程序输入一个年份,调用leap函数判断其是否为闰年,并输出判断结果。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

注意:复制下面代码,填写补充完整,实际参数和形式参数部分也要修改。

1956628-20200503204435001-1351107394.png

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入一个代表年份的整数‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输出格式

输出年份是否闰年的判断结果,请见输入输出示例说明

1956628-20200503204508178-1977004305.png

【实验记录与分析】

(1)计算三维空间某点距离原点的欧式距离

输入代码:

1956628-20200503205318748-844864573.png

输入1,1,1后的运行结果:

1956628-20200503205533639-1947785857.png

我出现过运行错误的情况:

①将^代替**:

1956628-20200503205728442-915712817.png

1956628-20200503210024568-822555219.png

②出现distance函数未被定义的情况:

1956628-20200503210149056-639960846.png

1956628-20200503210204145-567226852.png

(2)汉诺塔的求解

输入代码:

1956628-20200503210614614-243526392.png

输入3后的运行结果:

1956628-20200503210638284-929967326.png

输入10后的运行结果:

1956628-20200503210830102-1414519619.png

注意:在不了解“汉诺塔”的情况下,要查资料来获取相关信息,然后将整个过程有逻辑的过一遍,从而才能开始实验。要先把问题分为多个子问题,再来解决每个子问题。若输入较大数据进行运行时,建议使用VS code,效率会比idle高很多。

(3)判断闰年(代码的输入不唯一)

输入代码:

1956628-20200503211555995-1945461041.png

输入2000后的运行结果:

1956628-20200503211626469-2008568598.png

我出现过的错误:

①逻辑错误

1956628-20200503211709314-1297376471.png

1956628-20200503211724917-287934031.png

然而1900并不是闰年,正确结果应为:

1956628-20200503211853178-392256175.png

②返回值不能是有带""的True和False

1956628-20200503211911518-1951640950.png

1956628-20200503211920455-437340715.png

③最后判断语句中的a未被定义,应该为已被定义的y

1956628-20200503211942729-988722327.png

1956628-20200503211951696-471859809.png

注:因为代码输入是按逻辑来的,所以较容易出现的是逻辑错误。

所以当代码为:

1956628-20200503214037762-5243986.png

此时可以避免出现逻辑错误。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39518530/article/details/110041036

智能推荐

易优cms iis怎么去掉index.php Eyoucms快速入门_易优后台网站前端powered by eyoucms 如何去掉-程序员宅基地

iis去掉'index.php的方法:首先打开“URL重写”,并点击右侧栏“导入规则”;然后填入重写规则,并点击右侧“应用”提交;最后关闭窗口,并在地址栏去掉“index.php”即可。iis去掉index.php1、首先的IIS里面安装有 url重写这个功能。如果没有的话,就下载安装一个: rewrite_x64_zh-CN.msi安装好之后 从新打开IIS管理器或者属性需要打开的网站就有了。2、打开“URL重写”,点击右侧栏“导入规则”:3、填入 重写规则 ,然后点击右侧_易优后台网站前端powered by eyoucms 如何去掉

c的计算和输出的数字和字符串为什么经常出错(附录c语言常见错误)_c语言输出的数很奇怪-程序员宅基地

第一点你要明白的是,如果你的编译的环境是没有问题的话,那么结果就只能是你的内容不能被被编译器正确的理解。举个例子如果你同时接收字符和数字如scanf("%d%c%d",&a,&ch,&b);假设你输入 7:54如果你要输出b,那么后面的54一定是乱码为什么呢?其实很简单,系统不知道你字符串到底在哪里停留,也不知道后面这个到底是不是字符串的一部分,那么它就会默认你输入的后面一堆都是字符串,然后你要输出b的时候,那么就乱码了。你需要加一些东西,让他明白这个是字符串,这个是后_c语言输出的数很奇怪

移动匿名支付购物方案 A Lightweight Anonymous Mobile Shopping Scheme Based on DAA for Trusted Mobile Platform_用户匿名性怎么完成支付csdn-程序员宅基地

本ppt是一篇关于利用Trustzone技术实现的移动匿名支付与购物系统,可以避免电商对于个人的消费行为和记录的追踪与链接,真正实现用户购物的匿名性,文章发表在Trustcom2014大会上_用户匿名性怎么完成支付csdn

使用webClient实现图片同步,异步下载_webclient.downloadfileasync 多文件边下载边加载-程序员宅基地

WebClient.DownloadFile 方法将具有指定 URI 的资源下载到本地文件。命名空间:System.Net程序集:System(在 system.dll 中)同步实现参考代码: private void btnsyndownload_Click(object sender, EventArgs e) { File.Delete("downloa..._webclient.downloadfileasync 多文件边下载边加载

BFS算法(广度优先搜索)java_java bfs算法-程序员宅基地

BFS介绍BFS:宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。BFS 的核心思想就是把一些问题抽象成图,从一个点开始,向四周开始扩散。一般来说,我们写 BFS 算法都是用「队列」这种数据结构,每次将一个节点周围的所有节点加入队列。BFS 出现的常见场景,问题的本质就是让你在一幅「图」中找到从起点start到终点target的最近距离。嘛意思呢,假设你_java bfs算法

前台向后台传递中文参数,防止乱码-程序员宅基地

js: "******.action?param=" + encodeURI(encodeURI(value))jsp: " target="_blank">text

随便推点

浅谈软件的盈利模式_软件博客盈利-程序员宅基地

最近在qq上和一个网友讨论软件的破解与保护。由此想到在中国,做软件如何可以赚钱。 在中国做软件,最大的阻力就是盗版。你想让用户用你的软件,还给你钱,这方面就得动动脑筋了。由于软件产品和其他实物产品不同:用户是可以轻易的复制软件产品的,而实物产品却不容易复制。比如销售一台电视机,如果别的用户也想要一台电视机,那他就需要再花钱买;而软件呢?用户买了一份回来,他可以很轻松的copy一份,这_软件博客盈利

Pdf与Base64编码之间的转换-程序员宅基地

自:https://blog.csdn.net/fuyuwei2015/article/details/47264007 在我们的工作有时候我们需要将图片或者pdf文件转换为Base64编码,然后从服务器端下载传输到本地,在这里我列举下两者之间的转换方法: Base64编码转换为pdf:/** * D...

echars 插件的柱状图,饼状图,散点图的使用-程序员宅基地

在做项目的时候可能需要使用到柱状图,饼状图,散点图。因此,就讲讲echars 插件的柱状图,饼状图,散点图的使用引用echars插件官网:https://echarts.baidu.com/index.html在使用echars插件时1.首先要引用echars插件,2.写一个div用来装echars内容,3.初始化echars 实例4.指定图表的配置项和数据5.使用指定的配置项和数...

java对象序列化版本号的生成和使用_怎么给对象设置序列号-程序员宅基地

1.打开idea2.3.4.5.6.序列号的显性表示,是为了在之后对对像做修改时,不会因为属性的变化而出现序列化异常。_怎么给对象设置序列号

QQ游戏百万人在线的技术实现)-程序员宅基地

近日在与业内人士讨论时,提到QQ游戏的实现方式并不是我原来所想的那样,于是,今天又认真抓了一下QQ游戏的包,结果确如这位兄弟所言,QQ游戏的架构与我当初所设想的那个架构相差确实不小。下面,我重新给出QQ百万级在线的技术实现方案,并以此展开,谈谈大型在线系统中的负载均衡机制的设计。  从QQ游戏的登录及游戏过程来看,QQ游戏中,也至少分为三类服务器。它们是:  第一层:登陆/账号服务器(Login ...