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

2023-10-27

一、实验内容

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.回溯:遇到终止条件时,则沿着递推往回一级一级地把值返回来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python习题集5】函数的设计 的相关文章

随机推荐

  • 剑指offer——对称的二叉树

    题目描述 请实现一个函数 用来判断一颗二叉树是不是对称的 注意 如果一个二叉树同此二叉树的镜像是同样的 定义其为对称的 本题知识点 树 解题思路 采用递归的方式 先判断左子树和右子树是否相等 再递归判断左子树的右子树和右子树的左子树以及左子
  • 【101】NLP 自然语言处理14种分类算法】

    内容目录 一 数据集介绍二 解压文件明确需求三 批量读取和合并文本数据集四 中文文本分词五 停止词使用六 编码器处理文本标签七 常规算法模型1 k近邻算法2 决策树3 多层感知器4 伯努力贝叶斯5 高斯贝叶斯6 多项式贝叶斯7 逻辑回归8
  • locust基础使用

    locust基础使用 前言 最近接到一个需求 压测一个接口稳定性 瞬间脑海浮现了jmeter 然后接着看了是那个接口 瞬间分析了下接口里身份验证的加密算法 加上由于时间有限加上jmeter的BeanShell PreProcessor不是很
  • KISS principle (kiss原则)

    Keep It Simple Stupid KISS 原则声明 即使解决方案看起来很愚蠢 简单的解决方案也比复杂的解决方案好 描述 该KISS原则是关于追求简单 现代编程语言 框架和API具有强大的手段来创建针对各种问题的复杂解决方案 有时
  • uniapp超实用页面三层架构(背景层+模糊层+内容层)

    更新 固定高度 滚动条 解决内容超出问题 内容不超出可以去掉
  • Python到底有多强?双十一的时候带你领略它的强大之处!

    双十一第一波付尾款已经开始啦 怎么样 不过很烦的事情就是 手速不够快 抢不过人家 总是错过优惠券 看到好东西 稍微犹豫了下 然后也没了 哭唧唧 成天忙得晕头转向 忘记付尾款 不仅东西没抢到 定金也没了 还有啊 双十一的优惠攻略真的是看得人头
  • 大文件切片上传、视频切片上传转m3u8播放

    一 故事 前不久干项目 涉及到在线学习 简单来说就是对文章 视频进行在线学习 这个时候问题出现了 就是在上传视频的时候 速度很是慢 除此之外 视频播放也是卡的鸭皮 然后就开始疯狂网上搜刮知识 最终解决方案如下 二 解决方案 1 视频采用切片
  • gtest各项参数

    1 测试部分 1 gtest list tests 列出所有测试的名字而不是运行它们 例如TEST fun add 输出就是fun add 2 gtest filter positive patterns 过滤作用 仅仅运行那些名字匹配po
  • docker安装RabbitMQ及安装延迟插件

    我这个安装攻略首先得保证服务器上安装过docker了 如果没安装docker请先去安装docker 1 首先说一下什么是MQ MQ message queue 字面意思上来说消息队列 FIFO先入先出 队列中存入的内容是message 是一
  • Docker 无法使用Vi/Vim/Gedit

    当在ubuntu下 使用docker container 时 想要编辑一些文件 但是docker登陆后 无法安装vim 无法使用apt get命令 所以可以考虑另一种方法 即在本地修改好文件 把文件拷贝覆盖到docker 使用以下命令 do
  • 记录第一篇被”华为开发者联盟鸿蒙专区 “收录的文章

    记录第一篇被 华为开发者联盟鸿蒙专区 社区收录的文章 坚持写作的动力是什么 是记录 分享 以及更好的思考
  • Qt自学笔记-自定义信号和槽(传智教育)

    一 新建项目 1 项目名称 02 SignalAndSlot 建立一个空窗口 基类 Qwidget 名称Widget 先运行一下第一个空窗口 检查一下代码 2 根据需求在项目上创建新文件 2 1 第一个文件 Teacher 不是一个控件 因
  • LeetCode(Python)——回文数(简单)

    回文数 概述 给你一个整数 x 如果 x 是一个回文整数 返回 true 否则 返回 false 回文数是指正序 从左向右 和倒序 从右向左 读都是一样的整数 输入 x 121 输出 true 输入 x 121 输出 false 输入 x
  • PAT 7 三羊献瑞(dfs)

    三羊献瑞 观察下面的加法算式 祥 瑞 生 辉 三 羊 献 瑞 三 羊 生 瑞 气 其中 相同的汉字代表相同的数字 不同的汉字代表不同的数字 请你填写 三羊献瑞 所代表的4位数字 答案唯一 不要填写任何多余内容 答案 9分 f1
  • SPSS实现Fleiss Kappa与分析(也可利用公式计算)

    1 简单介绍 机器学习中涉及新数据集发布的论文通常会描述数据集的构建过程 一份数据集往往由多位标注员共同完成 不同标注员对数据的理解很容易存在偏差 这极大程度上会影响数据集的一致性 从而限制算法的性能 因此在构建数据集的标注过程中 大多数构
  • 解决:selenium.common.exceptions.WebDriverException: Message: 'chromedriver' execu

    在准备写个脚本去爬取网易云歌曲信息时 用selenium去戳 这里采用的是chrome浏览器 链接网页时报错 File C Python37 lib site packages selenium webdriver chrome webdr
  • python日志文件

    version 1 disable existing loggers False root level ERROR handlers console propagate False loggers infoFileLogger level
  • windows任务计划程序拒绝访问

    问题现象 在windows任务计划程序中添加脚本程序 执行相应脚本 报了拒绝访问和创建目录需要输入参数问题 问题分析 没有权限执行脚本 问题解决 除了填写相应位置的脚本之外 还需要填写起始于的脚本所在路径
  • Qt系列文章之 Qt Model Class

    Qt Model Class Qt提供了一些列相互继承的Model类体系 Qt的Model类是对用户数据进行体系化封装并提供统一操作接口的一大类模块 Qt提供的模型类十分多 大致可以分为三种 不可实例化的抽象基类 代理模型类和可实例化模型类
  • 【Python习题集5】函数的设计

    函数的设计 一 实验内容 二 实验总结 一 实验内容 1 编写两个函数分别按单利和复利计算利息 根据本金 年利率 存款年限得到本息和和利息 调用这两个函数计算1000元在银行存3年 在年利率是6 的情况下 单利和复利分别获得的本息和和利息