【Python习题集5】函数的设计

函数的设计

  • 一、实验内容
  • 二、实验总结

一、实验内容

1.编写两个函数分别按单利和复利计算利息,根据本金、年利率、存款年限得到本息和和利息。调用这两个函数计算1000元在银行存3年,在年利率是6%的情况下,单利和复利分别获得的本息和和利息。单利计算指只有本金计算利息。复利计算是指不仅本金计算利息,利息也计算利息,也就是通常所说的“利滚利”。如这题按单利计算本息和1000+1000×6%×3=1180元,其中利息为180元;按复利计算本息和1000×(1+6%)3=1191.016元,其中利息为191.016元。
(1)源代码

def simple_interest(money,rate,years):
    interest=money*rate/100.0*years
    sum_money=money+interest
    return sum_money,interest
def compound_interest(money,rate,years):
    sum_money=money*(1+rate/100.0)**years
    interest=sum_money-money
    return sum_money,interest
money=1000
rate=6
years=3
aa=simple_interest(money,rate,years)
bb=compound_interest(money,rate,years)
print("本金:",money,"\n年利率:",str(rate)+"%","\n存款年限:",years)
print("单利:","\n本息和:","%.3f"%aa[0],"利息","%.3f"%aa[1])
print("复利:","\n本息和:","%.3f"%bb[0],"利息","%.3f"%bb[1])

(2)运行结果截图
在这里插入图片描述

2.编写函数,判断一个数是否为素数。调用该函数判断从键盘中输入的数是否为素数。素数也称质数,是指只能被1和它本身整除的数。
(1)源代码

