理解 :for,while与do while

【Creo】关于Creo一换网络就报错许可证丢失问题解决方案 依照我的个人理解,Creo只要一更换网络,则其许可证里面的网卡参数和现在的网络就对不上了,所以就会出现报错,并且有可能是报错代码(-9),提示许可证激活有问题。 阅读详情

摘要:

for:遍历完前,都do一下

while:条件满足,do一下;否则退出   

do-while:先do一下,再判断是否退出

可迭代对象用for;动态条件用while;do需要在判断前作的,用do while。

多用for,少用while。

理解 python中for 与while 循环的区别

Qwen3-Max

在 Python 中,for 和 while 都是循环控制结构,用于重复执行一段代码,但它们的设计哲学、适用场景和底层机制有本质区别。理解这些差异,能帮助你写出更清晰、高效、Pythonic 的代码。


一、核心区别一句话概括:

for 循环用于“遍历已知序列”(迭代),
while 循环用于“满足条件就继续”(条件驱动)。


二、详细对比

维度

for 循环

while 循环

本质

迭代器协议驱动(Iterator Protocol)

布尔条件判断驱动

典型场景

遍历列表、字符串、字典、文件行、range 等 可迭代对象

循环次数未知,依赖动态条件(如用户输入、状态变化)

终止方式

自动耗尽迭代器(无需手动管理计数)

依赖条件变为 False(需确保条件最终会变)

易错点

几乎不会无限循环(除非自定义迭代器出错)

极易写出无限循环(忘记更新条件变量)

Pythonic 程度

✅ 首选(符合“显式优于隐式”)

⚠️ 仅在必要时使用


三、代码示例对比

✅ 场景1:打印 0 到 4

python

编辑

# for(推荐)

for i in range(5):

    print(i)

# while(不推荐,冗余)

i = 0

while i < 5:

    print(i)

    i += 1  # 忘记这行 → 无限循环!

✅ 场景2:遍历列表

python

编辑

fruits = ['apple', 'banana', 'cherry']

# for(自然、安全)

for fruit in fruits:

    print(fruit)

# while(繁琐且易错)

i = 0

while i < len(fruits):

    print(fruits[i])

    i += 1

✅ 场景3:读取文件直到结束

python

编辑

# for(简洁高效,自动处理EOF)

with open('file.txt') as f:

    for line in f:      # 文件对象是可迭代的

        print(line.strip())

# while(需手动检查)

with open('file.txt') as f:

    line = f.readline()

    while line:

        print(line.strip())

        line = f.readline()  # 易漏写

✅ 场景4:必须用 while 的情况(条件不确定)

python

编辑

# 用户输入直到有效

user_input = ""

while user_input not in ["yes", "no"]:

    user_input = input("Continue? (yes/no): ")

# 游戏主循环

running = True

while running:

    handle_events()

    if quit_condition:

        running = False


四、底层机制差异(进阶理解)

  • for 循环 实际调用对象的 __iter__() 方法获取迭代器,再反复调用 __next__() 直到抛出 StopIteration 异常(被 for 自动捕获)。

python

编辑

# 等价于 for x in iterable:

it = iter(iterable)

while True:

    try:

        x = next(it)

        # 执行循环体

    except StopIteration:

        break

  • while 循环 每次只做一次布尔判断,无自动状态管理。

💡 这就是为什么 for 更安全、更高效——它把“如何遍历”的逻辑封装在了对象内部。


五、何时该用哪个?

用 for

用 while

✅ 已知要遍历一个序列/容器/生成器

✅ 循环次数未知

✅ 处理文件、数据库结果集

✅ 等待某个事件发生(如传感器信号)

✅ 实现计数循环(用 range)

✅ 实现状态机、游戏主循环

✅ 任何能用“对每个元素做某事”描述的场景

✅ 条件依赖多个变量动态变化


六、常见误区

  • ❌ “for 只能用于列表” → 错!所有可迭代对象都行(dict, set, str, generator, pandas DataFrame...);
  • ❌ “while 更灵活所以更好” → 错!过度使用 while 会导致代码冗长、易错、难维护;
  • ✅ Python 哲学:

“Simple is better than complex.”
能用 for,就别用 while。


总结

for

while

灵魂

“遍历”

