Python代码在ZyBooks报EOFError,PyCharm/VS Code运行正常求排查
解决Python input()在ZyBooks平台的EOFError问题
可能原因
- ZyBooks的输入机制和本地IDE不同:PyCharm/VS Code是交互式运行,会等待用户逐行输入;而ZyBooks要求提前预设所有输入内容,以批量方式读取。如果预设的输入行数少于代码中
input()的调用次数,代码执行到input()时会读到文件结束符(EOF),触发EOFError。 - 输入内容不完整:代码中有3次
input()调用,但在ZyBooks中没有提供足够的输入行(比如只给了2行),导致第三次调用input()时无内容可读。
解决方法
- 补全输入内容:在ZyBooks的输入框中,按照代码的
input()顺序,提供3行输入(第一行输第一个单词,第二行输第二个单词,第三行输数字),确保输入行数和input()调用次数完全匹配。 - 适配批量输入方式:改用批量读取输入的写法,避免依赖交互式输入,示例代码如下:
import sys # 读取所有输入并按行拆分,自动过滤空行 input_lines = [line.strip() for line in sys.stdin.read().splitlines() if line.strip()] # 按顺序赋值给变量 usr_word1 = input_lines[0] usr_word2 = input_lines[1] usr_nmr = input_lines[2] print(f'You entered {usr_word1} {usr_word2} {usr_nmr}') first_pswd = f'{usr_word1}_{usr_word2}' second_pswd = f'{usr_nmr}{usr_word1}{usr_nmr}' print(first_pswd) print(second_pswd)
这种写法会一次性读取所有输入内容,再分配给变量,适配ZyBooks的批量输入机制,避免EOFError。
- 核对
input()调用次数:确保代码中input()的数量和你在ZyBooks中提供的输入行数一致,每一个input()对应一行输入内容。
内容的提问来源于stack exchange,提问作者Dadmented
相关产品推荐
相关产品推荐

