python随手小练6

1、汉诺塔

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

def hanoi(n, A, B, C):  # 定义汉诺塔函数,参数n是圆盘数,A、B、C是3根柱if n == 1:  # 判断圆盘数,如果等于1,递归条件print(A, '-->', C, ' ', n)  # 直接将A柱上的圆盘移动到C柱上else:  # 否则,进行递归移动hanoi(n - 1, A, C, B)  # 递归将A柱最上方的n-1个盘子落在B柱print(A, '-->', C, ' ', n)  # 输出将A柱上的圆盘移动到C柱上,也就是将A柱的最小面盘子落在C柱hanoi(n - 1, B, A, C)  # 递归将B柱上的n-1个盘子,落在C柱n = int(input("请输入层数:"))
hanoi(n, 'A', 'B', 'C')结果:
请输入层数:3
A --> C   1
A --> B   2
C --> B   1
A --> C   3
B --> A   1
B --> C   2
A --> C   1

2、输入三边的长度,求三角行的面积和周长

import math  # 导入Python的math模块,以便后面可以使用数学函数(sqrt平方根)# 输入三边长度
a = float(input("请输入第一边的长度:"))
b = float(input("请输入第二边的长度:"))
c = float(input("请输入第三边的长度:"))# 验证是否构成三角形
if a + b > c and a + c > b and b + c > a:# 计算周长C = a + b + c# 使用海伦公式计算面积s = (a + b + c) / 2area = math.sqrt(s * (s - a) * (s - b) * (s - c))print(f"这是一个三角形")print(f"三角形的周长为:{C}")print(f"三角形的面积为:{area}")
else:print(f"这不是一个三角形")结果:
请输入第一边的长度:1
请输入第二边的长度:2
请输入第三边的长度:3
这不是一个三角形请输入第一边的长度:3
请输入第二边的长度:4
请输入第三边的长度:5
这是一个三角形
三角形的周长为:12.0
三角形的面积为:6.0

3、鸡兔同笼,从上边看35个头,从下边看94只脚,请问鸡有几只,兔子有几只

def chicken_rabbit(heads,legs):# 循环遍历所有可能的鸡数量for chickens in range(heads + 1):rabbits = heads - chickenstotal_legs = 2 * chickens + 4 * rabbitsif total_legs == legs:return chickens,rabbitsreturn 0,0     #遍历完无满足返回值,返回0,无解heads = 35
legs = 94
# heads = int(input("请输入头的数量:"))
# legs = int(input("请输入腿的数量:"))
chickens,rabbits = chicken_rabbit(heads,legs)if chickens != 0:print(f"鸡有{chickens}只,兔子有{rabbits}只")
else:print("无解")结果:
鸡有23只,兔子有12只

4、编写一个函数,接收一个整数作为参数,判断该整数是否为素数(质数),并返回True或False。

def is_prime(n):for i in range(2, n):if (n % i) == 0:  #如果有除1和它本身以外有其他因数return 0return 1        #必须与循环并列,循环结束无返回就返回1# 素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
# 合数是指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数
# 调用
number = int(input("请输入一个整数:"))
if is_prime(number):print(f"{number}是质数")
else:print(f"{number}是合数")结果:
请输入一个整数:35
35是质数
请输入一个整数:5
5是质数
请输入一个整数:6
6是合数

5、一对兔子,每对兔子从出生的第三个月开始,每个月都会生一对小兔子,而每对兔子都会在出生后的第三个月达到性成熟,之后每月都会再生一对小兔子。

问题的关键是:如果我们从一对刚满月或刚出生的兔子开始,经过多少个月后,会有多少对兔子?

说法一:第一个月兔子满月
def rabbit_number(months):# 初始化第一个月、第二个月和第三个月大的兔子对数month_1, month_2, month_3 = 1, 0, 0for i in range(1, months+1):# 计算下一个月的兔子对数temp = month_2month_2 = month_1month_1 = month_3   #以3月大兔子数量来产生1月大兔子数量month_3 = temp + month_3  #注意:原3月大的兔子需加上,用来判断1月大兔子的数量# 或者tem2, tem1, tem3 = tem1, tem3, tem2 + tem3# rabbit = (month_1 + month_2 + month_3)return month_1 + month_2 + month_3# 输入经过多少个月
months = int(input("请输入经过多少个月:"))
rabbit_number(months)
print(f"经过{months}个月后,有{rabbit_number(months)}对兔子")结果:
请输入经过多少个月:8
经过8个月后,有13对兔子

