2

複数行入力を読みたい。入力の形式は、最初の行にintが含まれていません。行の後に文字列行が続きます。私はで試しました

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

Ctrl-dプログラムをEOF( Linux、Ctrl-zWindows)で終了すると、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 に答える