(0.5) Deseja-se fazer um programa em Python para calcular qual a média de consumo do carro ( \mathrm{km} / \mathrm{l} ) em uma viagem. Antes de iniciar a viagem, o motorista abastece o carro por completo ( 35 litros) e zera o odômetro. A cada parada para abastecimento, o motorista anota a quantidade de litros colocada até encher o tanque e a quantidade de quilômetros percorrida deste a última parada. No final, assim que o motorista retorna a sua cidade de origem, ele abastece novamente o carro e faz a última anotação de quantidade de quilômetros percorrida. Seu programa em Python deve ler os dados anotados e informar o consumo médio do carro em km/l.

Passo 1

O enunciado dá as seguintes informações e pede isto:
  • Informação: o motorista começa com o tanque cheio com 35 litros e zera o odômetro antes de sair.
  • Informação: a cada parada para abastecer o motorista anota dois valores:
    • a quantidade de litros colocada até encher o tanque (vou chamar isso de litros colocados nessa parada), e
    • a quantidade de quilômetros percorrida desde a última parada (vou chamar isso de quilômetros percorridos nessa parada).
  • Informação: ao final da viagem, quando retorna à origem, ele abastece novamente e faz a última anotação de quilômetros percorridos (e também anota os litros colocados para encher).
  • Pedido: escrever um programa em Python que leia essas anotações (os pares “litros colocados” e “quilômetros percorridos”) e informe o consumo médio do carro em \mathrm{km}/\mathrm{l}.
Observações importantes que saem do enunciado (sem começar ainda a resolver):
  • Cada quantidade de litros anotada em uma parada corresponde exatamente ao combustível consumido desde a parada anterior (porque ele enche o tanque).
  • Então para obter o total de combustível consumido basta somar todas as anotações de litros; para obter a distância total basta somar todas as anotações de quilômetros.
  • O consumo médio pedido é a razão entre distância total percorrida e combustível total consumido.

Passo 2

Explicando a ideia matemática por trás do programa (muito importante para a prova, devagarinho):
  • Defina as variáveis que vamos usar:
    • \text{L}_{\text{total}} = soma de todas as anotações de litros (combustível total consumido).
    • \text{K}_{\text{total}} = soma de todas as anotações de quilômetros (distância total percorrida).
    • C = consumo médio em \mathrm{km}/\mathrm{l}.
  • Fórmula do consumo médio:
C = \frac{\text{K}_{\text{total}}}{\text{L}_{\text{total}}}
Isso é simples: consumo é distância dividida por combustível gasto. Cada termo:
  • \text{K}_{\text{total}} é medido em quilômetros.
  • \text{L}_{\text{total}} é medido em litros.
  • A divisão dá \mathrm{km}/\mathrm{l}.
  • Importante: se por algum acaso \text{L}_{\text{total}} = 0 (situação inesperada, por exemplo entradas vazias), então o consumo não está definido — o programa deve tratar esse caso para não tentar dividir por zero.

Passo 3

Como ler os dados no programa (estratégia prática para implementar sem ambiguidade):
  • Suposição razoável (e prática para uma entrada flexível): os dados virão como uma sequência de números lidos da entrada padrão, onde cada par representa primeiro os litros colocados e em seguida os quilômetros percorridos naquele trecho. Exemplo de linhas de entrada possíveis:
    • “5.0 60” (colocou 5{,}0 litros e percorreu 60 km)
    • repetir várias linhas até o fim do arquivo (EOF).
  • Implementação segura: ler toda a entrada, separar em tokens (palavras/números) e interpretar cada par consecutivo como (\text{litros},\\ \text{quilômetros})ô.
  • Se a entrada tiver número ímpar de tokens, devemos avisar ou ignorar o último token incompleto — na prática para a prova a entrada será bem formada (pares completos).

Passo 4

