Python 计算 1 到 100 的和并输出其中偶数的和(长文讲解)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
在编程学习的初期阶段,"Python 计算 1 到 100 的和并输出其中偶数的和" 是一个经典练习题,它巧妙地结合了基础语法与算法逻辑。这个问题看似简单,但深入思考后会发现:它既能帮助新手巩固循环、条件判断等核心概念,又能引导中级开发者探索更高效的数学优化方法。本文将以循序渐进的方式,从基础语法到进阶技巧全面解析这一问题,并通过实际案例与对比分析,帮助读者建立系统性思维。
一、基础语法解析:循环与条件判断
1.1 理解循环结构:用代码模拟“重复劳动”
在编程中,循环如同工厂中的传送带,能自动重复执行一段代码。例如,计算 1 到 100 的和时,我们需要逐个遍历数字并累加。Python 中的 for
循环通过 range()
函数可以轻松实现这一过程。
代码示例 1:遍历 1 到 100
for number in range(1, 101):
print(number)
这里 range(1, 101)
的终点是 101,因为 Python 的 range
包含起始值但排除结束值,这样恰好覆盖 1-100 的整数。
1.2 条件判断:筛选偶数的“过滤器”
条件判断(如 if
语句)就像交通灯,根据条件决定代码的执行路径。判断一个数是否为偶数,可通过 取模运算符 %
:
if number % 2 == 0:
print(f"{number} 是偶数")
当 number
被 2 除后余数为 0 时,即满足偶数条件。
二、算法设计:分步骤实现目标
2.1 第一步:计算总和的“累加器”
我们可以通过一个变量 total_sum
存储总和,初始值设为 0。遍历每个数字时,将其加到 total_sum
中:
total_sum = 0
for number in range(1, 101):
total_sum += number # 等价于 total_sum = total_sum + number
print(f"1到100的总和为:{total_sum}")
2.2 第二步:提取偶数并计算其和
在循环中,当判断到偶数时,将其加到另一个变量 even_sum
中:
even_sum = 0
for number in range(1, 101):
if number % 2 == 0:
even_sum += number
print(f"1到100的偶数和为:{even_sum}")
2.3 整合代码:完整解决方案
将上述两部分合并,最终代码如下:
total_sum = 0
even_sum = 0
for number in range(1, 101):
total_sum += number
if number % 2 == 0:
even_sum += number
print(f"1到100的总和:{total_sum}")
print(f"1到100的偶数和:{even_sum}")
三、优化方法:从暴力枚举到数学公式
3.1 数学公式的“捷径”
等差数列求和公式能大幅减少计算量:
- 总和:
n*(a1 + an)/2
,其中 n=100,a1=1,a100=100 - 偶数和:偶数构成的等差数列(2,4,…,100),项数为 50,首项 a1=2,末项 a50=100
代码示例 2:使用数学公式
n = 100
total_sum = n * (1 + n) // 2
even_count = n // 2
even_sum = even_count * (2 + 100) // 2
print(f"总和:{total_sum}")
print(f"偶数和:{even_sum}")
这里 //
表示整数除法,确保结果为整数。
3.2 性能对比:循环 vs 公式
- 循环方法:时间复杂度为 O(n),需遍历 100 次
- 公式方法:时间复杂度为 O(1),仅需数学运算
对于小规模数据(如 1-100),两者的差异不明显,但处理百万级数据时,公式法的优势会显著体现。
四、实际案例:代码调试与输出分析
4.1 完整代码与输出结果
def calculate_sums():
total_sum = 0
even_sum = 0
for num in range(1, 101):
total_sum += num
if num % 2 == 0:
even_sum += num
return total_sum, even_sum
total, even = calculate_sums()
print(f"总和:{total}")
print(f"偶数和:{even}")
运行结果:
总和:5050
偶数和:2550
4.2 输出结果的数学验证
- 总和:根据公式
100*(1+100)/2 = 5050
,与代码结果一致。 - 偶数和:50 个偶数的平均值为
(2+100)/2=51
,总和50*51=2550
,同样验证了正确性。
五、常见问题与解决技巧
5.1 问题 1:循环范围错误
错误代码:
for number in range(1, 100): # 终点设为 100,实际只到 99
解决方法: 将终点改为 101
,确保包含 100。
5.2 问题 2:偶数判断条件颠倒
错误代码:
if number % 2 != 0: # 错误地筛选了奇数
解决方法: 将 !=
改为 ==
。
5.3 问题 3:变量未初始化
错误代码:
total_sum += number # 若未提前声明 total_sum=0,会引发 NameError
解决方法: 在循环外初始化变量。
六、进阶思考:泛化与扩展
6.1 动态输入:让用户定义范围
通过 input()
函数获取用户输入的起始和结束值,使程序更具灵活性:
start = int(input("请输入起始数字:"))
end = int(input("请输入结束数字:"))
total_sum = 0
even_sum = 0
for num in range(start, end + 1):
total_sum += num
if num % 2 == 0:
even_sum += num
print(f"{start}到{end}的总和:{total_sum}")
print(f"偶数和:{even_sum}")
6.2 函数封装:模块化代码结构
将计算逻辑封装为函数,便于复用:
def calculate_range(start, end):
... # 同前文代码
result_total, result_even = calculate_range(1, 100)
结论
通过本篇博客的解析,我们不仅实现了“Python 计算 1 到 100 的和并输出其中偶数的和”的核心目标,还延伸探讨了算法优化、代码调试与模块化设计等进阶主题。对于编程新手,这是一次巩固基础语法的实践;对于中级开发者,则可从中学习如何通过数学思维提升效率。编程的本质不仅是解决问题,更是通过不断优化代码,培养逻辑思维与系统性分析能力。希望本文能成为你探索 Python 世界的起点,并在未来的学习中触类旁通,应对更复杂的挑战。