“等待”

心智负担

低(自动管理状态)

高(需手动控制条件)

Python 推荐度

⭐⭐⭐⭐⭐

⭐⭐(仅限必要场景)

🐍 记住:
在 Python 中,90% 的循环场景都应该用 for。
当你发现自己在写 while i < len(list),请立刻停下来——你很可能该用 for。

附:

常见可迭代对象示例:

类型

是否可迭代

说明

list, tuple, set

✅

最常见的容器

str

✅

字符串可遍历每个字符

dict

✅

默认遍历 键(keys)

range(5)

✅

返回 range 对象,惰性生成数字

文件对象 open('file.txt')

✅

每次迭代读取一行

enumerate(), zip()

✅

返回迭代器(也是可迭代对象)

生成器(generator)

✅

如 (x**2 for x in range(3))

自定义类(实现 __iter__)

✅

见下文

❌ 不可迭代的对象:int, float, bool 等原子类型。

用Python模拟do while循环

在 Python 中,虽然没有内置的 do while 循环结构,但我们可以通过 while 循环和 break 语句来模拟 do while 循环的行为。这种循环至少会执行一次代码块,然后在每次迭代结束时检查条件。

示例:

condition = True

while True:

# 执行代码块

if not condition:

break

在这个例子中,无论 condition 的初始值如何,循环体中的代码至少会执行一次。如果 condition 为 False,则使用 break 语句退出循环。

模拟 Do While 循环

要在 Python 中模拟 do while 循环,你可以设置一个始终为真的条件来启动 while 循环,并在循环体内部添加逻辑来决定何时退出循环。

示例:

number = 0

while True:

print(f"Number is {number}!")

number += 1

if number >= 10:

break

open-web UI 实用指南 open-web UI 类似于chatgpt的界面,可以私有化模型本地部署,也可以用商业模型.本文只是用开源模型. 它以实现多模态AI聊天 , AI 翻译 , 语音转文本, 文本转语音, 文生图,代码助手,可谓利器。 阅读详情

相关推荐

深度学习之常用算子介绍

打开 onnx 模型图,可以看到它是一个有向无环图。除了 Input、Output ,其他都是算子(是操作,而不是节点)在ONNX(Open Neural Network Exchange)模型中,除了输入和输出,其他都是算子(Operations)。算子是表示神经网络模型中的不同操作或层的元素。一个ONNX模型由一系列算子组成,通过连接这些算子来定义模型的计算流程。

ueke1的博客 8460

【Python入门教程】第57篇 循环进阶之模拟do…while语句

Python 不支持 do…while 循环语句,可以使用 while 循环加上 break 语句模拟 do…while 循环。

Tony.Dong的专栏 2万+

图像去雾新思路:手把手教你复现DEA-Net中的“细节增强卷积”与PyTorch实现

本文详细解析了DEA-Net中的'细节增强卷积'(DEConv)与PyTorch实现,通过多分支差分卷积和重参数化技术,显著提升单图像去雾效果。文章从数学原理到代码实现,手把手指导复现这一创新架构,帮助开发者在保持轻量化的同时实现41dB以上的PSNR指标,适用于自动驾驶、遥感监测等关键领域。

weixin_30323631的博客 506

在Python中模拟do-while循环

Python as a language doesn't support the do-while loop. However, we can have a workaround to emulate the do-while loop. Python作为一种语言不支持do-while循环。 但是,我们可以采用一种变通方法来模拟do-while循环 。 The syntax for do-wh...

cumt951045的博客 9948

matlab 计算InSAR干涉相位图的残差点

在理想的情况下,相位场是连续的,图像内沿着任何一条封闭曲线的积分应该为零。这样的连续场称为无旋场,反之为有旋场。但在实际测量过程中,由于噪声、欠采样和系统误差等因素的影响,得到的 InSAR 干涉相位条纹图中往往会出现不连续的相位点,即残差点

点云侠的博客 268

【目标检测-YOLO】YOLOv5-v5.0-yolov5s网络架构详解(第一篇)

