python随手小练6

2023-10-22 07:04
文章标签 python 随手 小练

本文主要是介绍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即可

这篇关于python随手小练6的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/259869

相关文章

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地