# Lesson 2 Challenge Solutions

Challenge 1.1
``````

def find_factors(number):
# Functions because why not?

# Initialize out list
factors = []

# Starting from 1, let's test each number
for curr in range(1, number + 1):
# Taking the modulas, if there is a reminder,
#  It's not a factor
if (number % curr == 0):
# We found a factor, add it to our list
factors.append(curr)

# We went through every number from 1 to the user's number
# Return what we have
return factors

# Ask the user for an input (and take the integer of the string that comes in)
usr_inp = int(input("What number would you like to find the factors of? "))
# Print out the factors
print("The factors of", usr_inp, "are:", find_factors(usr_inp))``````
Output
``````What number would you like to find the factors of? 12
The factors of 12 are: [1, 2, 3, 4, 6, 12]``````
Challenge 1.2
``````from random import shuffle
from math import pi

def pi_finder():
# Keeping trying until we find a suitable denominator and numerator
while(1):
# First: Take 9 digits, randomize the order, & create a number from it
denominator_list = ["1","2","3","4","5","6","7","8","9"]
shuffle(denominator_list)

# Multiple ways to do this, this take a list of numbers, and takes an
#  empty string and adds each element from the list - finally taking the
#  numeric value of the string using int()
denominator = int(''.join(denominator_list))

# Second: Take that number times PI (denominator times pi equal numerator)
#		    and then take the integer of the value
numerator = denominator * pi
numerator = int(numerator)

# Third: Check if it's 9 digits, and check if those digits are unique
#		   from each other
# Much easier to deal with strings at this point
str_numerator = str(numerator)

if (len(str_numerator) != 9):
# Continue means reset from the top of the loop
continue

# Create a pool and remove each number as it is found
pool = ["1","2","3","4","5","6","7","8","9"]

for curr in list(str_numerator):
# Take each number out as it is found
if (curr in pool):
pool.remove(curr)

if (pool != []):
# If it is not empty, there are dups in the numerator
continue

# At this point all checks have passed, return the number
return [numerator, denominator]

# Run the function
result = pi_finder()

# Print out the results
print("The numerator is:", result)
print("The denominator is:", result)
print("The approximation of PI is:", result/result)``````
Output
``````The numerator is: 613987452
The denominator is: 195438276
The approximation of PI is: 3.1415926530174674``````