Algoritmo passo a passo (como eu faria na prova, escrito em forma de procedimento):
  1. Inicialize \text{L}_{\text{total}} \leftarrow 0 e \text{K}_{\text{total}} \leftarrow 0.
  2. Leia todos os tokens numéricos da entrada (pode ser várias linhas).
  3. Percorra os tokens de dois em dois:
    • para cada par, converta o primeiro token para número real e some em \text{L}_{\text{total}};
    • converta o segundo token para número real e some em \text{K}_{\text{total}}.
  4. Após ler tudo, verifique se \text{L}_{\text{total}} = 0. Se sim, trate como caso especial (por exemplo, imprimir mensagem de erro ou devolver 0).
  5. Caso contrário, calcule C = \dfrac{\text{K}_{\text{total}}}{\text{L}_{\text{total}}}.
  6. Imprima C com precisão adequada (por exemplo com 6 casas decimais) e identifique as unidades como \mathrm{km}/\mathrm{l} se desejar.

Passo 5

Dicas didáticas sobre implementação e tipos de dados (para ajudar na prova):
  • Use tipo float para litros e quilômetros (mesmo que quilômetros costume ser inteiro), porque a divisão pode dar resultado não inteiro.
  • Ao somar muitos números use a operação simples de soma; não precisa de métodos especiais aqui.
  • Para ler até o EOF em Python, uma forma simples é usar sys.stdin.read() e depois split() para obter tokens independentemente de quebras de linha.
  • Sempre trate possíveis formatos com vírgula (,): se for o seu caso, substitua vírgula por ponto antes da conversão. Mas em competições/avalições normalmente o separador decimal é ponto.
  • Formatação: print("{:.6f}".format\text{(C)}) mostra 6 casas decimais; ajuste conforme o que for pedido pelo enunciado da sua prova.

Passo 6

Exemplo concreto (pequena aula aplicada):
  • Suponha que as anotações foram:
    • Par 1: 5{,}0 litros e 60 km.
    • Par 2: 7{,}0 litros e 80 km.
    • Par 3: 6{,}0 litros e 70 km.
  • Então:
    • \text{L}_{\text{total}} = 5{,}0 + 7{,}0 + 6{,}0 = 18{,}0 litros.
    • \text{K}_{\text{total}} = 60 + 80 + 70 = 210 km.
    • Consumo médio:
C = \frac{210}{18{,}0} = 11{,}666\ldots \\ \mathrm{km}/\mathrm{l}.
  • Na prova: faça as somas com calma e depois a divisão final; use frações simples se quiser conferir sem calculadora (por exemplo 210/18 = 35/3 \approx 11{,}666\ldots).

Passo 7

Implementação em Python (explicando trechos):
  • O código abaixo lê toda a entrada, pega tokens, interpreta pares (\text{litros},\\ \text{quilômetros})ô, soma e calcula o consumo médio.
  • Comentários no código explicam cada linha para você entender e poder reproduzir no papel ou digitá-lo rápido na prova.

Resposta

import sys

def main():
    data = sys.stdin.read().strip().split()
    if not data:
        # sem dados: nada a calcular
        print("0.000000")
        return

    if len(data) % 2 != 0:
        # entrada com número ímpar de tokens: ignoramos o último token incompleto
        # (poderia também escolher sinalizar erro)
        data = data[:-1]

    total_liters = 0.0
    total_km = 0.0

    # percorre os tokens de dois em dois: (litros, km)
    for i in range(0, len(data), 2):
        # converte strings para float; se sua entrada usar vírgula como decimal,
        # você poderia fazer data[i].replace(',', '.') antes de float().
        litros = float(data[i])
        km = float(data[i+1])
        total_liters += litros
        total_km += km

    if total_liters == 0.0:
        # evita divisão por zero
        print("0.000000")
        return

    consumo = total_km / total_liters
    # imprime com 6 casas decimais (ajuste se necessário)
    print("{:.6f}".format(consumo))

if __name__ == "__main__":
    main()

Exercícios relacionados