新闻详情

新闻详情

首页 / 资讯中心 / 详情

Python循环结构实战:数字金字塔、质数判断与乘法表

发布时间:2026/10/31 20:46:28来源:尧图网络
Python循环结构实战:数字金字塔、质数判断与乘法表
1. 循环基础与练习题价值刚接触Python编程时循环结构就像是一道难以跨越的门槛。记得我最初学习for循环时盯着那个简单的for i in range(5)看了足足十分钟完全不明白这个i到底从哪来、到哪去。直到后来通过实际练习题才真正理解了循环的精髓。这三个经典练习题之所以经典是因为它们覆盖了循环最核心的三种应用场景遍历序列、条件控制和嵌套逻辑。通过它们你能掌握如何用循环处理有规律的数字序列如何结合条件判断实现复杂逻辑如何处理多层循环的配合关系更重要的是这些练习能培养你的循环思维——看到重复性任务时能立刻想到用循环结构来简化代码。这种思维对后续学习函数、类等高级概念都至关重要。2. 练习题一数字金字塔2.1 问题描述打印如下数字金字塔1 121 12321 1234321 1234543212.2 解题思路拆解这个金字塔有以下几个特征每行数字呈回文对称结构数字从1递增到行号再递减回1每行前面有数量不等的空格用于居中我的实现方案是外层循环控制行数1到5内层两个循环分别处理空格和数字数字部分拆分为递增和递减两段2.3 完整实现代码n 5 for i in range(1, n1): # 打印前导空格 print( *(n-i), end) # 打印左半边数字(1到i) for j in range(1, i1): print(j, end) # 打印右半边数字(i-1到1) for k in range(i-1, 0, -1): print(k, end) # 换行 print()2.4 关键技巧说明end参数阻止print自动换行让数字能连续输出空格计算每行空格数为n-i实现金字塔的居中效果递减循环range(i-1, 0, -1)中的-1表示步长为负注意初学者常犯的错误是忘记处理数字的对称性只打印递增部分。观察输出模式是解题关键。3. 练习题二寻找质数3.1 问题描述找出100以内的所有质数并打印输出。3.2 质数判断算法质数判断有多种方法这里采用最直观的试除法质数定义只能被1和自身整除的自然数优化点1只需检查到√n即可优化点2跳过偶数判断除2外3.3 代码实现与优化基础版本for num in range(2, 100): is_prime True for i in range(2, num): if num % i 0: is_prime False break if is_prime: print(num)优化版本print(2) # 唯一的偶质数 for num in range(3, 100, 2): # 只检查奇数 is_prime True for i in range(2, int(num**0.5)1): if num % i 0: is_prime False break if is_prime: print(num)3.4 性能对比通过timeit模块测试基础版约1.2ms优化版约0.4ms实测心得在数据量较大时算法优化带来的性能提升会非常显著。质数计算是个很好的算法复杂度教学案例。4. 练习题三乘法表打印4.1 问题描述打印9×9乘法表格式如下1*11 1*22 2*24 1*33 2*36 3*39 ...4.2 嵌套循环设计分析乘法表的结构特点共9行行号i从1到9每行有i个等式每个等式形式为j*i结果其中j从1到i4.3 完整代码实现for i in range(1, 10): for j in range(1, i1): print(f{j}*{i}{i*j}, end\t) # 使用制表符对齐 print() # 每行结束换行4.4 格式化输出技巧f-string用法f{变量}是Python 3.6的推荐格式化方式制表符\t比空格更能保证对齐效果避免使用print(x, end )因为不同数字位数会导致错位常见错误修正循环范围错误内层应该是range(1, i1)而非range(1, 10)换行位置外层循环每次迭代后需要换行5. 循环编程的进阶技巧5.1 循环控制语句实战break完全终止循环continue跳过当前迭代else循环正常结束时执行非break退出时示例寻找第一个非质数for num in range(2, 100): for i in range(2, int(num**0.5)1): if num % i 0: print(f{num}不是质数) break else: continue break5.2 列表推导式替代循环许多循环可以用更简洁的列表推导式实现# 传统方式 squares [] for x in range(10): squares.append(x**2) # 列表推导式 squares [x**2 for x in range(10)]5.3 性能优化建议尽量减少循环内的计算将不变的计算提到循环外使用内置函数如map()、filter()通常比显式循环快避免不必要的循环考虑是否真的需要循环结构6. 常见问题与调试技巧6.1 无限循环问题症状程序卡死CPU占用高 解决方法检查循环条件是否可能永远为真添加临时打印语句观察变量变化使用调试器设置断点6.2 边界条件错误典型表现少处理第一个/最后一个元素范围设置错误如range(1, n)实际需要range(n)调试方法打印循环变量的起始和结束值手动计算预期的循环次数6.3 循环效率低下优化策略减少嵌套层级使用更高效的数据结构如集合用于成员检查应用数学公式替代暴力计算7. 实际工程中的应用案例7.1 文件批量处理import os for filename in os.listdir(.): if filename.endswith(.txt): with open(filename) as f: content f.read() # 处理文件内容...7.2 数据清洗cleaned_data [] for record in raw_data: if is_valid(record): # 自定义验证函数 processed process_record(record) cleaned_data.append(processed)7.3 游戏开发中的主循环while True: handle_input() update_game_state() render_graphics() if game_over: break8. 学习资源与进阶路径8.1 推荐练习平台LeetCode简单题巩固基础循环技巧Project Euler数学相关的编程挑战Codewars社区提供的各种难度练习题8.2 进阶学习方向生成器与yield更高效的循环方式递归算法另一种重复执行的方式并行计算多线程/多进程处理循环任务8.3 调试工具推荐Python自带的pdb调试器VS Code的调试功能PyCharm的专业调试工具我个人的经验是掌握循环的关键不在于死记硬背语法而是培养识别重复模式的能力。当你看到一个问题时能自然想到这里可以用循环简化那才是真正掌握了循环的精髓。建议从修改这些练习题开始比如尝试打印不同大小的金字塔或者找出1000以内的质数在实践中深化理解。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/10/30 4:02:09

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/10/29 23:30:48

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/10/30 14:30:55

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/10/31 1:29:13

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/10/29 13:36:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/10/30 5:26:05

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