Implemente um programa que leia em Python, valide e analise dados informados pelo usuário. Os dados são meteorológicos e referem-se aos dados de 2021 (de janeiro a dezembro) registrados em uma cidade. Toda entrada de dados deve ser validada. No caso de valor inválido, informe ao usuário o erro e permita que ele redigite o dado.
Seu programa deve coletar os seguintes dados:
• Mês: use valor numérico de 1 a 12 (janeiro a dezembro) para se referir aos meses do ano.
Para cada mês do ano, informe: • Temperatura máxima do mês: devem estar em Celsius, garanta que estejam dentro de um intervalo válido para temperaturas, tal como: -60 graus à +50 graus.
A seguir, seu programa deve calcular e exibir: • Temperatura média máxima anual: exibe a média das temperaturas máximas informadas. • Quantidade de meses escaldantes: quantidade de meses com temperaturas acima de 38 graus Celsius. • Mês mais escaldante do ano: mês que registrou a maior temperatura máxima dentre todos os informados. O mês deve ser escrito na tela por extenso (janeiro a dezembro). • Mês menos quente do ano: mês que registrou a menor temperatura máxima dentre todos os informados. O mês deve ser escrito na tela por extenso (janeiro a dezembro).
Antes de enviar, teste o seu programa com os seguintes dados:
Mês
Temperatura
1
34,3
5
31
9
37
2
36
6
20
10
32,1
3
31
7
17
11
33
4
31,7
8
42,5
12
23
Garanta que funcione para os dados da tabela e para outros que viermos a inserir em seu programa. Não esqueça de testar com dados inválidos para se certificar que você implementou as validações corretamente. Observações gerais: • Use repetição para ler os dados e calcular as estatísticas solicitadas. • Não é necessário manter os dados lidos na memória após término do programa.
print(f"Temperatura média máxima anual: {temperatura_media_anual:.2f}°C")
print(f"Quantidade de meses escaldantes: {meses_escaldantes}")
print(f"Mês mais escaldante do ano: {mes_mais_escaldante_nome.capitalize()}")
print(f"Mês menos quente do ano: {mes_menos_quente_nome.capitalize()}")
if __name__ == "__main__":
main()
```
Certifique-se de executar o código e testá-lo com diferentes conjuntos de dados para garantir que ele está funcionando corretamente. O programa lê os dados, valida as entradas, calcula as estatísticas e exibe os resultados conforme solicitado.
Lista de comentários
Aqui está um exemplo de implementação em Python que atende aos requisitos fornecidos:
```python
def ler_temperatura(mes):
while True:
try:
temperatura = float(input(f"Digite a temperatura máxima do mês {mes}: "))
if -60 <= temperatura <= 50:
return temperatura
else:
print("Temperatura fora do intervalo válido (-60 a 50 graus Celsius). Tente novamente.")
except ValueError:
print("Valor inválido. Tente novamente.")
def mes_por_extenso(mes):
meses = [
"janeiro", "fevereiro", "março", "abril",
"maio", "junho", "julho", "agosto",
"setembro", "outubro", "novembro", "dezembro"
]
return meses[mes - 1]
def main():
temperaturas = []
meses_escaldantes = 0
mes_mais_escaldante = None
mes_menos_quente = None
for mes in range(1, 13):
temperatura = ler_temperatura(mes)
temperaturas.append(temperatura)
if temperatura > 38:
meses_escaldantes += 1
if mes_mais_escaldante is None or temperatura > temperaturas[mes_mais_escaldante - 1]:
mes_mais_escaldante = mes
if mes_menos_quente is None or temperatura < temperaturas[mes_menos_quente - 1]:
mes_menos_quente = mes
temperatura_media_anual = sum(temperaturas) / len(temperaturas)
mes_mais_escaldante_nome = mes_por_extenso(mes_mais_escaldante)
mes_menos_quente_nome = mes_por_extenso(mes_menos_quente)
print(f"Temperatura média máxima anual: {temperatura_media_anual:.2f}°C")
print(f"Quantidade de meses escaldantes: {meses_escaldantes}")
print(f"Mês mais escaldante do ano: {mes_mais_escaldante_nome.capitalize()}")
print(f"Mês menos quente do ano: {mes_menos_quente_nome.capitalize()}")
if __name__ == "__main__":
main()
```
Certifique-se de executar o código e testá-lo com diferentes conjuntos de dados para garantir que ele está funcionando corretamente. O programa lê os dados, valida as entradas, calcula as estatísticas e exibe os resultados conforme solicitado.