【Python】函数设计

1.联系函数的设计

2.找质数

3.找因子

4.判断水仙花数

5.斐波拉契数列递归调用,并用数组存储已计算过的数,减少重复计算


1、计算利息和本息

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

#按单利:
#本息和=本金+本金*年利率*年
#利息 = 本金*年利率*年
def simple_interest(principal, annual_rate, years):
    """
    计算单利下的本息和和利息
    :param principal: 本金
    :param annual_rate: 年利率(小数形式)
    :param years: 存款年限
    :return: 本息和, 利息
    """
    interest = principal * annual_rate * years
    amount = principal + interest
    return amount, interest

#按复利
#利息=本金*年利率
#本息和=本金*(1+年利率)
def compound_interest(principal, annual_rate, years):
    """
    计算复利下的本息和和利息
    :param principal: 本金
    :param annual_rate: 年利率
    :param years: 存款年限
    :return: 本息和, 利息
    """
    compound_factor = (1 + annual_rate) ** years
    amount = principal * compound_factor
    interest = amount - principal
    return amount, interest


# 调用函数进行计算
principal = 1000  # 本金
annual_rate = 0.06  # 年利率,转换为小数形式
years = 3  # 存款年限

# 单利计算
simple_amount, simple_interest = simple_interest(principal, annual_rate, years)
print(f"单利计算下,本息和为:{simple_amount}元,利息为:{simple_interest}元")

# 复利计算
compound_amount, compound_interest = compound_interest(principal, annual_rate, years)
print(f"复利计算下,本息和为:{compound_amount:.2f}元,利息为:{compound_interest:.2f}元")

2、判断素数

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


def is_prime(n):
    """
    判断一个数是否为素数
    :param n: 待判断的整数
    :return: 如果n是素数,返回True;否则返回False
    """
    if n <= 1:
        return False
    elif n == 2:
        return True
    elif n % 2 == 0:
        return False
    else:
        i = 3
        while i * i <= n:
            if n % i == 0:
                return False
            i += 2
        return True

    # 从键盘获取输入


num = int(input("请输入一个整数: "))

# 调用函数并打印结果
if is_prime(num):
    print(f"{num}是素数")
else:
    print(f"{num}不是素数")

3、求因子

编写函数,求出一个数除了1和自身以外的因子。从键盘输人一个数,调用该函数输出除了1和它自身以外的所有因子。


