while语句

while 是编程语言中最基础的循环结构 之一,核心逻辑是:先判断条件,再执行循环体,只要条件为真,就重复执行循环体代码,直到条件为假时退出循环。

一、基本语法(以 Python 为例)

python

运行

bash 复制代码
while 条件表达式:
    循环体代码(缩进)
    # 可选:更新条件相关的变量(避免死循环)
  • 条件表达式 :返回布尔值(True/False),可以是比较运算、逻辑运算等;
  • 循环体 :条件为 True 时执行的代码块,必须缩进(Python 中通常 4 个空格);
  • 关键 :循环体内必须有能让条件最终变为 False 的逻辑,否则会陷入死循环

二、核心特点

  1. 先判断,后执行 :如果初始条件就为 False,循环体一次都不会执行;
  2. 灵活控制:适合循环次数不确定的场景(比如 "直到用户输入正确为止")。

三、基础示例

示例 1:简单计数(1 到 5)

python

运行

bash 复制代码
# 初始化计数器
count = 1
# 条件:count <= 5 时执行循环
while count <= 5:
    print(count)
    # 必须更新计数器,否则死循环
    count += 1  # 等价于 count = count + 1

输出

plaintext

复制代码
1
2
3
4
5
示例 2:死循环与退出(break)

如果循环条件永远为 True,就是死循环,需用 break 主动退出:

python

运行

python 复制代码
while True:
    user_input = input("请输入'退出'结束程序:")
    if user_input == "退出":
        print("程序结束")
        break  # 跳出循环
    print(f"你输入的是:{user_input}")

运行效果

plaintext

arduino 复制代码
请输入'退出'结束程序:hello
你输入的是:hello
请输入'退出'结束程序:退出
程序结束

四、进阶用法

1. while + continue(跳过本次循环)

continue 会跳过当前循环体剩余代码,直接回到条件判断:

python

运行

dart 复制代码
# 打印1-10中的奇数
num = 0
while num < 10:
    num += 1
    if num % 2 == 0:  # 如果是偶数
        continue      # 跳过本次循环的print
    print(num)

输出

plaintext

复制代码
1
3
5
7
9
2. while + else(循环正常结束时执行)

else 块仅在循环不是被 break 打断,而是因条件为假正常结束时执行:

python

运行

bash 复制代码
count = 1
while count <= 3:
    print(count)
    count += 1
else:
    print("循环正常结束")  # 会执行

count = 1
while count <= 3:
    print(count)
    if count == 2:
        break
    count += 1
else:
    print("循环正常结束")  # 不会执行(被break打断)

输出

plaintext

复制代码
1
2
3
循环正常结束
1
2

五、常见注意事项

  1. 避免死循环 :必须确保循环体内有能让条件最终为 False 的逻辑(如计数器递增、用户输入判断等);

  2. 缩进问题(Python):循环体必须缩进,否则会报错或逻辑错误;

  3. 初始值设置:计数器、判断变量的初始值要合理(比如计数从 0 还是 1 开始);

  4. 与 for 循环的区别

    • for:适合循环次数确定的场景(如遍历列表、固定次数);
    • while:适合循环次数不确定的场景(如直到满足某个条件)。

六、其他语言的 while 语法(简要对比)

语言 语法示例 核心差异
Java int i=1; while(i<=5) { System.out.println(i); i++; } 用大括号包裹循环体,无需缩进
C/C++ int i=1; while(i<=5) { printf("%d\n", i); i++; } 同上
JavaScript let i=1; while(i<=5) { console.log(i); i++; } 变量声明用 let/var

总之,while 循环的核心是 "条件驱动执行",只要掌握 "条件判断 + 循环体更新 + 退出逻辑",就能灵活解决各类循环问题。

相关推荐
风象南2 小时前
Spring Boot 配置 diff 实战
后端
不会写代码的里奇2 小时前
从零开发基于DeepSeek的端侧离线大模型语音助手:全流程指南
c++·后端·音视频
不能放弃治疗2 小时前
发消息逻辑写在MySQL事务中,导致消费逻辑Bug
后端
Cache技术分享2 小时前
279. Java Stream API - Stream 拼接的两种方式:concat() vs flatMap()
前端·后端
纯粹的热爱2 小时前
Rust 安装加速指南
后端
南昌彭于晏2 小时前
解决springboot静态内部类非空校验无效的问题
java·spring boot·后端
czlczl200209252 小时前
MybatisPlusInterceptor实现无感修改SQL的底层原理(源码)
数据库·spring boot·后端·sql
javadaydayup3 小时前
MyBatis 映射值报错的罪魁祸首竟然是 Lombok 的 @Builder?
后端
一 乐3 小时前
景区管理|基于springboot + vue景区管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习