3
respostas

Desafio: conversor de moedas

# DEFININDO TAXA DE CÂMBIO
taxa_cambio = 4.96

# ENTRADA
entrada = input("Quanto em R$ você quer converter? ").strip().replace(",", "."))
valor_reais = float(entrada)
conversao = valor_reais / taxa_cambio

#SAÍDA
print(f"Câmbio do dia: US$ 1.00 = R${taxa_cambio:.2f}")
print(f"Com R${valor_reais:.2f}, você terá US${conversao:.2f}")
3 respostas

Oi, Luísa! Como vai?

Agradeço por compartilhar. Seu conversor ficou bem estruturado, com separação entre taxa de câmbio, entrada, conversão e saída, o que ajuda bastante na leitura do código. O único ajuste necessário está nesta linha: entrada = input("Quanto em R$ você quer converter? ").strip().replace(",", ".")), pois há um parêntese a mais no final.

Dica: revise a quantidade de parênteses ao final de cada linha e teste o código por partes. Ajuste assim: entrada = input("Quanto em R$ você quer converter? ").strip().replace(",", "."). Com isso, o programa deve funcionar corretamente.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Oi, Lorena!
Muito obrigada pelo olhar atento! Vou adotar sua dica de testar por partes.

Dúvida: pensando no conceito de código limpo, ao isolar os comandos, o código fica visualmente mais extenso, mas muito mais fácil de "debugar" e de ser lido por outra pessoa. No mercado, como vocês equilibram essa linha tênue entre a brevidade e a clareza? Existe uma "regra de ouro" para saber quando o encadeamento começa a prejudicar a legibilidade ou a segurança do sistema, especialmente quando lidamos com conversões de tipos de dados?

Oi, Luísa! Que bom ver você refletindo sobre esses pontos. Essa é uma das discussões mais ricas no dia a dia do desenvolvimento.

Não existe uma regra matemática, mas no mercado seguimos alguns princípios que ajudam a decidir quando "quebrar" ou "unir" o código.

A Regra do propósito único

Uma boa diretriz é observar se uma única linha está tentando realizar tarefas de naturezas diferentes. No seu exemplo, tínhamos:

  1. Captura de dado (input).
  2. Tratamento de texto (strip e replace).
  3. Conversão de tipo (float).

Quando combinamos tudo isso, o erro em uma parte (como o parêntese extra que notamos) fica mais difícil de localizar. Além disso, se o usuário digitar uma letra em vez de um número, o programa trava e fica difícil tratar esse erro de forma específica.

O Equilíbrio entre brevidade e clareza

Para encontrar esse equilíbrio, você pode considerar estes três pilares:

  • Legibilidade cognitiva: Se você precisa ler a linha mais de duas vezes para entender o que ela faz, ela está complexa demais. O código é escrito para seres humanos lerem e máquinas executarem.
  • Testabilidade: Ao isolar os comandos, você consegue verificar se a limpeza do texto funcionou antes de tentar converter para número. Isso evita que o sistema apresente falhas inesperadas.
  • Manutenção: Imagine que daqui a seis meses o requisito mude e você precise validar se o valor é positivo. Em um código muito encadeado, inserir essa nova regra vira uma "gambiarra". Em um código organizado em etapas, você apenas adiciona um passo lógico.

Quando o encadeamento prejudica?

O limite geralmente é atingido quando o encadeamento esconde a intenção do código. No mercado, evitamos o chamado "Código Espaguete" ou "Linhas Gigantes".

Uma estrutura que equilibra bem esses pontos seria algo assim:

# Tratamento inicial dos dados
entrada_usuario = input("Quanto em R$ você quer converter? ").strip().replace(",", ".")

# Conversão com foco em segurança
try:
    valor_reais = float(entrada_usuario)
    conversao = valor_reais / taxa_cambio
    # ... restante do código
except ValueError:
    print("Por favor, digite um número válido.")

Note que aqui unimos o strip e o replace porque ambos são tratamentos de string (mesma natureza), mas separamos a conversão para float dentro de um bloco que cuida da segurança do sistema.

Dica de ouro: Priorize sempre quem vai ler seu código depois. Na dúvida, escolha a clareza. Um código com cinco linhas compreensíveis é muito melhor do que um código de uma linha que ninguém consegue explicar como funciona.

Espero que essa perspectiva ajude nos seus próximos desafios!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!