发布时间:2026/7/22 9:27:16
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/7/21 6:29:42

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

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

2026/7/21 6:29:42

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

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

2026/7/21 6:29:42

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

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

2026/7/22 9:23:57

Java逃逸与逃逸分析总结

Java逃逸与逃逸分析1. 什么是“逃逸”? 1.1 概念 “逃逸”是指一个对象被分配后,其引用被传递到了创建它的方法或线程之外,导致外部可以访问到它。 根据逃逸的范围,主要分为三种情况:不逃逸 (NoEscape):对象…

2026/7/22 9:23:57

信息技术设备CCC认证详解:产品范围界定与技术标准解读

一、CCC认证制度概述 CCC认证(China Compulsory Certification,中国强制性产品认证)是中国政府为保护国家安全、人身健康和安全、环境保护等目的而实施的强制性产品合格评定制度。信息技术设备(ITE,Information Techn…

2026/7/22 9:23:57

【信息科学与工程学】信息科学领域——第一百三十五篇 射频/天线16 射频计算(WiFi CSI + 5G-A/6G空间感知)​ 与向量数据库、规则引擎(含法律规则库+招投标围标串标+利益输送

射频计算(WiFi CSI + 5G-A/6G空间感知)​ 与向量数据库、规则引擎(含法律规则库+招投标围标串标+利益输送/利益交换/利益勾结库)、图神经网络、知识图谱、NLP大语言模型、图论/集合论/离散数学/组合数学等多领域算法的深度融合,用于招投标围标串标、利益输送、利益交换、利…

2026/7/22 9:23:57

【法律领域】【信息科学与工程学】计算机科学与自动化——第二百二十四篇 规则引擎 系列一 招投标围标串标和利益链识别02

招投标围标串标分层利益链识别规则引擎(续:A-61 起 强化学习、联邦学习与国际规则) 聚焦 强化学习自适应阈值、跨区域联邦学习协同、国际招投标与GPA规则、区块链智能合约自动执行​ 四个前沿方向。本轮规则旨在提升规则引擎的自适应能力、跨区域协作效率、国际化合规水平以…

2026/7/22 9:23:57

Cesium影像图层加载原理与实战优化指南

1. Cesium影像图层加载基础解析 在三维地理信息可视化领域,Cesium作为WebGL地球引擎的标杆,其影像图层加载能力直接影响场景构建的质量与效率。影像图层不同于普通贴图,它需要处理瓦片金字塔、坐标投影、动态加载等专业问题。我们先从底层原理…

2026/7/20 6:33:00

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/22 0:02:17

抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具

抓包代理链路下的 TLS 指纹变化分析:为什么调试环境会影响访问结果 摘要 在网页调试、接口联调、自动化巡检和授权采集排查中,抓包是常见手段。但很多开发者会遇到一个现象:正常访问页面时没有问题,一进入抓包或代理调试环境&…

2026/7/22 0:02:17

微信QQ聊天记录误删恢复与备份方案全指南

1. 聊天记录误删的常见场景与恢复思路作为一名长期关注数据安全的技术博主,我处理过上百起聊天记录误删的求助案例。手机误操作、系统升级失败、设备损坏是三大常见诱因。上周就遇到用户更新微信时断电,导致近两年的工作群聊记录全部消失的极端案例。不同…

2026/7/22 0:02:17

2026最新8款个人AI编程免费工具深度实测

作为一名全栈独立开发者,我最近半年一直在折腾副业项目,每个月在AI编程工具上的订阅费算下来其实也不算便宜。作为个人开发者,我们追求的就是用最少的成本获得最高效的开发体验。TRAE 基础版免费,字节跳动出品的国内首款 AI 原生 …

2026/7/21 20:02:44

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…