Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I have made a program that is supposed to read the mean, median, median_low, med

ID: 3760153 • Letter: I

Question

I have made a program that is supposed to read the mean, median, median_low, median_high, median_grouped, standard deviation, and the variance. I do not understand how to make the output what I want. HElP!!

# Load the numbers from a file into an array.
def load_numbers(filename):

    numbers = [] # to hold the list of numbers

    try:
        number_file = open(filename, "r")
        for number in number_file:
            number = int(number) # Convert the read string to an int.
            numbers.append(number)
    except Exception as err:
        print ("An error occurred loading", filename)
        print ("The error returned was", err)
        return numbers

    if (len(numbers) < 1):
        print ("There were no numbers in", filename)
        return numbers

    else:
        return numbers
# Perform the statistics calculations using the values
# in the numbers array.

def calculate_stats(numbers):
    value_mean = mean
    value_median = median
    value_median_low = median_low
    value_median_high = median_high
    value_median_grouped = median_grouped
    value_variance = variance
    std_deviation = stdev

def mean(numbers):
    if iter(numbers) is numbers:
        numbers = list(numbers)
    n = len(numbers)
    if n < 1:
        raise StatisticsError('mean requires at least one numbers point')
    return _sum(numbers)/n

def median(numbers):
    numbers = sorted(numbers)
    n = len(numbers)
    if n == 0:
        raise StatisticsError("no median for EMPTY numbers")
    if n%2 == 1:
        return numbers[n//2]
    else:
        i = n//2
        return (numbers[i - 1] + numbers[i])/2


def median_low(numbers):
    numbers = sorted(numbers)
    n = len(numbers)
    if n == 0:
        raise StatisticsError("no median for empty numbers")
    if n%2 == 1:
        return numbers[n//2]
    else:
        return numbers[n//2 - 1]


def median_high(numbers):
    numbers = sorted(numbers)
    n = len(numbers)
    if n == 0:
        raise StatisticsError("no median for empty numbers")
    return numbers[n//2]


def median_grouped(numbers, interval=1):
    numbers = sorted(numbers)
    n = len(numbers)
    if n == 0:
        raise StatisticsError("no median for empty numbers")
    elif n == 1:
        return numbers[0]
    # Find the value at the midpoint. Remember this corresponds to the
    # centre of the class interval.
    x = numbers[n//2]
    for obj in (x, interval):
        if isinstance(obj, (str, bytes)):
            raise TypeError('expected number but got %r' % obj)
    try:
        L = x - interval/2 # The lower limit of the median interval.
    except TypeError:
        # Mixed type. For now we just coerce to FLOAT.
        L = FLOAT(x) - float(interval)/2
    cf = numbers.index(x) # Number of values below the median interval.
    # FIXME THE FOLLOWING line could be more efficient for big lists.
    f = numbers.count(x) # Number of numbers points in the median interval.
    return L + interval*(n/2 - cf)/f


def variance(numbers, xbar=None):
    if iter(numbers) is numbers:
        numbers = list(numbers)
    n = len(numbers)
    if n < 2:
        raise StatisticsError('variance requires at least two numbers points')
    ss = _ss(numbers, xbar)
    return ss/(n-1)

def stdev(numbers, xbar=None):
    var = variance(numbers, xbar)
    try:
        return var.sqrt()
    except AttributeError:
        return math.sqrt(var)

def get_stats(filename):

    numbers = [] # to hold the list of numbers

    try:
        number_file = open(filename, "r")
        for number in number_file:
            number = int(number) # Convert the read string to an int.
            numbers.append(number)
    except Exception as err:
        print ("An error occurred loading", filename)
        print ("The error returned was", err)
        return

    if (len(numbers) < 1):
        print ("There were no numbers in", filename)
        return

    value_mean = mean
    value_median = median
    value_median_low = median_low
    value_median_high = median_high
    value_median_grouped = median_grouped
    value_variance = variance
    std_deviation = stdev

    print("mean =" , value_mean)
    print("median =" , value_median)
    print("median_low =" , value_median_low)
    print("median_high =" , value_median_high)
    print("median_grouped =" , value_median_grouped)
    print("stdev =", std_deviation)
    print("variance =" , value_variance)

# The main function that contains what the program is to do!
def main():
    do_evaluate = True
    while(do_evaluate):
        filename = input(' What is the file you would like to evaluate? ')
        numbers = load_numbers(filename)
        if (len(numbers) > 0):
            calculate_stats(numbers)
            get_stats(filename)
        check_evaluate = input(' Would you like to evaluate another file? (y/n) ')
        if (check_evaluate != 'y'):
            do_evaluate = False

main()

And this is how my output look like:

What is the file you would like to evaluate? numbers.txt
mean = <function mean at 0x02A14348>
median = <function median at 0x02A14390>
median_low = <function median_low at 0x02A143D8>
median_high = <function median_high at 0x02A14420>
median_grouped = <function median_grouped at 0x02A14468>
stdev = <function stdev at 0x02A144F8>
variance = <function variance at 0x02A144B0>

Would you like to evaluate another file? (y/n)

Explanation / Answer

# Load the numbers from a file into an array.
def load_numbers(filename):
numbers = [] # to hold the list of numbers
try:
number_file = open(filename, "r")
for number in number_file:
number = int(number) # Convert the read string to an int.
numbers.append(number)
except Exception as err:
print ("An error occurred loading", filename)
print ("The error returned was", err)
return numbers
if (len(numbers) < 1):
print ("There were no numbers in", filename)
return numbers
else:
return numbers
# Perform the statistics calculations using the values
# in the numbers array.
def calculate_stats(numbers):
value_mean = mean
value_median = median
value_median_low = median_low
value_median_high = median_high
value_median_grouped = median_grouped
value_variance = variance
std_deviation = stdev
def mean(numbers):
if iter(numbers) is numbers:
numbers = list(numbers)
n = len(numbers)
if n < 1:
raise StatisticsError('mean requires at least one numbers point')
return _sum(numbers)/n
def median(numbers):
numbers = sorted(numbers)
n = len(numbers)
if n == 0:
raise StatisticsError("no median for EMPTY numbers")
if n%2 == 1:
return numbers[n//2]
else:
i = n//2
return (numbers[i - 1] + numbers[i])/2

def median_low(numbers):
numbers = sorted(numbers)
n = len(numbers)
if n == 0:
raise StatisticsError("no median for empty numbers")
if n%2 == 1:
return numbers[n//2]
else:
return numbers[n//2 - 1]

def median_high(numbers):
numbers = sorted(numbers)
n = len(numbers)
if n == 0:
raise StatisticsError("no median for empty numbers")
return numbers[n//2]

def median_grouped(numbers, interval=1):
numbers = sorted(numbers)
n = len(numbers)
if n == 0:
raise StatisticsError("no median for empty numbers")
elif n == 1:
return numbers[0]
# Find the value at the midpoint. Remember this corresponds to the
# centre of the class interval.
x = numbers[n//2]
for obj in (x, interval):
if isinstance(obj, (str, bytes)):
raise TypeError('expected number but got %r' % obj)
try:
L = x - interval/2 # The lower limit of the median interval.
except TypeError:
# Mixed type. For now we just coerce to FLOAT.
L = FLOAT(x) - float(interval)/2
cf = numbers.index(x) # Number of values below the median interval.
# FIXME THE FOLLOWING line could be more efficient for big lists.
f = numbers.count(x) # Number of numbers points in the median interval.
return L + interval*(n/2 - cf)/f

def variance(numbers, xbar=None):
if iter(numbers) is numbers:
numbers = list(numbers)
n = len(numbers)
if n < 2:
raise StatisticsError('variance requires at least two numbers points')
ss = _ss(numbers, xbar)
return ss/(n-1)
def stdev(numbers, xbar=None):
var = variance(numbers, xbar)
try:
return var.sqrt()
except AttributeError:
return math.sqrt(var)
def get_stats(filename):
numbers = [] # to hold the list of numbers
try:
number_file = open(filename, "r")
for number in number_file:
number = int(number) # Convert the read string to an int.
numbers.append(number)
except Exception as err:
print ("An error occurred loading", filename)
print ("The error returned was", err)
return
if (len(numbers) < 1):
print ("There were no numbers in", filename)
return
value_mean = mean
value_median = median
value_median_low = median_low
value_median_high = median_high
value_median_grouped = median_grouped
value_variance = variance
std_deviation = stdev
print("mean =" , value_mean)
print("median =" , value_median)
print("median_low =" , value_median_low)
print("median_high =" , value_median_high)
print("median_grouped =" , value_median_grouped)
print("stdev =", std_deviation)
print("variance =" , value_variance)
# The main function that contains what the program is to do!
def main():
do_evaluate = True
while(do_evaluate):
filename = input(' What is the file you would like to evaluate? ')
numbers = load_numbers(filename)
if (len(numbers) > 0):
calculate_stats(numbers)
get_stats(filename)
check_evaluate = input(' Would you like to evaluate another file? (y/n) ')
if (check_evaluate != 'y'):
do_evaluate = False
main()