古典问题:有一对兔子,从出生后第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}")
运行结果如下
挑战与创造都是很痛苦的,但是很充实。