PyCharm运行多行input转int报ValueError但命令行正常如何解决
问题背景
- 运行环境:PyCharm 2022.1.1
- 测试代码:
a = int(input()) b = int(input()) print(a) print(b)
- 异常表现:运行代码时依次输入7按回车、输入10按回车,输入内容无多余空格,执行到第二行
b = int(input())语句时触发报错:ValueError: invalid literal for int() with base 10: ''。同一份代码保存为本地文件后通过命令行执行可正常运行。
故障原因
这是PyCharm 2022.1.1版本内置运行控制台的已知bug,和代码本身逻辑无关:该版本控制台处理连续input()调用时,第一次回车提交输入后,没有正确阻塞等待第二次用户输入,会直接把空字符串传递给第二次input()的返回值,最终导致int类型转换失败。命令行运行时调用的是系统原生Python交互环境,不存在这个缓冲区处理bug,所以可以正常运行。
解决方法
- 方案1:升级PyCharm版本。将PyCharm升级到2022.1.2及以上的正式版本,JetBrains已经在后续小版本更新中修复了该控制台输入bug,升级后无需修改代码即可正常运行。
- 方案2:临时代码规避。如果暂时不想升级IDE,可以在两次输入读取之间添加极短的缓冲区等待延时,修改后代码如下:
import time a = int(input()) time.sleep(0.1) b = int(input()) print(a) print(b)
该方案通过短延时给控制台足够时间刷新输入状态,避免提前读取到空值。
- 方案3:绕开内置控制台。直接使用系统命令行/终端运行对应Python脚本,跳过存在bug的PyCharm内置运行控制台即可。
内容的提问来源于stack exchange,提问作者Krast
相关产品推荐
相关产品推荐

