#%%
# 1. Biggie Size - Given a list, write a function that changes all positive numbers in the list to "big".
# Example: biggie_size([-1, 3, 5, -5]) returns that same list, but whose values are now [-1, "big", "big", -5]

def biggieSize(x):
    for i in range(len(x)):
        if (x[i] > 0):
            x[i] = "big"
    return x

biggieSize([-1, 3, 5, -5])

#%%
# 2. Count Positives - Given a list of numbers, create a function to replace the last value with the number of positive values. 
# (Note that zero is not considered to be a positive number).
# Example: count_positives([-1,1,1,1]) changes the original list to [-1,1,1,3] and returns it
# Example: count_positives([1,6,-4,-2,-7,-2]) changes the list to [1,6,-4,-2,-7,2] and returns it

def countPositives(x):
    count = 0
    for i in range(len(x)):
        if (x[i] > 0):
            count+=1
    x.pop()
    x.append(count)
    return x

countPositives([-1,1,1,1])

#%%
# 3. Sum Total - Create a function that takes a list and returns the sum of all the values in the array.
# Example: sum_total([1,2,3,4]) should return 10
# Example: sum_total([6,3,-2]) should return 7

def sum_total(a):
    tot = 0
    for i in range(len(a)):
        tot += a[i]
    return tot
    
sum_total([1,2,3,4])

#%%
# 4. Average - Create a function that takes a list and returns the average of all the values.
# Example: average([1,2,3,4]) should return 2.5

def outAverage(a):
    tot = 0
    for i in range(len(a)):
        tot+=a[i]
    return tot/len(a)

outAverage([1,2,3,4])

#%%
# 5. Length - Create a function that takes a list and returns the length of the list.
# Example: length([37,2,1,-9]) should return 4
# Example: length([]) should return 0

def findLength(a):
    l = len(a)
    return l

findLength([37,2,1,-9])

#%%
# 6. Minimum - Create a function that takes a list of numbers and returns the minimum value in the list. 
# If the list is empty, have the function return False.
# Example: minimum([37,2,1,-9]) should return -9
# Example: minimum([]) should return False

def find_min(a):
    if (len(a)==0):
        return False
    return min(a)

find_min([37,2,1,-9])

#%%
# 7. Maximum - Create a function that takes a list and returns the maximum value in the array. 
# If the list is empty, have the function return False.
# Example: maximum([37,2,1,-9]) should return 37
# Example: maximum([]) should return False

def find_max(a):
    if (len(a)==0):
        return False
    return max(a)

find_max([37,2,1,-9])

#%%
# 8. Ultimate Analysis - Create a function that takes a list and returns a dictionary that has the 
# sumTotal, average, minimum, maximum and length of the list.
# Example: ultimate_analysis([37,2,1,-9]) should return {'sumTotal': 31, 'average': 7.75, 'minimum': -9, 'maximum': 37, 'length': 4 }

def ultAnalysis(a):
    tot = 0
    for i in range(len(a)):
        tot += a[i]
    d = {'sumTotal': tot, 'average': tot/len(a), 'minimum': min(a), 'maximum': max(a)}
    return d

ultAnalysis([37,2,1,-9])

#%%
# 9. Reverse List - Create a function that takes a list and return that list with values reversed. 
# Do this without creating a second list. (This challenge is known to appear during basic technical interviews.)
# Example: reverse_list([37,2,1,-9]) should return [-9,1,2,37]

def listReverse(a):
    a.reverse()
    return a

listReverse([37,2,1,-9])

#%%