Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

[Projeto] Calculando pedágio

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

if distancia < 0:
    print("Distância inválida.")
elif distancia <= 100:
    print("Valor do pedágio: R$ 10,00")
elif distancia <= 200:
    print("Valor do pedágio: R$ 20,00")
else:
    print("Valor do pedágio: R$ 30,00")
1 resposta
solução!

Olá, Cássio. Como vai?

Parabéns por mais uma excelente resolução de exercício! O seu código ficou muito bem estruturado e demonstra que você compreendeu com perfeição o funcionamento do encadeamento de condições com o elif.

A ordem em que você colocou os testes lógicos está impecável. Ao validar primeiro se a distância é menor que zero e ir subindo os limites progressivamente (<= 100, depois <= 200), você garantiu que o programa funcione de forma extremamente eficiente, eliminando a necessidade de criar condições complexas com operadores lógicos (como testar se a distância está entre 100 e 200 na mesma linha).

Gostaria de destacar um ponto excelente de boa prática que você adotou e deixar uma sugestão para elevar ainda mais o nível técnico do seu script:


Pontos Fortes do seu Código

  • Validação de Entrada Inválida (distancia < 0): Isso foi uma excelente sacada de arquitetura e segurança de código! Em sistemas reais, nunca devemos confiar cegamente no que o usuário vai digitar. Bloquear distâncias negativas logo no início evita que o programa calcule pedágios errados para dados incoerentes.

Sugestão de Melhoria: Centralização de Variáveis e Formatação

Atualmente, o seu código faz o print() direto de strings estáticas dentro de cada bloco condicional.

Se no futuro o valor do pedágio mudar, ou se você precisar salvar esse valor em um banco de dados ou em um arquivo, o código atual teria dificuldades porque o valor não está guardado em lugar nenhum da memória da CPU, ele apenas aparece na tela.

Uma boa prática de mercado é usar as estruturas condicionais apenas para definir o valor de uma variável e deixar para fazer a impressão uma única vez no final do código. Combinando isso com a formatação monetária automatizada, seu script ficaria assim:

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

# Variável de controle para sabermos se o dado é válido
dados_validos = True
valor_pedagio = 0.0

if distancia < 0:
    print("Distância inválida.")
    dados_validos = False
elif distancia <= 100:
    valor_pedagio = 10.00
elif distancia <= 200:
    valor_pedagio = 20.00
else:
    valor_pedagio = 30.00

# Só exibe o valor final se a distância for correta
if dados_validos:
    print(f"Valor do pedágio: R$ {valor_pedagio:.2f}")

Por que essa refatoração é vantajosa?

  1. Fácil Manutenção: Se o valor do pedágio de até 100 km mudar de 10 para 12 reais, você altera apenas o número na atribuição da variável, sem mexer na estrutura do texto.
  2. Padrão de Formatação: O uso do :.2f garante que o Python cuide das casas decimais usando o ponto flutuante de forma profissional.

Continue com essa consistência incrível nos estudos de Python. Seus códigos estão ficando ótimos!

Espero que possa ter lhe ajudado!