Python经典练习题(二)

文章目录

🍀题目一

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

本题一出或许大家回想到鸡兔同笼问题,但是这题和那个没啥关联,这题的核心思想在于斐波那契数列

下面进行代码演示

python 复制代码
rabbits = [1, 1]

# 计算兔子总数的月数
months = 24  # 假设计算24个月的兔子总数,你可以根据需要调整月数

# 计算每个月的兔子总数
for i in range(2, months):
    new_rabbits = rabbits[i - 1] + rabbits[i - 2]  # 新生的兔子数等于前两个月的兔子总数之和
    rabbits.append(new_rabbits)

# 输出每个月的兔子总数
for i, total in enumerate(rabbits, start=1):
    print(f"第{i}个月的兔子总数为:{total}")

运行结果如下

这里我再进行说明一下,第一个月第二个月小兔子成长,第三个月小兔子长大了,可以下崽了,所以第三个月有两对,第四个月那个大兔子依旧可以下,所以是三对,第五个月大兔子依旧在下崽,但是它们第一批生的小兔子也可以下崽了,所+2变成了五队,接下来写在纸上,就会奇迹般的发现这好像和斐波那契数列这么像呢!


🍀第二题

判断101-200之间有多少个素数,并输出所有素数。

本题也是较为常见的经典题目,接下来我们采用两种解法

解法一:使用嵌套循环

这个方法使用两个嵌套循环来检查每个数字是否为素数。对于每个数字,它会检查从2到该数字本身之间是否有除了1和它自身以外的因子。如果没有其他因子,那么它就是素数。

python 复制代码
# 方法一:使用嵌套循环判断素数
prime_numbers = []  # 存储素数的列表

for num in range(101, 201):  # 遍历101到200之间的所有数字
    is_prime = True  # 假设当前数字是素数

    # 判断是否为素数
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:  # 如果有除1和自身以外的因子
            is_prime = False
            break

    if is_prime:
        prime_numbers.append(num)

# 输出所有素数
print("101到200之间的素数有以下", len(prime_numbers), "个:")
print(prime_numbers)

运行结果如下

解法二:使用函数封装判断素数的逻辑

这个方法将判断素数的逻辑封装为一个函数,然后通过循环调用这个函数来检查每个数字是否为素数。

这个方法其实和上个大差不差

python 复制代码
# 方法二:使用函数封装判断素数的逻辑
def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            return False
    return True

prime_numbers = []  # 存储素数的列表

for num in range(101, 201):  # 遍历101到200之间的所有数字
    if is_prime(num):
        prime_numbers.append(num)

# 输出所有素数
print("101到200之间的素数有以下", len(prime_numbers), "个:")
print(prime_numbers)

运行结果如下


🍀第三题

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

本题较为简单

python 复制代码
for num in range(100, 1000):  # 遍历所有的三位数
    # 获取百位、十位和个位上的数字
    hundreds = num // 100
    tens = (num % 100) // 10
    ones = num % 10

    # 计算立方和
    sum_of_cubes = hundreds ** 3 + tens ** 3 + ones ** 3

    # 判断是否为水仙花数
    if sum_of_cubes == num:
        print(num)

运行结果如下


🍀第四题

题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。

本题主要是通过反复整除,循环找到质因数,其中外循环必须大于1,因为任何数都可以被1除

python 复制代码
def prime_factors(n):
    factors = []  # 存储质因数的列表
    divisor = 2  # 初始除数为2

    while n > 1:
        while n % divisor == 0:
            factors.append(divisor)  # 将当前除数加入质因数列表
            n //= divisor  # 更新n的值,除以当前除数

        divisor += 1  # 尝试下一个除数

    return factors

# 输入正整数
number = int(input("请输入一个正整数:"))

# 计算质因数
factors = prime_factors(number)

# 输出结果
if len(factors) == 0:
    print(f"{number}没有质因数,它本身就是一个质数。")
else:
    print(f"{number}的质因数分解为:{' * '.join(map(str, factors))}")

运行结果如下

🍀第五题

编写一个判断学生成绩的Python代码

本题主要是使用选择语句,但是注意input这里,输入的成绩可以是float,毕竟有99.5这种分数,所以要强制转换成float类型

python 复制代码
def calculate_grade(score):
    if 90 <= score <= 100:
        return 'A'
    elif 80 <= score < 90:
        return 'B'
    elif 70 <= score < 80:
        return 'C'
    elif 60 <= score < 70:
        return 'D'
    elif 0 <= score < 60:
        return 'F'
    else:
        return '无效分数'

# 输入学生分数
score = float(input("请输入学生的分数:"))

# 计算并输出等级
grade = calculate_grade(score)
print(f"学生的等级为:{grade}")

运行结果如下

挑战与创造都是很痛苦的,但是很充实。

相关推荐
LitchiCheng5 分钟前
Mujoco 蒙特卡洛采样统计机械臂可达工作空间(非Matlab)
开发语言·matlab
真正的醒悟5 分钟前
图解网络8
开发语言·网络·php
徐_三岁7 分钟前
Python 入门学习
java·python·学习
郝学胜-神的一滴11 分钟前
Linux信号集操作函数详解
linux·服务器·开发语言·c++·程序人生
海上飞猪12 分钟前
【Python】基础数据类型-List
python
落霞的思绪14 分钟前
基于Go开发的矢量瓦片服务器——pg_tileserv
开发语言·后端·golang
CHANG_THE_WORLD16 分钟前
Python 文件操作详解与代码示例
开发语言·数据库·python
卿雪19 分钟前
Redis 数据持久化:RDB和 AOF 有什么区别?
java·数据库·redis·python·mysql·缓存·golang
Chasing Aurora23 分钟前
Python后端开发之旅(二)
开发语言·python·语言模型·langchain·ai编程
2401_8919573126 分钟前
简单了解一下智能指针(C++)
开发语言·c++