2

プログラミングの課題があり、入力する必要があるすべての入力が複数行になっています。例えば:

4 3
10 3
100 5
1000000000 8

また:

7 8 666
8 7 666
10 16 273

行をリストに変換しようとしています。ファイルを使用できず、input ステートメントを使用してファイルをプログラムに入力できるようにする必要があります。

私が抱えている問題は、出力を次のようにしたいということです。

[['4', '3'], ['10', '3'], ['100', '5'], ['1000000000', '8']]

これを使用して残りのプログラムを終了できます。しかし、私が得ているのは次のとおりです。

[['4', '3']]

私が使用しようとしているコードは次のとおりです。

aString = input(" > ")
aString_list = [x for x in (y.split() for y in aString.split('\n')) if x]
print(aString_list)

他の行を読む方法について混乱しています。ありがとう。

4

2 に答える 2

2

コードの問題は、 をinput()押すとすぐに停止するEnterことです。継続的な入力を取得するには、whileループまたはループを使用して、forユーザーがセンチネル値を入力するまで入力を取得する必要があります。

for-loop と の使用iter:

def multiline_input(sentinel=''):
    for inp in iter(input, sentinel):
        yield inp.split()
...         
>>> lis = list(multiline_input())
1 2 3
400 500 600
a b c

>>> lis
[['1', '2', '3'], ['400', '500', '600'], ['a', 'b', 'c']]

whileループの使用:

def multiline_input(sentinel=''):
    while True:
        inp = input()
        if inp != sentinel:
            yield inp.split()
        else:
            break
...             
>>> lis = list(multiline_input())
1 2
3 4 5
6 7 8 9
10

>>> lis
[['1', '2'], ['3', '4', '5'], ['6', '7', '8', '9'], ['10']]
于 2013-09-20T07:13:18.247 に答える