说法一:第一个月兔子满月(即结束时统计刚踏入2月大)如下图解释

#说法二:第一个月兔子刚出生
def rabbit_number(months):# 初始化第一个月、第二个月和第三个月大的兔子对数month_1, month_2, month_3 = 1, 0, 0for i in range(1, months):# 计算下一个月的兔子对数temp = month_2month_2 = month_1month_1 = month_3   #以3月大兔子数量来产生1月大兔子数量month_3 = temp + month_3  #注意:原3月大的兔子需加上,用来判断1月大兔子的数量# 或者tem2, tem1, tem3 = tem1, tem3, tem2 + tem3# rabbit = (month_1 + month_2 + month_3)return month_1 + month_2 + month_3# 输入经过多少个月
months = int(input("请输入经过多少个月:"))
rabbit_number(months)
print(f"经过{months}个月后,有{rabbit_number(months)}对兔子")结果:
请输入经过多少个月:8
经过8个月后,有9对兔子

总结:简单来说就是月份的认知,将for循环的次数+1或-1即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu终端命令行下如何使用NetworkManager(netplan)来配置wifi网络

最近在给家里折腾一个文件共享服务器给家里的小米摄像头保存监控视频用。树莓派太贵了,找来找去发现香橙派orangepi zero3 是最低成本的替代解决方案(网络足够快,CPU的IO能力足够强),香橙派orangepi zero3的操作系统是…

学信息系统项目管理师第4版系列33_信息化发展

1. 企业信息化发展战略要点 1.1. 【高22下选12】 1.2. 以信息化带动工业化 1.3. 信息化与企业业务全过程的融合、渗透 1.4. 信息产业发展与企业信息化良性互动 1.5. 充分发挥政府的引导作用 1.6. 高度重视信息安全 1.7. 企业信息化改组改造和形成现代企业制度有机结合 …

虚拟化、容器与Docker基本介绍以及安装部署(Docker 基本管理)

目录 1 Docker 概述 1.1 Docker与虚拟机的区别 1.2 容器在内核中支持2种重要技术 1.3 Docker核心概念 2 安装 Docker 2 Docker 镜像操作 2.1 搜索镜像 2.2 获取镜像 2.3 镜像加速下载 2.4 查看镜像信息 2.4.1 查看下载的镜像文件信息 2.4.2 查看下载到本地的所有镜像…

RabbitMQ队列及交换机的使用

目录 一、简单模型 1、首先控制台创建一个队列 2、父工程导入依赖 3、生产者配置文件 4、写测试类 5、消费者配置文件 6、消费者接收消息 二、WorkQueues模型 1、在控制台创建一个新的队列 2、生产者生产消息 3、创建两个消费者接收消息 4、能者多劳充分利用每一个消…

400 The plain HTTP request was sent to HTTPS port

接口请求发生问题: 解决方法: Nginx HTTP服务器的报错 “400 Bad Request: The plain HTTP request was sent to HTTPS port”,本文将讲解如何解决这个问题。简单从报错的字面意思上来看,是因为HTTP请求被发送到HTTPS端口&#x…

CRM自动化意味着什么?企业如何从中受益?

客户关系管理(CRM)软件不再仅仅适用于大公司或销售周期长的行业,它越来越成为各种规模企业的重要工具。 在日常工作中,当你陷入流程的所有细节时,可能会产生不必要的工作。因此,如果你想要CRM提供的组织和…

【Javascript】基础数据类型

目录 基础数据类型 1.number 字面量声明 数字对象方式声明 整数判断 指定返回小数位数 NaN-表示非数字值 浮点精度 解决误差 String 字面量声明 数字对象声明 连接运算符 获取长度 大小写转换 转换成大写 转换成小写 ​编辑 移除空白 获取单字符 ​编辑 截…

