You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3 while循环break跳出后print报SyntaxError语法错误

报错根因

这个语法错误和代码逻辑、缩进值错误无关,是*Python交互式解释器(REPL,启动后显示>>>提示符的命令行交互环境)*的输入规则导致的:

  • 输入while/if/def这类带缩进块的复合语句时,REPL会显示...提示符,代表后续输入默认归属当前代码块;必须输入一次无任何内容的空回车,REPL才会判定当前块输入结束,回到接收顶级语句的>>>状态。
  • 从贴出的运行记录看,print('Done!')前仍是...提示符,说明写完循环内的print(line)后没有输入空行结束while块,直接输入了和循环同级的print语句。此时REPL仍判定你处于while的缩进块内部,突然出现的无缩进语句不符合Python缩进语法规则,直接触发SyntaxError。
  • 之前删除最后一行print就能正常运行,是因为写完print(line)后直接敲空行,REPL识别到块结束就会正常执行循环,自然不会报错。
修复方法

根据运行场景选择对应写法即可:

交互式REPL环境运行

写完循环内最后一行print(line)后,先敲一次空回车,等提示符从...切回>>>,再输入print('Done!')。正确交互流程示例:

>>> while True:
...     line = input('> ')
...     if line == 'done':
...         break
...     print(line)
...
> test input
test input
> done
>>> print('Done!')
Done!

示例中print(line)下方单独的...行,就是需要敲空回车的位置,敲完后REPL会立刻开始执行while循环,等循环通过break退出后,再输入print语句即可正常运行。

.py脚本文件运行

如果是把代码写在.py后缀的脚本文件中执行,不需要额外加空行(加空行也不影响运行),只要保证缩进层级正确即可,正确脚本代码:

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

运行该脚本即可实现预期逻辑:循环接收用户输入,输入done时跳出循环,打印Done!后退出。


内容的提问来源于stack exchange,提问作者the real AB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:27:32