基本上,我必须检查特定图案是否出现在一行中。如果是,我必须打印该行,否则不打印。所以这是我的代码:
p = input()
while 1:
line = input()
a=line.find(p)
if a!=-1:
print(line)
if line=='':
break
此代码似乎很好,并被接受为正确的答案。但是有一个问题。我在读取代码测试网站忽略的一行时遇到运行时错误EOFError:EOF。
我有三个问题: 1)为什么被忽视? 2)如何删除它? 3)有没有更好的方法来解决问题?
答案 0 :(得分:13)
没有什么被忽视的。根据{{3}} input
在遇到文件结束条件时引发EOFError。基本上,input
让你知道我们在这里完成了没有什么可读的。你应该等待这个例外,当你得到它时,只需从你的函数返回或终止程序。
def process_input():
p = input()
while True:
try:
line = input()
except EOFError:
return
a = line.find(p)
if a != -1:
print(line)
if line=='':
return
答案 1 :(得分:0)
VS代码修复:
我在使用VS Code时遇到了相同的错误,这对我有用。我已将launch.json文件中的“控制台”行修改为:
"console": "internalConsole"
我这样做是为了避免每次(F5)运行程序时都无法打印。但是,此修改导致它在调试控制台中运行,这显然不喜欢输入功能。
此后,我将其更改为:
"console": "integratedTerminal"
在程序开始时,我只是使用以下代码清除终端屏幕(我在Windows中):
#windows command to clear screen
import os
os.system('cls')
现在,当我(F5)在VScode中运行程序时,它将在内置终端中执行,清除首先显示的路径垃圾,并且像您期望的那样正常工作。我的猜测是,您正在使用的代码测试网站正在某种调试控制台中运行,类似于VSCode中发生的调试控制台,因为您的代码在repl.it(https://repl.it/languages/python3)上运行良好。您的代码没有任何问题,而且此EOF错误也没有任何正常或预期的情况。
答案 2 :(得分:-3)
您可以使用EOFError在代码中使用try-except块。