Why does not the following code work?

-1

The code should receive a number of student grades, print the grades average, and how many grades are 10% below and 10% above average. The code looks like this:

quantidade = int(raw_input())
inicio = 0
ListaDeNotas = list()
while quantidade > inicio:
    notas = int(raw_input())
    inicio = inicio + 1
    ListaDeNotas.append(notas)
MediaDasNotas = sum(ListaDeNotas) / len(ListaDeNotas)
print ("%.2f" % MediaDasNotas)
Notas10Acima = list()
Notas10Abaixo = list()
for nota in ListaDeNotas:
    if nota > ((0.1 * MediaDasNotas) + MediaDasNotas): 
        Notas10Acima.append(nota)
    elif nota < (MediaDasNotas - (0.1 * MediaDasNotas)):
        Notas10Abaixo.append(nota)
print len(Notas10Acima)
print len(Notas10Abaixo)

Example of how it should work: Entry:

5
23
12
45
24
28

Output:

26.40
1
2

My code should print the average 26.40 , for those values, but it prints 26.00 . Where am I going wrong?

    
asked by anonymous 10.04.2016 / 16:28

1 answer

1

I solved my problem by changing int() by float() in line 5. Code:

quantidade = int(raw_input())
inicio = 0
ListaDeNotas = list()
while quantidade > inicio:
    notas = float(raw_input())
    inicio = inicio + 1
    ListaDeNotas.append(notas)
MediaDasNotas = sum(ListaDeNotas) / len(ListaDeNotas)
print ("%.2f" % MediaDasNotas)
Notas10Acima = list()
Notas10Abaixo = list()
for nota in ListaDeNotas:
    if nota > ((0.1 * MediaDasNotas) + MediaDasNotas): 
        Notas10Acima.append(nota)
    elif nota < (MediaDasNotas - (0.1 * MediaDasNotas)):
        Notas10Abaixo.append(nota)
print len(Notas10Acima)
print len(Notas10Abaixo)
    
10.04.2016 / 16:31