def find_factors(n):
    """
    找出除了1和n以外的n的所有因子
    :param n: 整数n
    :return: n的所有因子的列表(不包括1和n)
    """
    factors = []
    for i in range(2, int(n ** 0.5) + 1):  # 只检查到n的平方根即可
        if n % i == 0:
            factors.append(i)
            if i != n // i:  # 避免平方数时重复添加因子
                factors.append(n // i)
    return factors


# 从键盘获取输入
num = int(input("请输入一个整数: "))

# 调用函数并打印因子
factors = find_factors(num)
if factors:
    print(f"{num}除了1和它自身以外的因子有: {factors}")
else:
    print(f"{num}是质数,没有除了1和它自身以外的因子。")

4、判断水仙花数

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

def is_narcissistic_number(num):
    """
    判断一个数是否为水仙花数
    """
    # 转换为字符串以便访问每一位数字
    str_num = str(num)
    n = len(str_num)  # 位数
    sum_of_powers = 0

    # 遍历每一位数字,计算其n次幂并求和
    for digit in str_num:
        sum_of_powers += int(digit) ** n

        # 判断和是否等于原数
    return sum_of_powers == num


# 遍历1到999之间的所有整数,找出水仙花数并打印
for i in range(100, 1000):  # 只需要遍历100到999,因为水仙花数至少三位
    if is_narcissistic_number(i):
        print(i)

5、求斐波拉契数列

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


def fibonacci_with_memo(n, memo={}):
    if n in memo:
        return memo[n]
    elif n <= 0:
        return "索引无效,请输入大于0的整数。"
    elif n == 1:
        memo[n] = 0
    elif n == 2:
        memo[n] = 1
    else:
        memo[n] = fibonacci_with_memo(n - 1, memo) + fibonacci_with_memo(n - 2, memo)
    return memo[n]


# 打印斐波那契数列的前20项
for i in range(1, 21):
    print(fibonacci_with_memo(i), end=' ')

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

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

相关文章

学习Rust的第22天:mini_grep第2部分

书接上文&#xff0c;在本文中&#xff0c;我们学习了如何通过将 Rust 程序的逻辑移至单独的库箱中并采用测试驱动开发 (TDD) 实践来重构 Rust 程序。通过在实现功能之前编写测试&#xff0c;我们确保了代码的可靠性。我们涵盖了基本的 Rust 概念&#xff0c;例如错误处理、环境…

【linux-汇编-点灯之思路-程序】

目录 1. ARM汇编中的一些注意事项2. IMXULL汇编点灯的前序&#xff1a;3. IMXULL汇编点灯之确定引脚&#xff1a;4. IMXULL汇编点灯之引脚功能编写&#xff1a;4.1 第一步&#xff0c;开时钟4.2 第二步&#xff0c;定功能&#xff08;MUX&#xff09;4.3 第三步&#xff0c;定电…

【笔试训练】day17

1.小乐乐该数字 遇到按位处理的情况可以考虑用字符串去读 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include<string> using namespace std;int main() {string str;cin >> str;int ans 0;for (int i 0; i < str.siz…

JavaEE 初阶篇-深入了解 Junit 单元测试框架和 Java 中的反射机制(使用反射做一个简易版框架)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Junit 单元测试框架概述 1.1 使用 Junit 框架进行测试业务代码 1.2 Junit 单元测试框架的常用注解&#xff08;Junit 4.xxx 版本&#xff09; 2.0 反射概述 2.1 获…

神经网络中的优化方法

一、引入 在传统的梯度下降优化算法中&#xff0c;如果碰到平缓区域&#xff0c;梯度值较小&#xff0c;参数优化变慢 &#xff0c;遇到鞍点&#xff08;是指在某些方向上梯度为零而在其他方向上梯度非零的点。&#xff09;&#xff0c;梯度为 0&#xff0c;参数无法优化&…

机器人系统ros2-开发实践04-ROS2 中 tf2的定义及示例说明

1. what ros2 tf2 &#xff1f; tf2的全称是transform2&#xff0c;在ROS&#xff08;Robot Operating System&#xff09;中&#xff0c;它是专门用于处理和变换不同坐标系间位置和方向的库。这个名字来源于“transform”这个词&#xff0c;表示坐标变换&#xff0c;而“2”则…

【Leetcode每日一题】 动态规划 - 简单多状态 dp 问题 - 删除并获得点数(难度⭐⭐)(70)

1. 题目解析 题目链接&#xff1a;740. 删除并获得点数 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 问题分析 本题是「打家劫舍」问题的变种&#xff0c;但核心逻辑依然保持一致。题目要求从给定的数组nums中选择…

C++ stack和queue的使用方法与模拟实现

文章目录 一、 stack的使用方法二、 queue的使用方法三、 容器适配器四、 stack的模拟实现五、 queue的模拟实现 一、 stack的使用方法 stack介绍文档 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的…

Windows如何通过wsl2迅速启动Docker desktop的PHP的Hyperf项目容器?

一、安装WSL 什么是WSL&#xff1f; 官网&#xff1a;什么是WSL&#xff1f; Windows Subsystem for Linux (WSL) 是一个在Windows 10和Windows 11上运行原生Linux二进制可执行文件的兼容性层。 换句话说&#xff0c;WSL让你可以在Windows系统上运行Linux环境&#xff0c;而无需…

【linux】unzip解压乱码或者报错处理办法

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

2023-2024年数字化转型报告/方案合集(精选198份)

数字化转型报告/方案&#xff08;精选198份&#xff09; 2023-2024年 来源&#xff1a;2023-2024年数字化转型报告/方案合集&#xff08;精选198份&#xff09; 【以下是资料目录】 2023-2024年度医药健康行业数字化调研报告 2023-2024中国财务数字化报告 2023⻝品饮料行业…

Redis运维篇-快速面试笔记(速成版)

文章目录 1. Redis的持久化1.1 RDB&#xff08;快照模式&#xff09;1.2 AOF 模式 2. Redis主从模型&#xff08;高可用&#xff09;2.1 Redis的主从复制2.2 Redis拓扑结构 3. Redis集群模式&#xff08;高并发&#xff09;3.1 Redis的Slots3.2 集群模式的常用命令3.3 多主多从…

使用 MediaMTX 和 FFmpeg 推拉 RTSP 流媒体

实时流传输协议 RTSP&#xff08;Real-Time Streaming Protocol&#xff09;是 TCP/IP 协议体系中的一个应用层协议&#xff0c;由哥伦比亚大学、网景和 RealNetworks 公司提交的 IETF RFC 标准。该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP 在体系…

Unity射击游戏开发教程:(8)构建 UI 元素:添加分数显示

用户界面决定用户如何与屏幕交互。UI 适用于所有类型的游戏和应用程序,在此示例中,我们将为我的太空射击游戏设置一个简单的记分板。 第一步是在层次结构中创建一个 UI 元素。只需在层次结构中右键单击,滚动 UI 并选择要添加的 UI 元素类型。在本例中,我们将使用文本元素。…

STM32入门_江协科技_3~4_OB记录的自学笔记_软件安装新建工程

3. 软件安装 3.1. 安装Keil5 MDK 作者的资料下载的连接如下&#xff1a;https://jiangxiekeji.com/download.html#32 3.2. 安装器件支持包 因为新的芯片层出不穷&#xff0c;所以需要安装Keil5提供的器件升级版对软件进行升级&#xff0c;从而支持新的芯片&#xff1b;如果不…

如何将 redis 快速部署为 docker 容器?

部署 Redis 作为 Docker 容器是一种快速、灵活且可重复使用的方式&#xff0c;特别适合开发、测试和部署环境。本文将详细介绍如何将 Redis 部署为 Docker 容器&#xff0c;包括 Docker 安装、Redis 容器配置、数据持久化、网络设置等方面。 步骤 1&#xff1a;安装 Docker 首…

ICode国际青少年编程竞赛- Python-1级训练场-基本操作

ICode国际青少年编程竞赛- Python-1级训练场-基本操作 1、 Dev.step(3)2、 Dev.step(1)3、 Dev.step(7)4、 Dev.step(-1)5、 Dev.step(-5)6、 Dev.step(3) Dev.step(-8)7、 Dev.turnRight() Dev.step(1)8、 Dev.turnLeft() Dev.step(1)9、 Dev.step(4) Dev.tur…

串的模式匹配之BF算法实现

概述 BF算法-暴力枚举 匹配失败处理 匹配成功结束 算法思想 代码实现 定义串的存储结构&#xff1a;装字符的ch数组标记长度的length 最坏时间复杂度分析 代码整合

微调Mistral 7B以实现命名实体识别 (NER)

文章来源&#xff1a;fine-tuning-mistral-7b-for-named-entity-recognition-ner 2024 年 4 月 19 日 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;命名实体识别&#xff08;NER&#xff09;被认为是一项关键任务&#xff0c;应用范围广泛&#xff0c;包括信息…

电脑找不到msvcp140.dll如何修复?msvcp140.dll丢失的多种解决方法分享

在日常电脑操作过程中&#xff0c;用户可能会遇到一个令人困扰的问题&#xff0c;即屏幕上突然弹出一条错误提示&#xff1a;“由于找不到msvcp140.dll&#xff0c;无法继续执行代码”。这一情况往往导致应用程序无法正常启动或运行&#xff0c;给工作和娱乐带来不便。不过&…