Python经典练习题(二)

文章目录

  • 题目一
  • 第二题
  • 第三题
  • 第四题
  • 第五题

题目一

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

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

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}")

运行结果如下

Python经典练习题(二)_第1张图片

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


第二题

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

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

解法一:使用嵌套循环

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

# 方法一:使用嵌套循环判断素数
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)

运行结果如下

在这里插入图片描述

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

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

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

# 方法二:使用函数封装判断素数的逻辑
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的三次方。

本题较为简单

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)

运行结果如下
Python经典练习题(二)_第2张图片


第四题

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

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

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经典练习题(二)_第3张图片

第五题

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

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

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}")

运行结果如下
Python经典练习题(二)_第4张图片

Python经典练习题(二)_第5张图片

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

你可能感兴趣的:(Python经典练习题,python,开发语言)