CC++ & Algorithm

Python while 循环进阶

中等3
语言版本:C++Python
概述:理解while循环的条件控制,学会用flag变量和无限循环实现复杂的重复操作。

while 循环更多玩法:用标志、break 和 continue 控制你的代码

while 循环就像一台永不停歇的机器,只要条件满足,它就一直干活。例如:“只要没写对密码,就继续提示输入”。但有时候循环的条件不只是简单的“对或错”,我们需要更灵活的控制——比如遇到特殊情况提前结束、跳过某次任务、或者根据多个条件决定是否继续。这些就是 while 循环的“进阶用法”。

本文会带你一步步学会三种常用技巧:用 flag 变量“开关”循环用 break 语句“紧急退出”用 continue 语句“跳过当前轮”。每个技巧都有生活化例子和代码,最后还会给出一个完整的猜数字游戏,以及新手最容易踩的坑。

1. 用 flag 控制循环 —— 像游戏里的“生命值”

有时循环要不要继续,不是由一个简单条件决定的,而是需要根据多个情况来判断。这时候可以设置一个“旗子”变量(flag),它只有两个值:True(继续循环)和 False(停止循环)。flag 就像一个开关,打开时循环运行,关上时循环结束。

生活例子:老师让同学们做练习,只要有人举手说“没做完”,老师就继续等。直到所有人都说“做完了”,老师才停止。这里的“继续等”就是一个 flag。

flag = True  # 开关:开始为 True
while flag:
    answer = input("你喜欢编程吗? (yes/no) ")  # 输入回答
    if answer == "yes":
        print("太棒了!")
        flag = False  # 关掉开关,停止循环
    elif answer == "no":
        print("再想想吧!")
        flag = False  # 同样关掉
    else:
        print("请回答 yes 或 no")
# 循环结束后,程序继续执行后面的代码

这个例子中,flag 初始为 True,循环执行。用户输入“yes”或“no”后,flag 变成 False,循环结束。如果输入其他东西,flag 保持不变,循环继续提问。

注意:flag 变量一定要在循环内部有修改的地方,否则会变成死循环(永远 True,关不掉)。

2. 用 break 提前跳出 —— 紧急停止

有时候我们根本不想等到条件变成 False,而是想在循环中间就“强行”跳出去。就像玩游戏时突然想退出,直接按“退出”按钮——这就是 break 的作用。

break 会立刻终止当前所在的整个循环,不管循环的条件是否还成立。它经常和 while True(无限循环)一起使用,因为无限循环本身不会停止,必须靠 break 来结束。

生活例子:你一直在玩手机,妈妈喊“过来吃饭”。如果你回答“来了”,就可以马上停止玩手机(break),而不是等到玩完这一局。

secret = 7  # 秘密数字
while True:  # 无限循环,一直问
    guess = int(input("猜一个 1 到 10 的数字:"))  # 用户输入猜测
    if guess == secret:
        print("猜对了!")
        break  # 立刻跳出循环,不再继续
    else:
        print("不对,再试一次。")
# break 之后,程序会直接运行到这里
print("游戏结束!")

while True 时,一定要记得在某个地方写 break,否则程序会永远运行下去——就像忘了关水龙头一样。

常见错误:把 break 放在循环外面,或者忘记写 break 导致死循环。比如上面代码如果漏了 break,猜对后还会继续问“猜一个数字”,永远停不下来。

3. 用 continue 跳过本次循环 —— 提前进入下一轮

continuebreak 不同,它不会结束整个循环,而是跳过当前的这一次,直接开始下一次循环。换句话说,一旦遇到 continue,它后面所有的代码都不执行了,循环直接回到条件判断处。

生活例子:老师点名回答问题,如果某位同学正在发呆(条件满足),老师就跳过这位同学,继续点下一位。这里“跳过”就是 continue

num = 0  # 从0开始
while num < 10:
    num += 1  # 每次加1
    if num % 2 == 0:  # 如果是偶数
        continue      # 跳过本次,不打印
    print(num)        # 只有奇数才会执行到这里
# 输出结果:1 3 5 7 9

这个程序只输出奇数。遇到偶数时,continue 让程序直接跳回 while 条件判断,跳过了 print(num)

