Faça um programa que receba na mesma linha de entrada um número real e dois caracteres dentre os valores C, F e K (onde C = Graus Celsius, F = Graus Fahrenheit e K = Kelvin). Seu programa deverá converter o valor numérico de uma escala de temperatura para outra. Observe os exemplos a seguir:
Exemplo 1:
Escalas de temperatura: K = Kelvin, F = Fahrenheit e C = Celsius
Digite a temperatura, a escala da temperatura e a escala para conversão: 100 C K
100 }\mp@subsup{}{}{\circ}\textrm{C = 373.15K
Exemplo 2:
Escalas de temperatura: K = Kelvin, F = Fahrenheit e C = Celsius
Digite a temperatura, a escala da temperatura e a escala para conversão: 56.45 K F
Escalas de temperatura: K = Kelvin, F = Fahrenheit e C = Celsius
Digite a temperatura, a escala da temperatura e a escala para conversão: 100 C K
100 }\mp@subsup{}{}{\circ}\textrm{C = 373.15K
Digite a temperatura, a escala da temperatura e a escala para conversão: 56.45 K F
Passo 1
O enunciado pede que façamos um programa que leia, na mesma linha, três itens: (1) um número real representando uma temperatura, (2) um caractere que identifica a escala atual dessa temperatura e (3) um caractere que identifica a escala para a qual queremos converter. As escalas possíveis são
(Celsius),
(Fahrenheit) e
(Kelvin). O programa deve imprimir a temperatura original seguida do símbolo da escala e o resultado convertido seguido do símbolo da escala de destino. Exemplo de entrada e saída fornecidos no enunciado (eu os anotei para usar como teste):
- Entrada:
100 C K-> Saída esperada (do enunciado):100 °C = 373.15K - Entrada:
56.45 K F-> Saída esperada (do enunciado):56.45 K = -358.06°F
Informações relevantes dadas:
- A entrada vem em uma única linha com três tokens: um número real e duas letras entre
. - Deve-se converter a temperatura da escala inicial para a escala final e imprimir no formato mostrado.
Passo 2
Vamos fixar as fórmulas fundamentais de conversão entre as escalas. Vou apresentar cada fórmula e explicar o que cada símbolo significa.
-
Conversão entre Celsius e Kelvin:Aqui
é a temperatura em graus Celsius e é a temperatura em Kelvin. A constante é a diferença entre as escalas de zero absoluto. A inversa é: -
Conversão entre Celsius e Fahrenheit:Aqui
é Celsius e é Fahrenheit. A razão (ou ) escala a unidade e desloca a origem. A inversa é:
Observação prática: para converter entre duas escalas quaisquer, a forma mais simples e segura é converter primeiro para
(Celsius) usando as fórmulas acima, e depois converter de
para a escala desejada. Isso evita ter que memorizar 6 fórmulas diretas (uma para cada par).
Passo 3
Vou escrever explicitamente o procedimento matemático que o programa seguirá (passo a passo numérico), usando a estratégia “pivô em Celsius”.
Dado: valor numérico
, escala de origem
e escala de destino
.
-
Calcular
(temperatura em Celsius) a partir de conforme : - Se
, então - Se
, então - Se
, então
- Se
-
Converter de
para a escala destino : - Se
, então - Se
, então - Se
, então
- Se
Esses dois passos cobrem todas as conversões possíveis.
Passo 4
Pontos de implementação e detalhes práticos (o que prestar atenção ao escrever o programa):
- Normalizar letras: aceitar entrada em minúsculas ou maiúsculas transformando os caracteres para maiúsculo.
- Se a escala de origem for igual à de destino, apenas imprimir o valor sem alterar (apenas formatar).
- Precisão: nas saídas do exemplo os valores aparecem com duas casas decimais (por exemplo
). Então formatamos o resultado com duas casas decimais usando arredondamento padrão. - Símbolos: em impressões, as escalas
e normalmente aparecem com o símbolo de grau antes da letra ( , ), enquanto (Kelvin) não usa o símbolo de grau. No programa usaremos o caractere Unicode \u00B0para o símbolo de grau quando necessário. - Preservar a representação do valor de entrada na parte esquerda da saída: para ficar igual aos exemplos, imprimimos o token original lido para o valor (assim
100fica100,56.45fica56.45), e o resultado convertido formatamos com duas casas decimais.
Passo 5
Escrevendo o algoritmo em pseudo-passos (fácil de transformar em código):
- Ler a linha de entrada e dividir em três tokens:
valor_str,esc_origem,esc_destino. - Converter
valor = float(valor_str). esc_origem = esc_origem.upper()eesc_destino = esc_destino.upper().- Calcular
celsiusassim:- se
esc_origem == 'C':celsius = valor - se
esc_origem == 'K':celsius = valor - 273.15 - se
esc_origem == 'F':celsius = (valor - 32) * 5/9
- se
- Calcular
resultadoassim:- se
esc_destino == 'C':resultado = celsius - se
esc_destino == 'K':resultado = celsius + 273.15 - se
esc_destino == 'F':resultado = celsius * 9/5 + 32
- se
- Preparar strings de unidades para imprimir: adicionar o símbolo de grau a
CeF. - Imprimir na forma:
<valor_str> <unidade_origem> = <resultado_formatado><unidade_destino>, com<resultado_formatado>com duas casas decimais.
Passo 6
Vou demonstrar manualmente com os exemplos para você entender as contas:
Exemplo 1: converter
de
para
.
- Origem:
, então . - Destino:
, então - Resultado:
100 °C = 373.15K.
Exemplo 2: converter
de
para
.
- Origem:
, então - Destino:
, então - Resultado:
56.45 K = -358.06°F.
Percebeu como usamos primeiro a passagem por Celsius e depois a fórmula para a escala final? Isso simplifica muito.
Passo 7
Erros comuns e como evitá-los:
- Esquecer de subtrair
ao ir de Kelvin para Celsius — isso gera desvios grandes. - Trocar a ordem de
e na fórmula entre Celsius e Fahrenheit — preste atenção em qual direção está convertendo. - Usar arredondamento inadequado: o enunciado mostra duas casas decimais nos exemplos; o programa seguirá esse padrão para a saída convertida.
- Lidar com entradas em minúsculas: por isso normalizamos com
.upper().
Passo 8
Agora que já explicamos a lógica, seguem o programa pronto em Python. Ele implementa exatamente os passos acima: lê a linha, converte, formata e imprime no formato pedido. Copie e rode no seu computador ou no ambiente de prova que aceite Python 3.
Resposta
# Programa de conversão entre escalas C, F e K
# Lê: valor escala_origem escala_destino (na mesma linha)
linha = input().strip().split()
valor_str = linha[0]
valor = float(valor_str)
esc_origem = linha[1].upper()
esc_destino = linha[2].upper()
# converte para Celsius (pivô)
if esc_origem == 'C':
celsius = valor
elif esc_origem == 'K':
celsius = valor - 273.15
elif esc_origem == 'F':
celsius = (valor - 32) * 5.0/9.0
else:
raise ValueError("Escala de origem inválida")
# converte de Celsius para escala destino
if esc_destino == 'C':
resultado = celsius
elif esc_destino == 'K':
resultado = celsius + 273.15
elif esc_destino == 'F':
resultado = celsius * 9.0/5.0 + 32
else:
raise ValueError("Escala de destino inválida")
# símbolos: ° para C e F; K sem °
grau = '\u00B0'
unidad_origem = (grau + esc_origem) if esc_origem in ('C','F') else esc_origem
unidad_destino = (grau + esc_destino) if esc_destino in ('C','F') else esc_destino
# imprimir: mantém a string original do valor à esquerda e mostra o resultado com 2 casas decimais
print(f"{valor_str} {unidad_origem} = {resultado:.2f}{unidad_destino}")