1
resposta

Solução Incompleta - Exercício 10 - Aula 5 - Estruturas de Dados

Olá!

Aparentemente, o exercício 10 do "Momento dos projetos" da aula 5, sobre estruturas de dados, está incompleto. O enunciado pede que seja mostrado as temperaturas acima da média anual e os meses correspondentes. Porém, o programa apresentado na resolução devolve apenas os meses, sem os valores das temperaturas. Solução apresentada no curso:


# Coletamos a lista de temperaturas
temperaturas_mensais = []
for i in range(0,12):
  temperaturas_mensais.append(float(input(f'Digite a média de temperatura do mês {i+1}: ')))
# Criamos uma lista auxiliar para os nomes dos meses
meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']
# Calculamos a média
media_anual = sum(temperaturas_mensais) / len(temperaturas_mensais)

#Resultado
print('Temperaturas acima da média em: ')
for i in range(0,12):
  # Verificamos todas as temperaturas de acordo com a média anual
  if temperaturas_mensais[i] > media_anual:
    # Como os índices dos meses correspondem às temperaturas,
    # podemos imprimir eles sob o mesmo índice
    print(meses[i])

Aproveito para deixar a forma como eu resolvi o mesmo exercício, se alguém tiver algo a comentar, é muito bem-vindo! Acabei usando dicionários na solução, para treinar a manipulação:

temperaturas = {"Janeiro": None, "Fevereiro": None, "Março": None, "Abril": None, "Maio": None,
                "Junho": None, "Julho": None, "Agosto": None, "Setembro": None, "Outubro": None, 
                "Novembro": None, "Dezembro": None}
                
media_anual = 0

for mes in temperaturas:
  media = float(input(f"Insira a temperatura média de {mes}: "))
  temperaturas[mes] = media
  media_anual += media

media_anual /= 12
acima_da_media = {}

for mes in temperaturas:
  if temperaturas[mes] > media_anual:
    acima_da_media[mes] = temperaturas[mes]

print(f"A temperatura média anual foi de {round(media_anual)}ºC, os meses que estiveram acima da média foram: {acima_da_media}.\n")
1 resposta

Olá Cassius! Tudo ok contigo?

Agradeço por compartilhar sua dúvida e também por compartilhar a sua solução, que está correta e bem estruturada. Você fez um ótimo trabalho utilizando dicionários para resolver o problema!

Quanto à solução apresentada no curso, você está correto. A solução apresentada não está completa, pois ela não mostra os valores das temperaturas. A intenção do exercício é mostrar tanto os meses quanto as temperaturas que estão acima da média anual.

Para corrigir a solução apresentada no curso, podemos apenas adicionar a temperatura correspondente ao mês na impressão. Veja o código corrigido abaixo:

# Coletamos a lista de temperaturas
temperaturas_mensais = []
for i in range(0,12):
  temperaturas_mensais.append(float(input(f'Digite a média de temperatura do mês {i+1}: ')))
# Criamos uma lista auxiliar para os nomes dos meses
meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']
# Calculamos a média
media_anual = sum(temperaturas_mensais) / len(temperaturas_mensais)

#Resultado
print('Temperaturas acima da média em: ')
for i in range(0,12):
  # Verificamos todas as temperaturas de acordo com a média anual
  if temperaturas_mensais[i] > media_anual:
    # Como os índices dos meses correspondem às temperaturas,
    # podemos imprimir eles sob o mesmo índice
    # também vamos imprimir a média anual junto para deixar mais completo
    print(f"A temperatura média anual foi de {round(media_anual)}ºC, os meses que estiveram acima da média foram: {acima_da_media}.")
    print(f'{meses[i]}: {temperaturas_mensais[i]}')

Neste código, as únicas alterações que fizemos foi adicionar : {temperaturas_mensais[i]} ao final do print e uma mensagem imprimindo uma mensagem com a temperatura média anual. Isso irá imprimir o necessário e resolver o problema.

Abraços e bons estudos!