当前位置:首页>python>Python实践第十课:寻找自然数中的"幸运儿"——计算能被3或5整除的数之和

Python实践第十课:寻找自然数中的"幸运儿"——计算能被3或5整除的数之和

  • 2026-10-11 07:56:37
Python实践第十课:寻找自然数中的"幸运儿"——计算能被3或5整除的数之和

你好,我是西湖码客,一个技术爱好者!在前面的课程中,我们学会了阶乘求和、数列计算等数学问题。今天,我们要让Python成为"幸运数猎人",探索一个经典的编程问题——找出能被3或5整除的数并求和!

想象一下:你有一篮子从0到n-1的自然数,要挑出所有能被3整除或能被5整除的"幸运数",然后计算它们的和。今天,我们就来编写一个智能筛选程序,让Python帮我们快速完成这个任务。

01

任务描述

02

编程实现

先看成果:你的"幸运数猎手"

# 计算0到n-1中能被3或5整除的数之和# 1. 获取用户输入的nn = int(input())# 2. 初始化总和为0total = 0# 3. 遍历0到n-1的每个自然数for i in range(n):  # range(n)生成0,1,2,...,n-1    # 检查是否能被3或5整除    if i % 3 == 0 or i % 5 == 0:        total = total + i  # 如果是"幸运数",就加到总和中# 4. 输出结果print(total)

运行这个程序,输入10,你会看到:

1023

太棒了!Python就像一个高效的筛子,瞬间就找出了0到9中能被3或5整除的数,并计算了它们的和。让我们一步步探索这个程序的筛选逻辑。

生活中的筛选:从水果到数字

水果筛选

  • 有一筐混合水果:苹果、香蕉、橙子、葡萄...

  • 要挑出所有苹果或香蕉

  • 统计挑出的水果总重量

数字筛选

  • 有一组自然数:0,1,2,3,4,5,6,7,8,9

  • 要挑出所有能被3整除或能被5整除的数

  • 计算这些数的和

学生筛选

  • 有一个班级的学生

  • 要挑出数学成绩90分以上或英语成绩90分以上的学生

  • 计算这些学生的平均分

第一步:确定"搜索范围"——获取n的值

n = int(input())

这行代码确定我们要检查的范围:

  1. 接收输入:input()

    • 等待用户输入一个数字

    • 就像问:"你要检查多少个数?"

  2. 类型转换:int(...)

    • 将输入的字符串转换为整数

    • 因为n必须是正整数

  3. 保存n:n = ...

    • 将数字保存到变量n中

    • 表示要检查0到n-1的n个自然数

第二步:准备"收集篮"——初始化总和

total = 0

这行代码准备一个空的"收集篮":

  • 初始状态:总和从0开始

  • 变量命名:total意为"总和",直观易懂

  • 为什么是0:就像空的篮子,从0开始装"幸运数"

第三步:启动"筛选机器"——for循环

for i in range(n):  # range(n)生成0,1,2,...,n-1    # 检查是否能被3或5整除    if i % 3 == 0 or i % 5 == 0:        total = total + i  # 如果是"幸运数",就加到总和中

这是程序的核心,就像一台高效的筛选机器:

for循环:逐一检查每个数

  • range(n):生成从0到n-1的整数序列

  • 示例:n=10,range(10)生成[0,1,2,3,4,5,6,7,8,9]

  • 每次循环,i取序列中的一个值

条件判断:检查是否为"幸运数"

  • i % 3 == 0:检查是否能被3整除

  • i % 5 == 0:检查是否能被5整除

  • or:逻辑或运算符,两个条件满足一个即可

累加操作:收集"幸运数"

  • total = total + i:把当前的i加到total中

  • 可以简写为total += i

筛选过程演示(n=10)

i=0: 0%3=0 → 是幸运数 → total=0+0=0
i=1: 1%3=1, 1%5=1 → 不是幸运数
i=2: 2%3=2, 2%5=2 → 不是幸运数
i=3: 3%3=0 → 是幸运数 → total=0+3=3
i=4: 4%3=1, 4%5=4 → 不是幸运数
i=5: 5%5=0 → 是幸运数 → total=3+5=8
i=6: 6%3=0 → 是幸运数 → total=8+6=14
i=7: 7%3=1, 7%5=2 → 不是幸运数
i=8: 8%3=2, 8%5=3 → 不是幸运数
i=9: 9%3=0 → 是幸运数 → total=14+9=23
结束循环,total=23

筛选流程图

开始  ↓total = 0  ↓i从0到n-1循环:  ↓i能被3整除? → 是 → 加到total  ↓否i能被5整除? → 是 → 加到total  ↓否继续下一个i  ↓是否i=n-1? → 是 → 结束循环  ↓否继续循环  ↓输出total

第四步:报告"收获总量"——输出结果

print(total)

这行代码宣布最终结果:

  • 输出变量total的值

  • 示例:n=10,输出23

03

常见问题与调试技巧

问题1:理解范围错误

# 错误示例:错误理解范围n = 10total = 0# 错误:使用了range(1, n),漏掉了0,多算了10for i in range(1, n):  # 生成1到9,漏了0,而且题目要求0到n-1    if i % 3 == 0 or i % 5 == 0:        total += iprint(total)  # 输出:23(巧合,但逻辑错误)# 正确示例total = 0for i in range(n):  # 生成0到9    if i % 3 == 0 or i % 5 == 0:        total += iprint(total)  # 输出:23

记住:range(n)生成0到n-1的序列

问题2:逻辑运算符错误

# 错误示例:使用了and而不是orn = 10total = 0for i in range(n):    if i % 3 == 0 and i % 5 == 0:  # 错误:要同时被3和5整除        total += iprint(total)  # 输出:0(只有0和15,15不在范围内)# 正确示例total = 0for i in range(n):    if i % 3 == 0 or i % 5 == 0:  # 正确:被3整除或被5整除        total += iprint(total)  # 输出:23
04

学习总结

通过这个筛选求和程序,我们学到了:

  1. 循环遍历:用for循环遍历序列中的每个元素

  2. 条件判断:用if语句和逻辑运算符进行筛选

  3. 取余运算:%运算符检查整除性

  4. 逻辑运算符:or表示"或",满足一个条件即可

  5. 边界处理:正确处理0到n-1的范围

记住,编程不仅是写代码,更是培养逻辑思维和数学建模能力。今天,你用Python解决了经典的筛选求和问题。继续探索,你会发现编程能解决各种数学和实际问题!

从简单筛选到复杂条件,今天你不仅学会了筛选求和,更掌握了用编程解决数学问题的思维方法!

最新文章

随机文章