noa98789
noa98789

Reputation: 9

how to use while loop to determine the amount of numbers in a list that are greater the average

Hi I need to do this task in two ways: one way with for loop which I did and other with while loop but I don't secceed....The code I wrote is:

A = [5,8,9,1,2,4]
AV = sum(A) / float(len(A))
count = 0

for i in A : 
    if i > AV : 
        count = count + 1

print ("The number of elements bigger than the average is: " + str(count))
count = 0
while float in A > AV:
    count += 1

print ("The number of elements bigger than the average is: " + str(count))

Upvotes: 0

Views: 389

Answers (4)

Inon Peled
Inon Peled

Reputation: 711

Your code is indeed unformatted. Generally:

for x in some_list:
    ... # Do stuff

is equivalent to:

i = 0
while i < len(some_list):
   ... # Do stuff with some_list[i]
   i += 1

Upvotes: 1

PranshuKhandal
PranshuKhandal

Reputation: 879

The problem is that you are using while float in A > AV: in your code. The while works until the condition is true. So as soon as it encounters some some number in list which is smaller than average, the loop exits. So, your code should be:

A = [5,8,9,1,2,4]
AV = sum(A) / float(len(A))
count = 0
for i in A : if i > AV :
  count = count + 1
print ("The number of elements bigger than the average is: " + str(count))
count = 0
i = 0
while i < len(A):
  if A[i] > AV: count += 1
  i += 1
print ("The number of elements bigger than the average is: " + str(count))

i hope it helped :) and i believe you know why i added another variable i.

Upvotes: 1

Jack Moody
Jack Moody

Reputation: 1771

You can use something like the code below. I have commented on each part, explaining the important parts. Note that your while float in A > AV is not valid in python. In your case, you should access elements of a list by indexing or using a for loop with the in keyword.

# In python, it is common to use lowercase variable names 
# unless you are using global variables
a = [5, 8, 4, 1, 2, 9]
avg = sum(a)/len(a)
print(avg)

gt_avg = sum([1 for i in a if i > avg])
print(gt_avg)

# Start at index 0 and set initial number of elements > average to 0
idx = 0
count = 0
# Go through each element in the list and if
# the value is greater than the average, add 1 to the count
while idx < len(a):
    if a[idx] > avg:
        count += 1
    idx += 1
print(count)

The code above will output the following:

4.833333333333333
3
3

Note: There are alternatives to the list comprehension that I've provided. You could also use this piece of code.

gt_avg = 0
for val in a:
    if val > avg:
        gt_avg += 1

Upvotes: 0

ALFA
ALFA

Reputation: 1744

A = [5,8,9,1,2,4]
AV = sum(A) / float(len(A))

count = 0
for i in A:
    if i > AV:
        count = count + 1

print ("The number of elements bigger than the average is: " + str(count))

count = 0
i = 0
while i < len(A):
    if A[i] > AV:
        count += 1
    i += 1

print ("The number of elements bigger than the average is: " + str(count))

Upvotes: 0

Related Questions