【问题标题】:Input error in Python (EOF error)Python 中的输入错误(EOF 错误)
【发布时间】:2014-10-17 03:49:53
【问题描述】:

我在许多解决方案中都有这个错误。我在这个主题上经历了很多答案,但无法解决问题。我只能弄清楚问题可能在于从一个输入文件中获取输入,其中整个输入字符串都被获取在一个输入调用中并在第二个原始输入调用中显示 EOF 错误。

def change(a,b,l):
alist = []
blist = []
for m in range(0,26):
    alist.append(0)
    blist.append(0)
for i in a:
    alist[l[i]] += 1
for j in b:
    blist[l[j]] += 1
common = 0
for i in range(0,26):
    dif = (alist[i] - blist[i])
    if (dif != alist[i]):
        common += min(alist[i],blist[i])
total = (min(len(a),len(b)) - common) + abs(len(a) - len(b))
return total

test = int(raw_input())
ans = []
l = {}
for i in range(65,91):
    l[chr(i)] = i - 65
for i in range(0,test):
    a = str(raw_input())
    b = str(raw_input())
    ans = ans + [change(a,b,l)]
for j in ans:
    print j

如果有人能描述如何从单个输入文件中多次获取上述输入,那将是一个很大的帮助。

【问题讨论】:

  • raw_input 已经是一个字符串
  • 另外,您应该使用input(),而不是int(raw_input())。请给我们示例输入
  • 你能链接一下spoj问题吗?

标签: python python-2.7 input


【解决方案1】:

特别是如果你想从文件而不是终端输入,你可以使用文件对象的readline() 函数。示例:

import sys

def test(f):
    num = int(f.readline())
    for i in range(num):
        a = int(f.readline())
        b = int(f.readline())
        print a, b


if __name__ == '__main__':
    test(sys.stdin)

您可能还希望实际使用文件结尾作为输入结束的标记。例如,在您的示例中,您可能不需要获取第一行中的记录数,而是继续直到您点击 EOF。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    相关资源
    最近更新 更多