user15495480
user15495480

Reputation:

python will not print out average

I am trying to print out average and median, but I do not understand what I do wrong here, my code will not print out median when my list is even.

def print_hi(name):

    sum = 0
    count =0
    average = 0
    list = []
    list2 = []
    while 1:
        enter = float(input('Enter som numbers: '))
        string = str(enter)
        if enter == 0:
            break
        else:
            count += 1
            sum += enter
            average = sum/count
            list.append(string)
    leng = len(list)//2
    left = leng-1
    raghit = leng+1
    if (leng % 2) == 1:
        median = (list[leng])
        print('Median: ', median)
    else:
        median = (left+raghit)/2
        print('Median : ', median)
    print('Average :', round(average, 2))



if __name__ == '__main__':
    print_hi('PyCharm')

Upvotes: 0

Views: 81

Answers (1)

Gowtham
Gowtham

Reputation: 152

There are couple of errors in your code

  1. In your else block, while calcualting median, you added the indexes and not the values at those indexes.
  2. The right index raghit in your code won't be leng+1, rather it is leng
  3. The condition to check in your first if block won't be leng%2==1, rather it is len(list)%2==1

So the updated code would be

sum = 0
count =0
average = 0
list = []
list2 = []
while 1:
    enter = float(input('Enter som numbers: '))
    string = str(enter)
    if enter == 0:
        break
    else:
        count += 1
        sum += enter
        average = sum/count
        list.append(enter)
leng = len(list)//2
left = leng-1
raghit = leng
if (len(list) % 2) == 1:
    median = (list[leng])
    print('Median: ', median)
else:
    median = (list[left]+list[raghit])/2
    print('Median : ', median)
print('Average :', round(average, 2))

Upvotes: 1

Related Questions