不想加班的小伙伴们,请把这四个神器焊在电脑上~

今天又来给大家分享干货啦,如果你下载视频没渠道,写方案没灵感思路,做表格太慢,做海报太复杂,那你一点要看这一篇,今天分享的四个宝藏网站专门解决以上问题,一起来看看吧! 一、WeDow…

4、Kafka 消费者

5.1 Kafka 消费方式 5.2 Kafka 消费者工作流程 5.2.1 消费者总体工作流程 5.2.2 消费者组原理 Consumer Group(CG):消费者组,由多个consumer组成。形成一个消费者组的条件,是所有消费者的groupid相同。 • 消费者组内…

React函数式写法和类式写法的区别(以一个计数器功能为例子)

函数式写法更加简洁和函数式编程思维导向,适用于无状态、UI纯粹的组件,且可以使用Hooks处理副作用。而类式写法适用于有内部状态、生命周期方法和复杂交互逻辑的组件,提供了更多的灵活性和控制力。 文章目录 一、计数器功能演示 1.函数式写法…

分析RPA流程自动化的挑战和解决方案

随着数字化工具和自动化解决方案的日益成熟,各行各业发掘到RPA机器人流程自动化技术的先进性,逐渐规模化部署RPA。 为了更好地推进RPA的实施,金智维在这里分享一些运用这项技术时面临的共同挑战,并给出针对性的解决方案。 组织架构…

【ajax】withCredentials

默认值:false。在获取同域资源时设置 withCredentials 没有影响。 true:在跨域请求时,会携带用户凭证 false:在跨域请求时,不会携带用户凭证;返回的 response 里也会忽略 cookie ajax中的作用 跨域请求时…

链表收尾(8.2)

例题解析 138. 随机链表的复制 - 力扣(LeetCode) 1.拷贝节点插入原节点的后面(核心) 这样做的目的是方便找 random 节点,知道原节点可以找 random,知道上一个 random 可以找下一个 random 。 struct Node…

仿写el-upload组件,彻底搞懂文件上传

用了那么久的Upload组件,你知道是怎么实现的么,今天就来仿写一个饿了么el-upload vue组件,彻底搞懂前端的文件上传相关知识! 要实现的props 参数说明action必选参数,上传的地址headers设置上传的请求头部multiple是否…

图像超分辨率超分辨率NeRF论文阅读

文章目录 前置知识图像超分辨率《High-resolution image reconstruction with latent diffusion models from human brain activity》【CVPR23】《Dynamic High-Pass Filtering and Multi-Spectral Attention for Image Super-Resolution》【ICCV21】《DiffBIR: Towards Blind …

线性代数-Python-01:向量的基本运算 - 手写Vector及numpy的基本用法

文章目录 一、代码仓库二、向量的基本运算2.1 加法2.2 数量乘法2.3 向量运算的基本性质2.4 零向量2.5 向量的长度2.6 单位向量2.7 点乘/内积:两个向量的乘法 --答案是一个标量 三、手写Vector代码3.1 在控制台测试__repr__和__str__方法3.2 创建实例测试代码3.3 完整…

vue3实现在element Dialog 对话框中预览pdf文件

最近有一个需求就是点击按钮在弹框中去预览pdf文件,于是发现了一个HTML中比较重要的标签:embed,前面说的需求就可以用这个标签来实现,一起来学习一下吧。 embed标签是HTML中的一个非常重要的标签,它可以在你的网页上插…

车规MCU开发工具之Vector DaVinci Configurator执行arxml合并操作

环境 Step1 导入要合并的arxml 、 Step 2 比较、合并过程 <完>

xlive.dll下载安装方法分享,教你快速修复xlive.dll文件

在运行某些应用程序或游戏时&#xff0c;你可能会遭遇到"xlive.dll缺失"错误提示&#xff0c;这可能导致程序无法正常运行。本文将向你介绍一些可行的解决方法教你下载xlive.dll文件&#xff0c;并详细阐述xlive.dll是什么文件以及导致其缺失的原因。 一.理解"x…