def prime(x):
    flag=True
    for i in range(2,x//2+1):
        if x%i==0:
            flag=False
            break
    return flag

#主程序
x=int(input("请输入一个整数:"))
if prime(x):
    print(x,"是素数")
else:
    print(x,"不是素数")

(2)运行结果截图
在这里插入图片描述

3.编写函数,求出一个数除了1和自身以外的因子。从键盘输入一个数,调用该函数输出除了1和它自身以外的所有因子。
(1)源代码

 def zi(n):
    a=[]
    for i in range(2,n//2+1):
       if n%i==0:
           a+=[i]
     return a
x=int(input("请输入一个整数:"))
print("除1和自身以外的因子:",zi(x))

(2)运行结果截图
在这里插入图片描述

4.编写函数,判断一个数是否为水仙花数。调用该函数打印出1000以内的所有水仙花数。水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如:13+53+33=153,则153是水仙花数。水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。
(1)源代码

def flower(x):
    a=x//100
    b=(x %100)//10
    c=(x %100)%10
    if a**3+b**3+c**3==x:
        return True
    else:
        return False

#主程序
print("1000以内的水仙花数为:")
for i in range(100,1000):
    if flower(i):
        print(i)

(2)运行结果截图
在这里插入图片描述

5.编写函数求斐波拉契数列的前20项。斐波拉契数列的第1项和第2项分别是0和1,从第3项开始,每一项都是前两项之和。如:0,1,1,2,3,5,8,13,21…。试用递归函数实现。
(1)源代码

def fibo(n):
    if n==1:
        s=0
    elif n==2:
        s=1
    else:
        s=fibo(n-1)+fibo(n-2)
    return s

for i in range(1,21):
    print("第",i,"项",fibo(i))

(2)运行结果截图
在这里插入图片描述

二、实验总结

  • 函数是组织好的、实现单一功能或相关联功能的代码段。我们可以将函数视为一段有名字的代码,这类代码可以在需要的地方以“函数名()”的形式调用。
  • 函数式编程具有以下优点:
    将程序模块化,既减少了冗余代码,又让程序结构更为清晰;提高开发人员的编程效率;方便后期的维护与扩展
  • 我们通常将定义函数时设置的参数称为形式参数(简称为形参),将调用函数时传入的参数称为实际参数(简称为实参)。函数的参数传递是指将实际参数传递给形式参数的过程。函数参数的传递可以分为位置参数传递、关键字参数传递、默认参数传递、参数的打包与解包以及混合传递。
  • 无论实参采用位置参数的方式传递,还是关键字参数的方式传递,每个形参都是有名称的,使用符号“/”来限定部分形参只接收采用位置传递方式的实参。
  • 函数在定义时可以指定形参的默认值,如此在被调用时可以选择是否给带有默认值的形参传值,若没有给带有默认值的形参传值,则直接使用该形参的默认值。

递归函数
(1)函数在定义时可以直接或间接地调用其他函数。若函数内部调用了自身,则这个函数被称为递归函数。
(2)递归函数在定义时需要满足两个基本条件:一个是递归公式,另一个是边界条件。其中: 递归公式是求解原问题或相似的子问题的结构; 边界条件是最小化的子问题,也是递归终止的条件。
(3)递归函数的执行可以分为以下两个阶段: 1.递推:递归本次的执行都基于上一次的运算结果。 2.回溯:遇到终止条件时,则沿着递推往回一级一级地把值返回来。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

程序员不得不知道的 API 接口常识

1、初识 API 接口 记得在我初学 web 开发的时候,后端框架相关的教程基本都会教学生写渲染模版(不分语言),也就是说后端返回的是整个网页的数据,浏览器只负责渲染。 一般这类模版在后端都会对应一个路由,比…

Vue——组合式函数

目录 什么是“组合式函数”?​ 鼠标跟踪器示例​ 异步状态示例​ 约定和最佳实践​ 命名​ 输入参数​ 返回值​ 副作用​ 使用限制​ 通过抽取组合式函数改善代码结构 选项式 API 中使用组合式函数​ 与其他模式的比较​ 和 Mixin 的对比​ 和无渲染…

计算机视觉的应用3-批量图片风格迁移之素描图片生成的应用

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用3-批量图片生成素描图片的应用,将一张图像转换为素描风格的图像的其实是模拟了人类视觉在观察物体时受到的光照条件。素描风格的图像在灰度值上表现出明暗交替的效果,这种效…

渗透测试 | 目录扫描

0x00 免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担…

electron源码保护

electron 程序发布后,如果未对程序做保护,则极容易受到破坏,比如被轻松破解密码,或者被修改程序,所以必须对程序做一些安全防护。虽然没有100%的安全防护,但是提升破解难度,直至破解代价超出了范…

MyBatis:使用代码整合

文章目录 MyBatis:Day 04框架1. 依赖:pom.xml2. 外部配置文件:db.properties3. 核心配置文件:mybatis-config.xml4. 实体类5. 接口:xxxMapper.java6. 实现类:xxxMapper.xml7. 测试 MyBatis:Day …

利用C#实现动态替换桌面快捷方式对应的应用程序

公司有一个特殊的业务可能会用到这个,至于什么业务就不展开了。本文的内容作为备用方案。 实现思路: 1 获取当前exe程序运行的全路径 2 获取桌面的所有快捷方式 3 遍历快捷方式,获取快捷键方式对应程序的运行路径,并与当前…

Java编程中的20种常见异常及其原因,你知道多少

本文介绍了在Java编程中可能遇到的20种常见异常,包括空指针异常、类未找到异常、数组下标越界异常等,并简要解释了每种异常发生的原因。这些异常可能由于编程错误、运行时资源不足或权限受限等多种原因触发,了解它们有助于更高效地进行程序调…

黑马程序员Dubbo快速入门,Java分布式框架dubbo教程

分布式系统中的相关概念 (一)互联网项目架构目标-特点 (二)互联网项目架构目标-目标 (三)集群和分布式 (四)架构演进 Dubbo概述 (一)dubbo概述 1、dub…

针对Vue前后端分离项目的渗透思路

引言 在目前的开发环境下,越来越多的厂商选择 Vue.js 来实现前端功能的编写,且成熟的前端框架已经可以实现后端代码实现的功能,导致后端目前只负责提供 Api 接口和文档,方便前端的同时去调用。本文主要介绍如何针对这类前后端分离…

java版鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统源代码

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

java紫砂壶交易购物系统 mysql

网络紫砂壶可充通过色彩、图片、说明、设置动画加强了产品了宣传,大大达到了陶瓷业的“色型”要求。实现产品管理方便,起到立竿见影的效果,不用因为更改菜色而重新印刷。只要在后台鼠标轻轻一点,全线马上更新。采用B/S模式&#x…

mybatisPlus初识

文章目录 什么是mybatisplus依赖入门案例自动填充乐观锁悲观锁乐观锁 mybatisPlus实现乐观锁批量查询根据指定条件查询 什么是mybatisplus mybatisplus是mybatis的增强工具&#xff0c;支持多种类型的数据库。 依赖 <dependency><groupId>com.baomidou</group…

快速了解车联网V2X通信

自动驾驶拥有极其巨大的潜力&#xff0c;有可能改变我们的出行方式。它不仅有望永远改变车辆的设计和制造&#xff0c;还会永远改变汽车的所有权乃至整个交通运输业务。要实现全自动驾驶的目标&#xff0c;开发人员需要开发极为复杂的软件&#xff0c;软件中融入的人工智能(AI)…

从一到无穷大 #7 Database-as-a-Service租户隔离挑战与解决措施

文章目录 引言计算侧多租户隔离2DFQSQLVMRetro 其他隔离方法其他 引言 在云环境中租户之间的资源共享对于运营商的成本效益来说非常重要&#xff0c;但是一个主要问题是租户之间的资源隔离&#xff0c;这通常与Qos息息相关&#xff0c;从多租户的角度讲&#xff0c;安全性/性能…

〖Python网络爬虫实战⑲〗- 数据存储之CSV文件

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付…

DolphinScheduler海豚调度教程

DolphinScheduler 教程 &#xff08;一&#xff09;入门指南 简介 关于Dolphin Apache DolphinScheduler是一个分布式易扩展的可视化DAG工作流任务调度开源系统。解决数据研发ETL 错综复杂的依赖关系&#xff0c;不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式…

欧拉奔赴品牌2.0时代,女性汽车真实用户需求被定义?

每年的上海国际汽车工业展览会&#xff0c;不仅是各大汽车品牌的技术“秀场”&#xff0c;也是品牌的营销“修罗场”。今年上海车展出圈的营销事件特别多&#xff0c;热度甚至一再蔓延到汽车行业外&#xff0c;其中欧拉也贡献了不少流量。 据了解&#xff0c;在2023上海车展欧…

ModuleNotFoundError: No module named ‘mmcv._ext‘

mmsegmentation使用pyinstaller打包出现问题 mmsegmentation是商汤开源的语义分割框架&#xff0c;里面包含了大量SOTA模型&#xff0c;十分适合从事语义分割工作的小白学习。 最近想将mmsegmentation打包成exe进行使用&#xff0c;但是遇到了一个问题&#xff0c;在打包的过…

Photon AI Translator 和做产品的一些思考

近 4 个月内我一直在做 Apple 平台的产品&#xff0c;虽然从使用量来说「简体中文」用户是占多数&#xff0c;但我一直有做多语言的支持&#xff1a;英语、简体中文和繁体中文。习惯上 Google 翻译的我&#xff0c;基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Trans…