Python入门开发者求助:raw_input执行时触发EOFError问题排查
问题分析与解决
作为Python入门开发者,你遇到的问题其实包含两个部分,咱们一步步拆解:
1. 先解决眼前的 EOFError: EOF when reading a line
这个错误的意思是:程序等着读取你输入的内容,但它啥也没读到就碰到了"输入结束"的信号。常见的触发场景有这些:
- 你在在线代码编辑器里直接运行程序,却没在输入框里填写任何内容;
- 在终端运行时,你提前按了
Ctrl+D(Unix/Linux/macOS)或者Ctrl+Z(Windows)终止了输入; - 有些IDE的运行配置没开启输入交互功能,导致程序拿不到输入。
解决方法很直接:运行程序时,在弹出的输入提示里输入一个数字再继续执行。
2. 隐藏的类型错误(你还没触发但一定会遇到)
你的代码还有个潜在bug:raw_input()返回的是字符串类型,但你直接用它和整数9做取模运算number % 9,等你解决了EOF问题后,会触发TypeError: not all arguments converted during string formatting——因为Python里字符串的%是格式化符号,和整数的取模逻辑完全不一样。
所以必须把输入的字符串转换成整数,用int()函数处理。
修正后的完整代码
# 把输入的字符串转为整数类型 number = int(raw_input("Enter a number.")) def function(num): if num % 9 == 0: print(9) else: print(num % 9) # 别忘了调用函数!你之前只定义了函数但没执行它 function(number)
额外提两个小细节:
- 我把函数参数名改成了
num,避免和全局变量number重名,虽然不是硬性要求,但代码可读性会更好; - 你之前的代码只定义了函数却没有调用它,哪怕输入正常,程序也不会有任何输出哦。
内容的提问来源于stack exchange,提问作者Jill and Jill
相关产品推荐
相关产品推荐

