2017-05-20 11 views
0

私は、整数リストのリストの要素の合計を計算するスクリプトを作成しています。私は入力に苦しんでいます。私はユーザーにネストされたリストの数を定義させたい。このスクリプトでは、リストとその内容を入力することができますが、最後のリストのみを処理し、前のリストは無視します。 sp=[y]を使用してすべてのリストをspに取得しようとしていますが、機能していません。N個のサブリストのリストを作成する

def nested_sum(sp): 
    total = 0 
    for nested in sp: 
     total += sum(nested) 
    return total 

def main(): 
    n = int(input()) 
    for y in range(0,n): 
     y = [int(x) for x in input().split()] 
    sp=[y] 
    print(sp) 
    print(nested_sum(sp)) 

main() 

答えて

3

あなたは近いですが、あなたのコードのこの部分は、あなたが望むものをやっていません。

for y in range(0,n): 
     y = [int(x) for x in input().split()] 
    sp=[y] 
  • 整数の範囲を繰り返す上記の最初の行を、yに設定それらの整数のそれぞれを交互に使用します。

  • 2行目は、それぞれが、ループを「オン」は、あなただけのリスト内包[int(x) for x in input().split()]の結果と設定yを置き換える実行します。

  • 第三のラインは、ループが終了した後に実行され、spと呼ばれるリストに自身が最終yを置きます。

だから、あなたはループを二回するたびにyの値を変更しているが、あなたはその値を交換するたびに、以前の値が失われ、spが最終値のみを含むリストとして終わりますy

これらの値を別のリストに保存するだけです。あなたはlist.append()方法でそれを行うことができます:あなたが見ることができるように、ループが始まる前にspリストが設定され、かつyの各値は、それループ内の最後に追加され

def main(): 
    n = int(input()) 
    sp = [] # create an empty list 'sp' 
    for i in range(0,n): # use a separate loop counter variable 'i' 
     y = [int(x) for x in input().split()] 
     sp.append(y) # append y to the end of sp 
    print(sp) 
    print(nested_sum(sp)) 

この場合は、あなたが実際には異なるiy変数を使用する必要はありませんが、それは、同じ機能で異なることを行うために、変数名を再利用を避けるために良いアイデアだ - と、特に、内部ループカウンタを交換しませんループ(あなたを混乱させ、エラーを引き起こす簡単な方法です)。

nested_sum()機能(および最後にmain()コール)は同じままです。

関連する問題