Python基础编程挑战:从循环到算法,一文通关15道经典题

发布时间:2026/9/15 16:23:27

Python基础编程挑战:从循环到算法,一文通关15道经典题 为什么别人写的代码简洁又高效为什么面试总考这些看似简单的题—— 因为它们是编程思维的基石。今天我们用15道经典题目彻底吃透 Python 中的循环、条件、数论、斐波那契等核心知识让你的基础变得坚不可摧 写在前面如果你正在学习 Python你一定遇到过这些题目九九乘法表、质数判断、斐波那契数列、最大公约数……它们看似“老生常谈”却是编程思维和算法能力的最佳试金石。能否熟练运用while和for灵活解题直接体现了你对控制流的掌握程度。本文精选了 13 道必会题 2 道综合题每道题都给出for和while两种实现思路并附关键代码和易错提醒。读完这篇你将收获✅ 循环结构for / while的灵活切换✅ 条件判断、标志位的正确使用✅ 数论基础质数、公约数、公倍数✅ 斐波那契数列、阶乘等经典算法✅ 图形打印的循环技巧准备好开启这次硬核闯关了吗Lets go1️⃣ 打印 9×9 乘法表要求输出上三角或下三角形式的九九乘法表。思路外层循环控制行1~9内层循环控制列1~行数。利用print的end参数不换行行末再换行。for 实现下三角pythonfor i in range(1, 10): for j in range(1, i 1): print(f{j}×{i}{i*j}, end\t) print()while 实现下三角pythoni 1 while i 9: j 1 while j i: print(f{j}×{i}{i*j}, end\t) j 1 print() i 1 上三角只需改内循环为range(i, 10)即可。2️⃣ 使用循环嵌套打印各种三角图形上下漏斗左右漏斗要求在 9×9 网格中打印星号构成的上/下漏斗、左/右漏斗图案。核心根据行索引i和列索引j的关系决定输出*还是空格。四种漏斗的条件分别如下漏斗类型打印*的条件上下漏斗(i j and ij 10) or (i j and ij 10)左右漏斗(i j and ij 10) or (i j and ij 10)for 实现上下漏斗pythonfor i in range(1, 10): for j in range(1, 10): if (i j and i j 10) or (i j and i j 10): print(*, end ) else: print( , end ) print()while 实现左右漏斗pythoni 1 while i 9: j 1 while j 9: if (i j and i j 10) or (i j and i j 10): print(*, end ) else: print( , end ) j 1 print() i 13️⃣ 输入一个数计算该数的阶乘如 5! 5×4×3×2×1思路累乘从 1 到 n 的所有整数。forpythonn int(input(请输入一个数)) fact 1 for i in range(1, n 1): fact * i print(f{n}! {fact})whilepythoni 1 fact 1 while i n: fact * i i 1 print(f{n}! {fact})4️⃣ 输入一个数计算该数的阶乘和如 5 5! 4! 3! 2! 1!思路在外层循环中累加每个数的阶乘可复用阶乘计算。优化利用前一个阶乘值fact_i fact_{i-1} * i。forpythonn int(input(请输入一个数)) total 0 fact 1 for i in range(1, n 1): fact * i # 当前 i 的阶乘 total fact print(f阶乘和为{total})whilepythoni 1 fact 1 total 0 while i n: fact * i total fact i 1 print(f阶乘和为{total})5️⃣ 输出 100~200 之间不能被 3 整除的最大的 20 个数与最小的 20 个数的差值思路分别收集符合条件的数排序后取前 20 和后 20计算差值最大20个的和/均值减去最小20个的和/均值题目未明确常见理解为“和差”或“最大最小之差”但更合理是分别求和相减。这里采用“最大20个数的和 - 最小20个数的和”。forpythonnums [i for i in range(100, 201) if i % 3 ! 0] min_20 nums[:20] max_20 nums[-20:] # 因列表已升序 diff sum(max_20) - sum(min_20) print(f差值为{diff})while无需全部存储分别收集pythonnums [] i 100 while i 200: if i % 3 ! 0: nums.append(i) i 1 min_20 nums[:20] max_20 nums[-20:] print(sum(max_20) - sum(min_20))6️⃣ 输入两个数求最大公约数和最小公倍数思路最大公约数可用辗转相除法欧几里得算法最小公倍数 两数乘积 / 最大公约数。for / while 均可这里用 whilepythona int(input(第一个数)) b int(input(第二个数)) m, n a, b while n ! 0: m, n n, m % n gcd m lcm a * b // gcd print(f最大公约数{gcd}最小公倍数{lcm})⚠️ 也可用枚举法从较小的数递减但辗转相除效率更高。7️⃣ 输入一个数字如果是质数则打印该数否则打印该数最大的因数思路从 2 开始试除找到第一个因子则不是质数最大因数为num // i否则为质数。whilepythonnum int(input(请输入一个数)) i 2 while i num: if num % i 0: print(f{num} 不是质数最大因数为 {num // i}) break i 1 else: print(f{num} 是质数)forpythonfor i in range(2, num): if num % i 0: print(f{num} 不是质数最大因数为 {num // i}) break else: print(f{num} 是质数)8️⃣ 编程求出满足以下条件的三位数它除以 11 所得的商等于它各位数字之和思路遍历 100~999设三位数为abc则(a*100b*10c) // 11 abc且必须整除即商为整数其实//已取整需检查余数为0。forpythonfor n in range(100, 1000): a n // 100 b (n // 10) % 10 c n % 10 if n % 11 0 and n // 11 a b c: print(n)9️⃣ 斐波那契数列求第 n 项1,1,2,3,5,8,...思路迭代更新前两项。forpythonn int(input(求第几项)) a, b 1, 1 if n 2: print(1) else: for _ in range(3, n1): a, b b, ab print(b)whilepythoni 3 while i n: a, b b, ab i 1 print(b) 求 1000 以内有几个质数思路遍历 2~1000判断每个数是否为质数。优化只需检查到平方根。for 实现含计数pythoncount 0 for num in range(2, 1001): for i in range(2, int(num**0.5) 1): if num % i 0: break else: count 1 print(f1000以内有 {count} 个质数)while版本类似只需把外层和内层改为while。1️⃣1️⃣ 求 1000 以内最大的 10 个质数的平均数思路从 1000 向下遍历找到质数就累加直到凑够 10 个。forpythontotal 0 count 0 for num in range(1000, 1, -1): for i in range(2, int(num**0.5) 1): if num % i 0: break else: total num count 1 if count 10: break print(f平均数为{total / count})1️⃣2️⃣ 求 1000 以内相差为 6 的最大的 10 个质数对即 (p, p6) 均为质数思路先收集所有质数然后从大到小检查相邻差为 6 的配对但注意不一定是相邻的质数只要二者差6即可。最简单从1000向下找满足is_prime(p) and is_prime(p-6)的 p直到找到10对。示例代码pythondef is_prime(n): if n 2: return False for i in range(2, int(n**0.5)1): if n % i 0: return False return True pairs [] p 1000 while len(pairs) 10 and p 6: if is_prime(p) and is_prime(p-6): pairs.append((p-6, p)) p - 1 print(相差6的质数对从大到小, pairs)这里我们求的是“最大的10个质数对”即两个数本身都尽可能大。1️⃣3️⃣ 综合模块方法汇总keyword, random, time题目第一项要求汇总三个模块的所有方法并附注释与案例。由于篇幅这里只展示核心方法和常用案例完整列表可使用dir(module)查看。keyword 模块查看 Python 关键字列表。pythonimport keyword print(keyword.kwlist) # 所有关键字 print(keyword.iskeyword(if)) # Truerandom 模块生成随机数。pythonimport random print(random.randint(1, 10)) # 随机整数 print(random.choice([a,b,c])) # 随机选取 print(random.sample(range(100), 5)) # 不重复采样time 模块时间处理。pythonimport time print(time.time()) # 当前时间戳 print(time.localtime()) # 结构化时间 time.sleep(1) # 暂停1秒 结语编程能力的跃升这 13 道题涵盖了 Python 基础编程的绝大部分核心知识点。多写、多调试、多对比你会在不知不觉中建立起强大的逻辑思维。记住while和for只是工具真正重要的是你如何用它们表达算法。如果你对某道题还有更好的解法欢迎留言讨论。也别忘了收藏本文方便日后复习。 最后一个小彩蛋几乎所有题目都可以用一行列表推导式或递归实现但这要求扎实的基础。先把基础练好再去追求“炫技”吧原创文章未经授权禁止转载。如果觉得有帮助点个赞再走吧
延伸阅读

