Python while循环详解:从基础语法到列表操作实战

周予安
周予安
发布时间:2026-10-13| 4人浏览过
原创

本文深入解析Python中while循环的核心机制,对比其与for循环的差异。详细讲解如何利用活动状态标识管理复杂程序流程,并通过break和continue关键字实现精确的流程控制。此外,文章演示了如何在遍历列表的同时安全地进行元素迁移与删除操作,提供完整代码示例与运行结果分析。

Python while循环基础与对比

前言

Python提供了两种主要的循环结构:while和for。它们的核心区别在于触发机制:while循环在执行前会先进行一次条件判断,仅当条件满足时才进入循环体;而for循环则依赖于一个可迭代的对象(如列表或数组)来驱动迭代过程。

在循环结构中,continue和break是两个关键的控制关键字。continue用于跳过当前迭代剩余的代码,直接开始下一次循环;break则用于立即终止整个循环结构。需要注意的是,位于这两个关键字之后的代码块在当前迭代或整个循环中均不会被执行。

for循环适用于对集合中的每个元素执行相同的代码块;而while循环则持续执行同一段代码,直到指定的条件不再成立为止。

while循环基础示例

1 示例

我们通过一个while循环实例来设计一个简单的数字判断小游戏。程序要求玩家输入一个数字,并反馈该数字是奇数还是偶数:


# 输入提示
prompt = '输入一个数字,我将告诉你,它是奇数,还是偶数哦O(∩_∩)O~'
prompt += '\n输入“不玩了”,将退出本程序: '

exit = '不玩了' # 退出指令
content = '' #输入内容
while content != exit:
 content = input(prompt)
 if content.isdigit():
  number = int(content)
  if (number % 2 == 0):
   print('该数是偶数')
  else:
   print('该数是奇数')
 elif content != exit:
  print('输入的必须是数字哦')

运行结果:

在这段代码中,我们定义了一个退出指令。只要用户输入的内容与该指令不匹配,程序就会持续运行。

活动状态标识的应用

2 活动状态标识

在真实的游戏场景中,游戏结束可能由多种不同的事件触发。此时,我们可以引入一个活动状态标识(active flag),用于统一判断整个程序是否仍处于活跃运行状态。

我们对之前的示例代码进行重构:


prompt = '输入一个数字,我将告诉你,它是奇数,还是偶数哦O(∩_∩)O~'
prompt += '\n输入“不玩了”,将退出本程序: '

exit = '不玩了' # 退出指令
content = '' # 输入内容
active = True # 活动状态标识
while active:
 content = input(prompt)
 if content.isdigit():
  number = int(content)
  if (number % 2 == 0):
   print('该数是偶数')
  else:
   print('该数是奇数')
 elif content == exit:
  active = False
 else:
  print('输入的必须是数字哦')

经过改写后,程序的逻辑结构变得更加清晰直观。

在复杂的程序设计中,可能存在多个事件导致程序停止。此时,设计一个活动状态标识非常有用:当任何一个触发事件发生时,将该标识设置为False,主程序的while循环即可自然结束。

break与continue关键字详解

3 break 关键字

使用break关键字,可以立即退出当前的while循环,不再执行后续代码。


...
while active:
 content = input(prompt)
 if content.isdigit():
  ...
 elif content == exit:
  break
 else:
  ...

4 continue 关键字

使用continue关键字,可以直接跳回循环开头,并根据while条件的测试结果决定是继续执行下一次循环还是退出。


while active:
 content = input(prompt)
 if content.isdigit():
  number = int(content)
  if (number % 2 == 0):
   print('该数是偶数')
  else:
   continue
 elif content == exit:
  break
 else:
  print('输入的必须是数字哦')

经过改写的示例代码将仅打印偶数;如果遇到奇数,则直接跳过后续逻辑进入下一次循环。

无限循环的风险与控制

5 无限循环

每个while循环都必须包含一个使循环停止的条件,否则程序将陷入无限循环。如果程序意外进入无限循环,必须通过按下Ctrl+C组合键或关闭显示程序输出的终端窗口来强制终止程序。

while循环处理列表实战

6 处理列表

可以使用while循环在遍历列表的同时对其进行修改。这种操作在for循环中是不被允许的,因为遍历过程中修改列表可能导致迭代器异常。

6.1 迁移列表元素


to_go_countries = ['英国', '法国', '美国'] # 想去的国家
visited_countries = [] # 已去的国家
while to_go_countries:
 country = to_go_countries.pop()
 print('准备去【' + country+'】')
 print('【1】做攻略')
 print('【2】出发')
 print('【3】回来咯')
 visited_countries.append(country)

print('to_go_countries:'+str(to_go_countries))
print('这些国家去过啦:' + str(visited_countries))

运行结果:


代码中使用了pop()方法弹出栈顶元素(即列表末尾的最后一个元素),并返回该元素供后续处理。

可以看到,在退出while循环后,【想去的国家列表】已被完全清空。

6.2 删除列表元素

假设当前有以下菜品可选,但今天突然不想吃“炸豆腐”,我们可以采用以下方式处理:


foods = ['拌海蜇', '炝冬笋', '炸豆腐', '炸面筋', '麻辣野鸡', '炒肉片']
while '炸豆腐' in foods:
 foods.remove('炸豆腐')
print('foods=' + str(foods))

运行结果:

foods=['拌海蜇', '炝冬笋', '炸面筋', '麻辣野鸡', '炒肉片']

总结

以上就是本文的全部内容,希望这些内容能为大家的学习或工作提供参考价值。感谢大家对本站的支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。