Melhorar codigo

Foram anotadas as idades e alturas de 30 alunos. Faça um Programa que determine quantos alunos com mais de 13 anos possuem altura inferior à média de altura desses alunos.

idades = [32,89,65,34,22,34,76,12,13,29,28,54,24]
alturas = [1.87,1.65,1.23,1.89,1.90,1.32,1.56,1.87,1.04,1.21,1.06,1.76,1.58]

i = 0
soma = 0

while i < len(alturas):
    soma += alturas[i]
    i += 1
media = soma / len(alturas)

c = 0
quantidade = 0
while c < len(idades):
    if(idades[c] > 13 and alturas[c] < media):
        quantidade += 1
    c += 1
print(quantidade)

existe uma maneira de deixar esse programa mais curto,simples, alguns métodos ex: percorra a lista e some os items?

Sim, tem a função sum que soma os elementos de um vetor:

media = sum(alturas) / len(alturas)
1 curtida

Dá pra usar também list comprehensions, e fazer coisas como por exemplo:

// busca todos os índices dos alunos maiores que 13
maiores_que_13 = [idx for idx, idade in enumerate(idades) if idade > 13]

// traz apenas as alturas de quem tem mais que 13 anos
alturas_maiores_que_13 = [alturas[idx] for idx in maiores_que_13]

// agrupar todos os alunos por idade e altura
[(idade, altura) for idade, altura in zip(idades, alturas)]
1 curtida