源码:GitHub - ultralytics/yolov5 at v5.0 由于YOLO v5 代码库在持续更新,如上图,有多个版本,每个版本的网络结构不尽相同。以下内容以 v5.0 为准,网络结构选用 yolov5s。 为了方便画图和理解网络结构,选用可视化工具:Netron 网页版进行可视化, 然后使用PPT作图。 在Releases · ultralytics/yolov5 · GitHub找到 v5.0中的Assets 中的yolov5s.pt并下载该权重。 下图为直接......

博观约取,厚积薄发 2万+

Python 循环语句

循环语句允许我们执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式: While 循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为: while 判断条件(condition): 执行语句(statements)…… 执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。 当判断条件假 false 时,循环结束。 Gif 演示 Python wh

qq_47425627的博客 462

系规备考论文:论IT服务规划设计

系规备考论文:论IT服务规划设计

liuxu324的博客 1145

do while循环语句PYTHON

Python中的do while循环语句 在Python中,没有内置的do while循环语句,但是我们可以使用while循环来实现类似的功能。do while循环语句是一种先执行循环体,然后再判断条件的循环结构。 在Python中,while循环先判断条件是否成立,如果成立就执行循环体,然后再次判断条件,如果条件不成立则...

weixin_40653415的博客 2525

SAP 标准 CDS View 到底能不能用 CDS Extension View 扩展,我们在项目里应该这样判断

文章摘要:判断SAP标准CDS视图(如A_PRODUCT)能否扩展字段,不能仅凭命名或@Metadata.allowExtensions判断,需检查DDL源码中的@AbapCatalog.viewEnhancementCategory值。#PROJECTION_LIST允许扩展字段,#NONE则禁止。聚合视图需额外包含#GROUP_BY,UNION视图需#UNION。CDS View Extension用于新增字段,Metadata Extension仅用于添加注解。在ABAP Cloud环境中还需检查AP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 101

【Proteus仿真】点亮小灯系列仿真——小灯闪烁/流水灯/交通灯

本文介绍了基于AT89C51单片机的LED控制案例,共包含5个实例:1)单个LED闪烁;2)共阳极流水灯;3)共阴极流水灯;4)花样流水灯;5)交通灯模拟。每个案例详细说明了电路原理图、接线方式和控制程序实现,其中重点讲解了PWM调光原理及其在LED控制中的应用。案例由简至繁,从基础I/O控制到复杂花样显示,最后实现交通灯逻辑控制,展示了单片机在LED控制中的典型应用方法。文中提供了完整的源代码,便于读者理解和实践。

XU157303764的博客 1884

Python 为什么不设计 do-while 循环结构?

在某些编程语言中,例如 C/C++、C#、PHP、Java、JavaScript 等等,do-while 是一种基本的循环结构。它的核心语义是:先执行一遍循环体代码,然后执行一遍条件语句,若条件语句判断为真,则继续执行循环体代码,并再次执行条件语句;直到条件语句判断为假,则跳出循环结构。流程图如下(Java 示例)://打印小于20的数字 publicclass...

cainiao_python的博客 2285

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环是一种方便的语法,用于遍历数组和集合中的元素。如果您只需要遍历数组中的元素,而不需要修改它们的值,那么。循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!您还可以将一个循环嵌套在另一个循环内。不要忘记增加条件中使用的变量,否则循环永远不会结束!,专门用于遍历数组和集合中的元素。及更高版本中,还可以。

lianghl_wb的博客 1177

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

七、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 846

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

四、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 1219

六、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 854

十四、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 926

十一、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 826

五、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 915

一、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 830

十三、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 779

三、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 839

十五、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 908

十、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 818

九、深入理解 Java 循环结构:while、do while、for 和 for-each 循环

循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。while 循环会循环执行一个代码块,只要指定的条件为真: 在下面的示例中,只要变量(i)小于 5,循环中的代码将一遍又一遍地运行: 注意:不要忘记增加条件中使用的变量,否则循环永远不会结束!do/while 循环是 while 循环的变体。此循环将在检查条件是否为真之前执行一次代码块,然后只要条件为真,它就会重复执行循环。 下面的示例使用 do/while 循环。即使条件为 false,循环至少也会执行一次

系统看你学习很认真,随机送了一个月会员! 871
上一篇: 理解:交叉熵,KL散度,JS散度,散度
下一篇: 理解:信息量,熵,微分熵
jei_algorithm
博客等级 码龄5年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值