1
resposta

[Projeto] Cálculo de pedágio

distancia = float(input("Digite a distância percorrida (em km): "))
valor_pedagio = float(10 if distancia < 100 else 20 if 100 < distancia <= 200 else 30)
valor_pedagio_formatado = f"{valor_pedagio:.2f}".replace('.', ',')
print(f"Valor do pedágio: R${valor_pedagio_formatado}")

1 resposta

Olá, Paulo. Como vai?

Sua solução apresenta um nível de sofisticação muito interessante! O uso de condicionais aninhadas em uma única linha (operador ternário encadeado) mostra que você já está explorando formas mais avançadas e concisas de escrever lógica em Python.

Além da lógica, você teve um cuidado especial com a formatação de saída, utilizando f-strings e o método replace para adaptar o padrão decimal americano (ponto) para o brasileiro (vírgula). Isso agrega muito valor à experiência do usuário final.

Para contribuir ainda mais com seu código, gostaria de sugerir alguns pontos de boas práticas e atenção:

  • Tratamento de Limites: Notei que você utilizou distancia < 100 e depois 100 < distancia. Se o usuário digitar exatamente 100, o seu código cairá no else final, resultando em R$ 30,00. Geralmente, em regras de negócio de pedágio, as faixas são inclusivas (ex: distancia <= 100).
  • Legibilidade vs Concisão: Embora o ternário em uma linha seja elegante, quando temos mais de duas condições, ele pode se tornar difícil de ler e manter. Em projetos maiores, o uso do if/elif/else tradicional é preferível para facilitar a manutenção por outros desenvolvedores.
  • Formatação Monetária: Uma alternativa ao replace é o uso da biblioteca nativa locale, que formata moedas automaticamente de acordo com a região configurada.

Veja uma sugestão de como estruturar esse código priorizando a clareza e corrigindo o intervalo do valor 100:

distancia = float(input("Digite a distância percorrida (em km): "))

if distancia <= 100:
    valor_pedagio = 10.0
elif distancia <= 200:
    valor_pedagio = 20.0
else:
    valor_pedagio = 30.0

# Utilizando f-string para formatar com vírgula de forma simples
print(f"Valor do pedágio: R$ {valor_pedagio:,.2f}".replace(',', 'X').replace('.', ',').replace('X', '.'))

Dessa forma, os intervalos ficam claros:

  • Até 100km: R$ 10,00
  • De 101km até 200km: R$ 20,00
  • Acima de 200km: R$ 30,00

Continue explorando essas formas reduzidas de escrita, pois elas são ótimas ferramentas para se ter no "cinto de utilidades" de um programador Python!

Espero que possa ter lhe ajudado!