常见错误:使用 continue 时,如果不小心把更新循环变量的语句放在了 continue 之后,就会导致变量永远不更新,形成死循环。例如:

num = 0
while num < 10:
    if num % 2 == 0:
        continue      # 如果这里是偶数,直接回到while,num没增加,死循环!
    num += 1
    print(num)

一定要确保 num += 1continue 之前,或者写在 if 之前。

4. 完整示例:综合运用 flag 和 break 的“密码登录”程序

下面是一个模拟登录系统的程序,用到了 flag 控制break 跳出。用户最多尝试 3 次密码,正确则显示欢迎信息并结束;如果 3 次都错,则提示“账户锁定”。

password = "python123"   # 预设的正确密码
attempts = 3             # 允许尝试次数
login_success = False    # 登录是否成功的标志,初始为 False

while attempts > 0 and not login_success:   # 条件:还有机会 且 还没成功
    user_input = input("请输入密码:")       # 输入密码
    if user_input == password:
        print("登录成功!欢迎回来。")
        login_success = True                # 设置标志为 True,下次循环条件不满足,结束
        break                               # 也可以直接 break 跳出,但用标志更清晰
    else:
        attempts -= 1                       # 用掉一次机会
        if attempts > 0:
            print(f"密码错误,还剩 {attempts} 次机会。")
        else:
            print("密码错误三次,账户已锁定!")
# 程序结束

这个例子中,while 条件同时检查了两个条件:attempts > 0(剩余次数)和 not login_success(没登录成功)。当密码正确时,login_success 变成 True,循环自然结束。

5. 新手常见错误总结

  • 忘了改变循环条件:比如 while flag 但循环里没有代码把 flag 改成 False,就会死循环。
  • break 和 continue 写错位置break 只能用于循环内部,不能用在 if 外面(除非 if 在循环里)。continue 跳过之后要确保循环条件能最终变成 False,否则无限循环。
  • 死循环的典型while True: 里面没有 break;或者 while condition:condition 永远为 True(比如 while 1:)。
  • 变量更新顺序错误:如上面说的 continue 放在递增之前导致死循环。

6. 小练习:用 while 计算 1 到 100 的和

既然学了 flag 和 break,接下来试试用 while 循环自己实现累加。提示:设一个累加器变量 total 和一个计数器 i,让 i 从 1 增加到 100,每次把 i 加进 total

total = 0  # 总和,初始为0
i = 1      # 计数器,从1开始
while i <= 100:
    total += i   # 把 i 累加到 total
    i += 1       # 计数器加1,很重要!
print("1到100的和是:", total)

如果不想用 i <= 100,也可以改用 while True 配合 break,试试看?

7. 相关知识点指引

  • 如果循环次数确定,推荐使用 for 循环(详见“for 循环基础”)。
  • 循环里面还可以嵌套另一个循环,叫做 嵌套循环(比如打印九九乘法表)。
  • 循环后面可以跟一个 else 语句,当循环正常结束(没有被 break 打断)时执行,称为 while-else
  • 想更深入了解循环控制,可以学习 循环中的 pass 语句

while 循环就像一把万能钥匙,掌握了 flag、break、continue,你就能灵活控制代码的重复执行。不过记得:别把钥匙忘在锁里(死循环)! 多写多练,很快你就能用它们写出有趣的小程序了。

例题精讲

1单选题

执行以下代码后,变量 flag 的值是: flag = True count = 0 while flag: count += 1 if count >= 3: flag = False print(flag)

ATrue
BFalse
C0
D3
2单选题

下列哪个while循环会导致无限循环(假设循环体内部没有break或return语句)?

Awhile False:
Bwhile 0:
Cwhile True:
Dwhile 1 == 2:
3判断题

在while循环中,如果条件表达式始终为True,则循环会无限执行下去,除非在循环体内使用break语句跳出。

4填空题
以下代码使用flag变量控制循环,计算1到100的和,请补全代码。
sum = 0
i = 1
flag = True
while ___:
    sum += i
    i += 1
    if i > 100:
        ___
5填空题
以下代码使用无限循环和break实现密码验证,直到输入正确密码'123'才退出,请补全。
password = '123'
while ___:
    pw = input('请输入密码:')
    if pw == password:
        print('密码正确')
        ___