In: Computer Science
Using Python
def specialAverage():
  
Print the number of 0s and then return the average of either the
positive
values in the list (if the optional parameter has value 1) or the
negative
values in the list (if the optional parameter has value 0).
  
Arguments:
a list of numbers : the list can contain any numeric values
an integer : this integer is an optional parameter and only takes
value
0 or 1, and defaults to 1 if the user does not specify the
value
when calling the function.
  
Return:
a number : the computed average of either positive or negative
numbers
rounded to 1 decimal place
  
>>> specialAverage([1,2,3,4,-1,-2,-3,-4],0)
-2.5
and also prints "There are 0 zeros in the list"
def specialAverage(lst, choice=1):
    """
    Print the number of 0s and then return the average of either the positive
    values in the list (if the optional parameter has value 1) or the negative
    values in the list (if the optional parameter has value 0).
    Arguments:
    a list of numbers : the list can contain any numeric values
    an integer : this integer is an optional parameter and only takes value
    0 or 1, and defaults to 1 if the user does not specify the value
    when calling the function.
    Return:
    a number : the computed average of either positive or negative numbers
    rounded to 1 decimal place
    """
    pos_total, pos_count, neg_total, neg_count, zero_count = 0, 0, 0, 0, 0
    for num in lst:
        if num > 0:
            pos_count += 1
            pos_total += num
        elif num < 0:
            neg_count += 1
            neg_total += num
        else:
            zero_count += 1
    print("There are {} zeros in the list".format(zero_count))
    if choice == 1:
        return pos_total / pos_count
    else:
        return neg_total / neg_count
print(specialAverage([1, 2, 3, 4, -1, -2, -3, -4], 0))
