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 世界的起点,并在未来的学习中触类旁通,应对更复杂的挑战。

最新发布