Olá para todos! Espero que estejam todos bem. Gostaria de fornecer uma sugestão para o gabarito da questão 14, caso achem viável. Sintam-se a vontade para debater, por favor.
- O problema diz: Uma equipe de cientistas de dados está estudando a diversidade biológica em uma floresta. A equipe fez a coleta de informações sobre o número de espécies de plantas e animais em cada área dessa floresta e armazenou essas informações em um dicionário. Nele, a chave descreve a área dos dados e os valores nas listas correspondem às espécies de plantas e animais nas áreas, respectivamente.
{'Área Norte': [2819, 7236],
'Área Leste': [1440, 9492],
'Área Sul': [5969, 7496],
'Área Oeste': [14446, 49688],
'Área Centro': [22558, 45148]}
Escreva um código para calcular a média de espécies por área e identificar a área com a maior diversidade biológica. Dica: use as funções built-in sum() e len().
- O gabarito sugere:
# Especificamos os dados para um dicionário
dados = {'Área Norte': [2819, 7236],
'Área Leste': [1440, 9492],
'Área Sul': [5969, 7496],
'Área Oeste': [14446, 49688],
'Área Centro': [22558, 45148]}
# Inicializamos as variáveis
soma_media = 0 # Irá somar todas as médias
maior_diversidade = '' # Irá armazenar a área com maior diversidade
maior_soma = 0 # Irá armazenar a maior soma de espécies
# Percorremos os valores de chaves e elementos do dicionário
for area, especies in dados.items():
# Fazemos a soma do números de espécies em cada área com a função sum
soma_especies = sum(especies)
# Calculamos a média dividindo a soma das espécies pela quantidade de espécies
media = soma_especies / len(especies)
# Imprimimos
print(f'A {area} tem a média de {media} espécies')
# Verificamos se a soma das espécies é maior que o valor armazenado de maior_soma
# Cada vez que a soma_especies superar o valor de maior_soma,
# a variável maior_soma vai ser igual à soma_especies, atribuindo um novo valor
# De forma similar, maior_diversidade também é substituída
if soma_especies > maior_soma:
maior_soma = soma_especies
maior_diversidade = area
# Somamos as médias
soma_media += media
# A média total será dada pela soma_media dividida pela quantidade de áreas
media_total = soma_media / len(dados)
print(f'Média geral de espécies: {media_total}')
print(f'Área com a maior diversidade biológica: {maior_diversidade}')
- Sugestão: Lá fala-se em "Média geral das espécies", mas a média calculada é a "média que as médias das Áreas atingem". Para a "Média geral" deveríamos fazer a soma de todas as espécies e dividir pelo total de números em todas as listas.
No problema em questão não fará diferença, pois todas as Áreas possuem a mesma quantidade de dados na lista (plantas e animais), então os valores estão corretos! No código a divisão feita é pela quantidade de elementos (com o uso da função "len" no "Dicionário", ou seja, irá retornar o total de regiões, então se em algum momento fosse adicionada alguma nova informação em apenas uma ÚNICA região, a média calculada passaria a ser diferente da média geral.
Exemplo:
# Criando duas listas
lista_A = (2,4)
lista_B = (7,8,9)
# Determinando as somas de cada lista e a soma total
soma_A = sum(lista_A)
soma_B = sum(lista_B)
soma_geral = soma_A + soma_B
# Determinando o total de elementos de cada lista e o total geral
total_A = len(lista_A)
total_B = len(lista_B)
total_geral = total_A + total_B
# Calculando as médias
media_A = soma_A / total_A
media_B = soma_B / total_B
media_das_medias = (media_A + media_B) / 2 #Pois são apenas duas médias
media_geral = soma_geral / total_geral
print(f'Média das médias: {media_das_medias}',
f'Média das geral: {media_geral}',
sep = '\n')
Mas como sou "extremamente iniciante" em tudo aqui na Alura, caso eu tenha sugerido ou falado algo errado, por favor, estou aberto para me corrigirem. Estou aqui pra aprender.
Obrigado! E um forte abraço para todos! (Aliás, diga-se de passagem, esse curso em questão está sendo PERFEITO! Parabéns para todos os envolvidos! Estou gostando muito!)