# can't multiply sequence by non-int of type 'float'

PythonFloating PointSequence## Python Problem Overview

Why do I get an error of "can't multiply sequence by non-int of type 'float'"? from the following code:

```
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])
```

## Python Solutions

## Solution 1 - Python

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

should be:

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

You are multiplying 0.01 with the growthRates list object. Multiplying a list by an integer is valid (it's overloaded syntactic sugar that allows you to create an extended a list with copies of its element references).

Example:

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

## Solution 2 - Python

Python allows for you to multiply sequences to repeat their values. Here is a visual example:

```
>>> [1] * 5
[1, 1, 1, 1, 1]
```

But it does not allow you to do it with floating point numbers:

```
>>> [1] * 5.1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'
```

## Solution 3 - Python

You're multipling your "1 + 0.01" times the growthRate list, not the item in the list you're iterating through. I've renamed `i`

to `rate`

and using that instead. See the updated code below:

```
def nestEgVariable(salary, save, growthRates):
SavingsRecord = []
fund = 0
depositPerYear = salary * save * 0.01
# V-- rate is a clearer name than i here, since you're iterating through the rates contained in the growthRates list
for rate in growthRates:
# V-- Use the `rate` item in the growthRate list you're iterating through rather than multiplying by the `growthRate` list itself.
fund = fund * (1 + 0.01 * rate) + depositPerYear
SavingsRecord += [fund,]
return SavingsRecord
print nestEgVariable(10000,10,[3,4,5,0,3])
```

## Solution 4 - Python

In this line:

`fund = fund * (1 + 0.01 * growthRates) + depositPerYear`

growthRates is a sequence (`[3,4,5,0,3]`

). You can't multiply that sequence by a float (0.1). It looks like what you wanted to put there was `i`

.

Incidentally, `i`

is not a great name for that variable. Consider something more descriptive, like `growthRate`

or `rate`

.

## Solution 5 - Python

In this line:

```
fund = fund * (1 + 0.01 * growthRates) + depositPerYear
```

I think you mean this:

```
fund = fund * (1 + 0.01 * i) + depositPerYear
```

When you try to multiply a float by growthRates (which is a list), you get that error.

## Solution 6 - Python

Because growthRates is a sequence (you're even iterating it!) and you multiply it by (1 + 0.01), which is obviously a float (1.01). I guess you mean `for growthRate in growthRates: ... * growthrate`

?