Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Gabarito - Questão 14

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!)

1 resposta
solução!

Oi Bruno,

No caso da média geral, você está correto ao apontar que a média calculada no gabarito é a média das médias das áreas. Para calcular a média geral de todas as espécies, seria necessário somar todas as espécies e dividir pelo total de números em todas as listas, como você mencionou.

Mas no contexto da questão, todas as áreas possuem a mesma quantidade de dados na lista (plantas e animais), então os valores estão corretos. A sugestão que você deu é válida para casos em que as listas possam ter tamanhos diferentes.

Valeu.