如何在读取线条时删除EOFError:EOF?

Jef*_*eff 4 python python-3.x

基本上,我必须检查特定模式是否出现在一行中.如果是,我必须打印该行,否则不打印.所以这是我的代码:

p = input()
 while 1:
   line = input()
   a=line.find(p)
   if a!=-1:
     print(line)
   if line=='':
     break
Run Code Online (Sandbox Code Playgroud)

这段代码似乎很好,并被接受为正确的答案.但是有一个问题.我在读取代码测试网站忽略的一行时遇到运行时错误EOFError:EOF.

我有三个问题:1)为什么被忽视?2)如何删除它?3)有没有更好的方法来解决问题?

Gia*_*los 13

没有什么是被忽视的.根据文档 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
Run Code Online (Sandbox Code Playgroud)