更多相关文章

2026/9/14 4:53:52

TensorRT加速YOLOv11:从PT到TRT再到5倍GPU加速的全链路实战

前言:为什么你的YOLO模型还在“龟速”运行? 在计算机视觉的工程化落地中,推理速度就是生产力。无论是智慧园区的200路摄像头实时分析,还是自动驾驶车辆的行人检测,亦或是工业质检产线上的缺陷识别,帧率不足就意味着项目失败。 笔者在过去几个月的工业项目中,亲眼见证了…

2026/9/15 14:24:18

YOLOv11导出ONNX的完整指南:动态轴、Opset版本与推理精度校验

训练时mAP高达98%,导出ONNX后部署到TensorRT上输出全是乱码——这个问题我在客户现场调试了整整两天。本文基于Ultralytics官方文档(2026年4月更新)和社区最新实践,系统拆解YOLOv11 ONNX导出的全部技术细节。 一、引言:为什么你的YOLOv11导出ONNX总是出问题? 上周在客户…

2026/9/15 2:25:05

深入解析DSP HPI接口:地址寄存器双模式与FIFO突发传输机制

1. HPI接口:主机与DSP通信的高速通道 在嵌入式系统,尤其是数字信号处理(DSP)应用中,主机处理器(比如ARM、x86)与DSP之间的数据交换是一个核心需求。你可能会遇到这样的场景:主机需要…

2026/9/15 16:22:54

工业级火焰语义分割数据集:256×256二值mask与PyTorch加载实践

简介:本资源是一套专为计算机视觉初学者与算法工程师设计的火焰图像语义分割数据集,聚焦于工业安全、火灾监测等实际场景中的二分类分割任务。数据集包含训练集(19222对jpg原图png掩膜)与测试集(8238对)&am…

2026/9/15 16:22:54

BG/NBD模型实战:Python模拟验证客户生命周期价值预测

做CLV分析,很多时候大家一上来就套模型,结果算出来的数字自己都不敢信。上一期我聊过CLV的基础框架,这一期专门拆一个在非契约型业务里最能打的模型——BG/NBD,并且用Python完整跑一遍模拟:从自己生成客户购买历史&…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码