2016-09-05 10 views
0

私たちは、ユーザーが入力したい番号セットを入力できるようにしています。各入力セットには、スペースで区切られた2つの整数が含まれます。次に、キャリッジリターンは次の入力セットを示します。例えば、Python 3でスペースとキャリッジリターンで区切られた複数の入力セットを取る方法は?

Enter number of sets: 3 
1 3 
2 4 
5 6 

次に我々入力これらの変数で、B、同じ動作を行う、ディスプレイ3件の結果:それは最初すべての入力、次いでを取る必要があり

4 
3 
1 

は全てそれぞれの出力を示しています。 1組の入力を処理するロジックがありますが、この形式で入力を受け入れるにはどのようにループするのですか?

sets = int(input("Enter number of sets: ")) 
inputs = [] 
for n in range(sets): 
    inputs[n] = int(input().strip()) 

これはリストの範囲外のエラーでクラッシュします。我々は、値のペアを保持するリストのリストを作成することを考えていました。簡単なソリューション?

編集:私が探しているのは、この問題を解決する方法です。特にリストを介して行う必要はありません。範囲外の問題の総称リストではありません。私は間違っていることを理解している、私はそれを行うために別の方法が必要です。

+0

Pythonは以前に割り当てられていないインデックスに割り当てることができないであろう成長するために、2つの値

  • 使用append()を抽出する - 'append' –

  • +2

    を使用します可能性のある[IndexError:リスト割り当てインデックスが範囲外です]の複製(http://stackoverflow.com/questions/5653533/indexerror-list-assignment-index-out-of-range) –

    答えて

    4

    input()は、"1 3"のような文字列を返しています。その文字列を、a, b = map(int, input().split())のようなものと解釈します。 list.append()を使用して出力を保存します。

    from pprint import pprint 
    
    inputs = [] 
    results = [] 
    sets = int(input("Enter number of sets: ")) 
    for n in range(sets): 
        s = input() 
        a, b = map(int, s.split()) 
        result = a + b 
        inputs.append([a, b]) 
        results.append(result) 
    pprint(inputs) 
    pprint(results) 
    

    サンプル・セッションは次のようになります。

    Enter number of sets: 3 
    1 3 
    2 4 
    5 6 
    [[1, 3], [2, 4], [5, 6]] 
    [4, 6, 11] 
    

    学習のポイントは以下のとおりです。

    • 使用str.split()['1', '3']
    • 使用map()のようなリストに"1 3"のような文字列を変換しますint()['1', '3']をに変換してください
    • 使用variable unpacking入力結果リスト
    関連する問題