python随手小练6

1、汉诺塔

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

python">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、输入三边的长度,求三角行的面积和周长

python">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) / 2
    area = 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只脚,请问鸡有几只,兔子有几只

python">def chicken_rabbit(heads,legs):
    # 循环遍历所有可能的鸡数量
    for chickens in range(heads + 1):
        rabbits = heads - chickens
        total_legs = 2 * chickens + 4 * rabbits
        if total_legs == legs:
            return chickens,rabbits
    return 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。

python">def is_prime(n):
    for i in range(2, n):
        if (n % i) == 0:  #如果有除1和它本身以外有其他因数
            return 0
    return 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、一对兔子,每对兔子从出生的第三个月开始,每个月都会生一对小兔子,而每对兔子都会在出生后的第三个月达到性成熟,之后每月都会再生一对小兔子。

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

python">说法一:第一个月兔子满月
def rabbit_number(months):
    # 初始化第一个月、第二个月和第三个月大的兔子对数
    month_1, month_2, month_3 = 1, 0, 0
    for i in range(1, months+1):
        # 计算下一个月的兔子对数
        temp = month_2
        month_2 = month_1
        month_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月大)如下图解释

python">#说法二:第一个月兔子刚出生
def rabbit_number(months):
    # 初始化第一个月、第二个月和第三个月大的兔子对数
    month_1, month_2, month_3 = 1, 0, 0
    for i in range(1, months):
        # 计算下一个月的兔子对数
        temp = month_2
        month_2 = month_1
        month_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.niftyadmin.cn/n/5110172.html

相关文章

【Asp.net】Asp.net core中IIS配置注意事项

1、应用地址池设为无托管代码 一、提示:关于IIS上运行ASP.NET Core 站点的“HTTP 500.19”错误 安装dotnet-hosting-3.1.2-win.exe ASP.NET Core 3.1 Runtime (v3.1.2)下载地址: https://download.visualstudio.microsoft.com/download/pr/dd119832-dc4…

基于springboot小区物业管理系统

功能如下图所示 摘要 基于Spring Boot的小区物业管理系统是一项重要的解决方案,旨在提升小区物业管理的效率和质量。这个系统整合了现代技术和管理实践,为小区内的住户和物业管理人员提供了便捷的工具,以更好地管理和维护住宅区。该系统的关键…

如何理解OSI七层模型?

一、是什么 OSI (Open System Interconnect)模型全称为开放式通信系统互连参考模型,是国际标准化组织 ( ISO ) 提出的一个试图使各种计算机在世界范围内互连为网络的标准框架 OSI 将计算机网络体系结构划分为七层,每一层实现各自…

【Python】将Python中的多维列表进行展开

1. 引言 在本教程中,我们将探索在 Python 中展平列表的不同方法。列表展开是指将多维列表转换为一维列表的过程,我们将介绍如何使用 Python 语法和 NumPy 库来分别展平 二维、三维和四维度的列表。 闲话少说,我们直接开始吧! 2…

大数据Flink(一百):SQL自定义函数(UDF)和标量函数(Scalar Function)

文章目录 SQL自定义函数(UDF)和标量函数(Scalar Function)

掌握Java中的volatile关键字

高速缓存 什么是高速缓存 高速缓存(Cache)是一种用于存储计算机数据的临时存储设备,用于加速数据访问速度,减少对主存储器(RAM)或磁盘的频繁访问。高速缓存通过将最常用的数据存储在更接近CPU的位置&…

Maven系列第8篇:大型Maven项目,快速按需任意构建

本篇涉及到的内容属于神技能,多数使用maven的人都经常想要的一种功能,但是大多数人都不知道如何使用,废话不多说,上干货。 需求背景 我们需要做一个电商项目,一般都会做成微服务的形式,按业务进行划分&am…

YOLO目标检测——人脸口罩佩戴数据集【(含对应voc、coco和yolo三种格式标签】

实际项目应用:公共场所监控场景下的大密度人群检测是否佩戴口罩,以及戴口罩的人证比对(安检刷脸不用摘口罩)、手机解锁、刷脸考勤等身份认证场景。数据集说明:人脸口罩佩戴检测数据集,真实场景的高质量图片…