Sublime Text中Python的input函数仅响应首次输入的异常问题
运行异常的具体原因
- 直接导致程序卡住无响应的核心原因:Sublime Text默认内置的Python运行构建,没有开通交互式输入通道。它的运行逻辑是启动独立Python进程执行脚本,只把进程的标准输出内容抓取到编辑器底部的输出面板,完全不支持把用户在编辑器面板里输入的内容回传给运行中的Python进程。当代码执行到第一个
input("select number of years: ")时,虽然提示文本会正常打印到面板,但Python进程会一直阻塞等待外部传入输入值,程序永远卡在这一步,自然不会触发第二个输入提示,也不会执行后续计算逻辑。 - 隐藏的代码逻辑问题:哪怕解决了运行环境的交互能力问题,原代码也会因为类型不匹配报错。
input()方法的默认返回值是字符串类型,而非数值类型,原代码直接把输入的字符串赋值给years、number_of_rabbits,后续执行数值计算时会触发类型错误:比如用字符串做整数除法//、拿字符串做乘法运算都不符合Python的语法规则,无法得到正确计算结果。
对应修复方案
- 运行环境调整:如果需要在Sublime内运行带交互输入的代码,可以安装SublimeREPL插件获取带完整输入输出能力的运行终端;更便捷的方式是直接打开系统自带的终端/命令提示符,切换到脚本所在目录,通过
python 脚本文件名.py的命令启动运行,这种原生运行方式天然支持交互式输入。 - 代码逻辑调整:需要将
input()获取的字符串显式转换为整数类型后再参与计算,调整后可正常运行的代码如下:
years = int(input("select number of years: ")) print(years) double_rate = (years * 12) // 3 number_of_rabbits = int(input("select number of rabbits: ")) print(number_of_rabbits) answer = number_of_rabbits * double_rate print(answer)
内容的提问来源于stack exchange,提问作者python_beginner
相关产品推荐
相关产品推荐

