先确认终端是否已打开并获得焦点:按Ctrl+`唤出终端,再按Ctrl+K聚焦;若调试时input()卡住,需在launch.json中设置"console": "integratedTerminal"并禁用internalConsole。

input() 提示出来了,但键盘输不进去?先看焦点在哪
VSCode 运行含 input() 的 Python 脚本后,终端显示了提示(如 请输入姓名:),但敲键盘没反应——大概率是光标根本没在终端里。VSCode 默认不会自动把焦点切过去,它停留在编辑器或调试控制台,导致输入被忽略。
解决方法不是改代码,而是手动或快捷键切换焦点:
- 用鼠标点一下终端面板内部(确保光标在闪烁)
- 更高效:按
Ctrl+K(Windows/Linux)或Cmd+K(macOS),直接聚焦到终端 - 若终端还没打开,先按
Ctrl+`(反引号)唤出它 - 输完回车后,按
Ctrl+J可秒切回编辑器继续写代码
调试时 F5 启动,input() 一直卡住不动?launch.json 配置漏了关键项
调试模式下 input() 卡死、无提示、也不报错,不是程序问题,是 VSCode 调试器默认用了非交互式控制台,压根没连 stdin 流。
必须在项目根目录的 .vscode/launch.json 中明确指定:
-
"console": "integratedTerminal"—— 强制使用集成终端而非内部控制台 -
"justMyCode": false—— 否则调试器会跳过标准库的input()底层调用,导致“等不到输入” - 删掉或注释掉
"console": "internalConsole",这个值会让输入彻底失效 - 如果用了虚拟环境,确认
python.defaultInterpreterPath指向的是 venv 里的解释器,否则终端可能启动系统 Python,路径和包都对不上
输完回车,input() 还是不返回?检查换行符和编码
输入内容后按了回车,input() 却没结束,或者返回空字符串,常见于 WSL、远程 SSH 或某些终端模拟器场景。
本质是终端发的换行符(\r\n 或 \n)没被 Python 正确识别:
- 在集成终端里直接运行:
python -c "print(repr(input()))",输入后观察输出是否含'\n';若显示'\r\n',说明终端用了 CRLF,而 Python 在某些配置下只认 LF - 在
launch.json中加"env": {"PYTHONIOENCODING": "utf-8"},避免中文输入后解码失败阻塞 - 极端情况可临时用
sys.stdin.readline().strip()替代input(),绕过内置缓冲逻辑
Code Runner 扩展运行后输不了?它默认把 input() 输出到 Output 面板
用 Code Runner(Ctrl+Alt+N)运行脚本时,提示文字出现在 Output 面板,但那里不能输入——这是设计如此,Output 是只读日志区。
必须让它强制走终端:
- 打开设置(
Ctrl+,),搜索code-runner: run in terminal,勾选此项 - 同时建议关闭
code-runner: preserve focus(设为false),这样运行后焦点自动落到终端 - 改完不用重启,下次运行即生效;若仍无效,检查有没有其他扩展(如 Python 官方扩展)覆盖了该设置
真正容易被忽略的是:终端必须「已存在」且「处于激活状态」才能接收输入。很多问题其实不是配置错了,而是终端面板被关掉了,或者焦点还在编辑器里——先按 Ctrl+` 再按 Ctrl+K,比反复改配置快得多。











