1. ホーム
  2. python

[解決済み] シーケンスと'float'型の非インテリジェンスとの乗算ができません。

2022-03-04 02:14:14

質問

以下のコードで、quot;can't multiply sequence by non-int of type 'float'" というエラーが発生するのですが、なぜですか?

def nestEgVariable(salary, save, growthRates):
    SavingsRecord = []
    fund = 0
    depositPerYear = salary * save * 0.01
    for i in growthRates:  
        fund = fund * (1 + 0.01 * growthRates) + depositPerYear
        SavingsRecord += [fund,]
    return SavingsRecord 


print nestEgVariable(10000,10,[3,4,5,0,3])

解決方法は?

for i in growthRates:  
    fund = fund * (1 + 0.01 * growthRates) + depositPerYear

であるべきです。

for i in growthRates:  
    fund = fund * (1 + 0.01 * i) + depositPerYear

growthRatesリストオブジェクトに0.01を掛けているのですね。 リストと整数の乗算は有効です(これはオーバーロードされた構文上の糖分で、要素参照のコピーで拡張リストを作成することができます)。

>>> 2 * [1,2]
[1, 2, 1, 2]