In this post I am going to share with you guys how to find the factors of a number using python.

This may help a lot of you with the for loops on action.

So what we are going to create is a function that will take a number that we want to find its factors as a parameter and then return all the factors as a list.

E.g:

```
factors = factors_of(10)
print(factors)
```

Results:

```
[1,2,5,10]
```

Let us get into this function.

Step 1: Define a function

*Is very important to give your function an meaningful name.*

```
def factors_of(number):
```

The reason I chose *factors_of* is because it gives saves you time and energy to put a comment. Using meaningful name can save you from writing a comment to explain what does a function does.

Step 2: Create a temporary list

This list is the one that is going to be returned carrying all the factors.

```
temp = list()
```

Sorry I migrated to python from c#, so I am used to instantiating a data type hence I said *temp = list()* instead of *temp =[]*. But I think for memory cache purposes, list() is better than [] just append is better than +=. If I am wrong with this please feel free to comment.

Step 3: Create A loop from 1 to the number

This loop must with the number we are looking it's factors. We are going to use the built-in function *range(seed,max-1,step)

```
for i in range(1,number+1):
```

Plus 1 because we want the number itself to be included because according to the formula of a range, the number is excluded.

Step 4: Use a condition with % operator

For us to find if a number is a factor we must find a remainder of 0 if we devide with it. Lucky we will just % to find remainder. Then we append the number to the list

```
#line for the loop
if number%i==0:
temp.append(i)
```

Then lets return the list.

Code is full:

```
def factors_of(number):
temp = list()
for i in range(1,number+1):
if number%i==0:
temp.append(i)
return temp
```

So if we go back to our example but with a different number let's check the results

```
factors = factors_of(20)
print(factors)
```

Results:

```
[1,2,4 5,10,20]
```

I hope you enjoyed the post and it was helpful for you. Cheers

## Discussion (3)

You can make this really concise with list comprehension:

YES, But a lot of people are new to python programming, if that was not the case I would have used lambda function to solve this.