各約数の出力について


各約数を入力して、出力では約数の合計を出力するプログラム作成してまして  
現在ですと、最後に入力された値のみしか出力されません。  
どうすれば、各入力値に対する出力をすることが出来ますか？

[code]

    N = int(input())
    sum_list = []
    num_list = []
    for _ in range(N):
        num = int(input())
    
    divisor = [i for i in range(1, num) if num % i == 0]
    divisor_list = list(divisor)
    sum_divisor_list = sum(divisor_list)
    print(sum_divisor_list)
    
[/code]

目的

入力値  
3  
28  
16  
10

出力  
28  
15  
8

ご教示よろしくお願いいたします。




「後に入力された値のみしか出力され」ない理由はfor文の中でN回`num`を書き換えているため、それ以前の入力値を消して上書きしていることが原因です。

ご質問の意図が「特定の数値の(素数ではなく)約数をすべて求め、その約数(ただし特定の数値自体は除く)を合計すること」であり、`divisor`の定義以降の処理が正しいと仮定した場合は下記のようにコードを書きなおすことができます。

**修正例**

[code]

    N = int(input())  # 3 を入力
    for _ in range(N):
        num = int(input("> ")) # 3回のループでそれぞれ 28, 16, 10 を入力
    
        divisor = [i for i in range(1, num // 2 + 1) if num % i == 0] # Tips 約数を求めるならばnumの半分までループすれば良い
        divisor_list = list(divisor)
        sum_divisor_list = sum(divisor_list)
        print(divisor_list)     # 約数の確認用コード
        print(sum_divisor_list) # 求める出力
    
[/code]

**出力結果**

[code]

    3
    > 28
    [1, 2, 4, 7, 14]
    28
    > 16
    [1, 2, 4, 8]
    15
    > 10
    [1, 2, 5]
    8
    
[/code]

