1

私はクラス用の最初のプログラムに取り組んでいます。これには 4 つの機能があり、そのうちの 1 つですmain()

最初の関数は、ユーザーにファイル名の入力を求め、そのファイルを開きます。main()次に、そのファイル内の列をユーザーに要求して、操作するデータを認識できるようにします。

2 番目の関数はタプルのリストを生成します。各タプルはその列の 1 行とそれに対応する日付 (ファイルの列 0) です。各月のデータを平均します (各月に複数のタプルがあります)。ここでエラーが発生します。TypeError: 'float' object is not subscriptable

これが私の3番目の関数です:

def average_data(list_of_tuples):

    month_int = 2
    values_to_average_int = 0.0
    data_avg_int = 0.0
    average_divisor_int = 1
    list_of_month_average_tuples = []
    val = 0

    for val in list_of_tuples:
        #month_val = int(val[0][5:7])
        if val[0][5:7] == month_int:
        #if month_val == month_int:
            values_to_average_int += val[1]
            average_divisor_int += 1
            print(values_to_average_int)

        else:
            data_avg_float = float(values_to_average_int / average_divisor_int)
            month_yr_date_str = val[0][5:7] + '-' + val[0][:4]
            month_average_tuple = (data_avg_int, month_yr_date_str)
            list_of_month_average_tuples.append(month_average_tuple)
            #list_of_month_average_tuples(data_avg_int, month_yr_date_str) 
            month_int -= 1
            if month_int == 0:
                month_int = 12
            print(list_of_month_average_tuples)
    return list_of_month_average_tuples

TypeError現在発生している例外を修正するにはどうすればよいですか?

4

1 に答える 1

0

タプルを繰り返し処理し、現在のタプルを に割り当てていvalます。値にアクセスするにはval、指定されたタプルが 2 次元ではないため、2 組ではなく 1 組の括弧を使用します。val[5:7]ありませんval[0][5:7]

また、val=0前述のforループの上にあります。このような値を割り当てるべきではありません -valあいまいになります。

Pythonforループについては、こちらを参照してください。

于 2013-02-26T03:33:57.220 に答える