2

我想读取多行输入。输入格式是第一行包含 int 为 no。行数,后跟字符串行。我试过了

while True:
    line = (raw_input().strip())
    if not line: break

    elif line.isdigit(): continue

    else:
        print line

它打印字符串行但显示运行时错误消息

Traceback (most recent call last):
  File "prog.py", line 2, in <module>
    line = (raw_input().strip())
EOFError: EOF when reading a line

这是读取输入的正确方法吗?
为什么运行时错误?
我是python新手请帮助我

4

2 回答 2

6

如果您使用 EOF 终止程序(Ctrl-d在 Linux 中,Ctrl-z在 Windows 中),您可能会收到 EOFError。您可以使用以下方法捕获错误:

while True:
    try:
        line = (raw_input().strip())
    except EOFError:
        break
    if not line: break
于 2013-02-01T11:06:42.030 回答
1

您可以执行以下操作:

while True:
    try:
        number_of_lines = int(raw_input("Enter Number of lines: ").strip())
    except ValueError, ex:
        print "Integer value for number of line" 
        continue
    except EOFError, ex:
        print "Integer value for number of line" 
        continue

    lines = []
    for x in range(number_of_lines):
        lines.append(raw_input("Line: ").strip())

    break

print lines

这将处理正确的输入

于 2013-02-01T11:09:58.867 回答