Python循环编程:从基础到实战经典案例

发布时间:2026/9/14 23:14:07
Python循环编程:从基础到实战经典案例 1. Python循环基础回顾在开始这三个经典练习题之前我们先快速回顾一下Python中常用的循环结构。Python提供了两种主要的循环方式for循环和while循环。for循环通常用于已知迭代次数的情况其基本语法如下for 变量 in 可迭代对象: # 循环体while循环则适用于不确定循环次数的情况只要条件为真就会继续执行while 条件: # 循环体在实际编程中我们经常会结合range()函数、break和continue语句来控制循环流程。理解这些基础知识是解决循环练习题的前提。2. 练习题一打印九九乘法表2.1 问题描述编写一个Python程序使用循环打印出标准的九九乘法表格式如下1*11 1*22 2*24 1*33 2*36 3*39 ... 1*99 2*918 ... 9*9812.2 解决方案这个练习需要用到嵌套循环外层循环控制行数内层循环控制每行的列数。for i in range(1, 10): # 控制行数 for j in range(1, i1): # 控制每行的列数 print(f{j}*{i}{i*j}, end\t) # 使用制表符对齐 print() # 每行结束后换行2.3 关键点解析外层循环变量i从1到9表示乘法表的行数内层循环变量j从1到i表示每行的列数使用f-string格式化输出使结果更易读end\t确保每列对齐print()实现换行提示在Python 3.6版本中f-string是最推荐的字符串格式化方式比%和format()更简洁高效。3. 练习题二寻找水仙花数3.1 问题描述水仙花数是指一个n位数(n≥3)它的每个位上的数字的n次幂之和等于它本身。例如1531³5³3³。编写程序找出所有3位数的水仙花数。3.2 解决方案我们需要遍历所有3位数(100-999)然后分解每个数的各位数字进行验证。for num in range(100, 1000): # 分解数字 a num // 100 # 百位 b num // 10 % 10 # 十位 c num % 10 # 个位 # 验证条件 if a**3 b**3 c**3 num: print(num)3.3 优化版本可以使用数学运算和字符串转换两种方式来实现# 方法1数学运算 for num in range(100, 1000): sum_cubes sum(int(d)**3 for d in str(num)) if sum_cubes num: print(num) # 方法2字符串转换 for num in range(100, 1000): s str(num) if int(s[0])**3 int(s[1])**3 int(s[2])**3 num: print(num)3.4 常见问题数字分解错误确保正确获取各位数字边界条件range(100, 1000)包含100但不包含1000性能考虑对于3位数两种方法性能差异不大但数学运算通常更快4. 练习题三斐波那契数列4.1 问题描述斐波那契数列是指这样一个数列0、1、1、2、3、5、8...从第三项开始每一项都等于前两项之和。编写程序生成前n项斐波那契数列。4.2 基础解决方案使用循环实现斐波那契数列的经典方法n 10 # 生成前10项 a, b 0, 1 for _ in range(n): print(a, end ) a, b b, a b4.3 进阶实现我们可以将结果存储在列表中方便后续使用def fibonacci(n): result [] a, b 0, 1 for _ in range(n): result.append(a) a, b b, a b return result print(fibonacci(10)) # 输出[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]4.4 性能优化对于大规模计算可以使用动态规划或矩阵快速幂等高级算法但对于初学者理解基础循环实现最重要。5. 循环编程技巧与最佳实践5.1 避免无限循环使用while循环时务必确保循环条件最终会变为False否则会导致无限循环。例如# 危险的写法 count 0 while count 10: # 如果忘记增加count就会无限循环 print(count) # count 1 # 如果注释掉这行就是无限循环5.2 使用enumerate获取索引在需要同时访问元素和索引时使用enumerate比手动维护索引更优雅fruits [apple, banana, cherry] for index, fruit in enumerate(fruits): print(fIndex {index}: {fruit})5.3 列表推导式简化循环许多简单的循环可以用列表推导式替代使代码更简洁# 传统方式 squares [] for x in range(10): squares.append(x**2) # 列表推导式 squares [x**2 for x in range(10)]5.4 循环中的异常处理在循环中处理异常时要考虑是否继续循环numbers [1, 2, 3, 4, five, 6] valid_numbers [] for num in numbers: try: valid_numbers.append(float(num)) except ValueError: print(f跳过无效值: {num}) print(valid_numbers) # 输出[1.0, 2.0, 3.0, 4.0, 6.0]6. 调试循环程序6.1 使用print调试在复杂循环中适当添加print语句可以帮助理解程序流程for i in range(5): print(f外层循环i{i}) for j in range(3): print(f 内层循环j{j}) # 其他代码6.2 使用断点调试在IDE中设置断点逐步执行循环观察变量变化。6.3 常见循环错误差一错误(off-by-one)range的范围设置不当无限循环忘记更新循环条件修改迭代中的集合在循环中修改正在迭代的列表会导致意外行为7. 循环性能优化7.1 减少循环内部计算将不变的计算移到循环外部# 不佳的实现 for i in range(10000): result some_expensive_computation() * i # 优化后 const some_expensive_computation() for i in range(10000): result const * i7.2 使用内置函数许多内置函数(如map、filter)比显式循环更高效# 传统方式 squares [] for x in range(10): squares.append(x**2) # 使用map squares list(map(lambda x: x**2, range(10)))7.3 循环展开对于简单循环可以手动展开以减少循环开销# 原始循环 for i in range(0, 100, 2): process(i) process(i1) # 展开后 for i in range(0, 100, 2): process(i) process(i1)8. 循环应用实例扩展8.1 素数判断使用循环判断一个数是否为素数def is_prime(n): if n 1: return False for i in range(2, int(n**0.5)1): if n % i 0: return False return True8.2 冒泡排序经典的排序算法实现def bubble_sort(arr): n len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] arr[j1]: arr[j], arr[j1] arr[j1], arr[j] return arr8.3 猜数字游戏结合循环和条件语句的小游戏import random target random.randint(1, 100) attempts 0 while True: guess int(input(猜一个1-100的数字: )) attempts 1 if guess target: print(猜小了) elif guess target: print(猜大了) else: print(f恭喜你用了{attempts}次猜对了) break通过这些练习和扩展实例相信你对Python循环的理解会更加深入。记住编程能力的提升关键在于不断练习和实践。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询