🍀题目一
古典问题:有一对兔子,从出生后第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}")
运行结果如下
这里我再进行说明一下,第一个月第二个月小兔子成长,第三个月小兔子长大了,可以下崽了,所以第三个月有两对,第四个月那个大兔子依旧可以下,所以是三对,第五个月大兔子依旧在下崽,但是它们第一批生的小兔子也可以下崽了,所+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)
运行结果如下
🍀第四题
题目:将一个正整数分解质因数。例如:输入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代码
本题主要是使用选择语句,但是注意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}")
运行结果如下
挑战与创造都是很痛苦的,但是很充实。