Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Desafio] Hora da prática (10-13)

Decidi compartilhar as minhas soluções em Python aqui no fórum. Se alguém tiver alguma dúvida, sugestão de melhoria ou formas diferentes de resolver, fiquem à vontade para comentar!

  1. Calculadora com análise do número

Neste desafio, usei o is_integer() para verificar se o resultado era decimal ou não, além do operador módulo % para descobrir se era par ou ímpar.

numero1 = float(input("Digite o primeiro número: "))
numero2 = float(input("Digite o segundo número: "))
operacao = input("Qual operação deseja realizar? (+, -, *, /): ")

resultado = 0
operacao_valida = True

if operacao == '+':
    resultado = numero1 + numero2
elif operacao == '-':
    resultado = numero1 - numero2
elif operacao == '*':
    resultado = numero1 * numero2
elif operacao == '/':
    if numero2 != 0:
        resultado = numero1 / numero2
    else:
        print("Erro: Divisão por zero!")
        operacao_valida = False
else:
    print("Operação inválida!")
    operacao_valida = False

if operacao_valida:
    print(f"\nResultado da operação: {resultado}")
    
    # Verifica se é par ou ímpar
    if resultado % 2 == 0:
        print("- É um número par.")
    else:
        print("- É um número ímpar.")
        
    # Verifica se é positivo, negativo ou zero
    if resultado > 0:
        print("- É um número positivo.")
    elif resultado < 0:
        print("- É um número negativo.")
    else:
        print("- É neutro (zero).")
        
    # Verifica se é inteiro ou decimal
    if resultado.is_integer():
        print("- É um número inteiro.")
    else:
        print("- É um número decimal.")

  1. Formação e classificação de Triângulos

A grande sacada aqui foi primeiro validar se a soma de dois lados é maior que o terceiro. Só depois dessa validação principal eu entrei nos blocos if/elif para classificar o triângulo.

lado_a = float(input("Digite o lado A do triângulo: "))
lado_b = float(input("Digite o lado B do triângulo: "))
lado_c = float(input("Digite o lado C do triângulo: "))

# Verifica se os valores formam um triângulo
if (lado_a + lado_b > lado_c) and (lado_a + lado_c > lado_b) and (lado_b + lado_c > lado_a):
    print("\nOs valores podem formar um triângulo!")
    
    # Classificação
    if lado_a == lado_b == lado_c:
        print("Tipo: Triângulo Equilátero (três lados iguais).")
    elif lado_a == lado_b or lado_a == lado_c or lado_b == lado_c:
        print("Tipo: Triângulo Isósceles (dois lados iguais).")
    else:
        print("Tipo: Triângulo Escaleno (três lados diferentes).")
else:
    print("\nOs valores não podem formar um triângulo.")
  1. Calculadora de desconto de Combustível

Para deixar o código mais limpo, primeiro defini o preço base de cada combustível. Depois, criei as condições para descobrir a porcentagem exata de desconto antes de fazer o cálculo final do valor a ser pago.

tipo_combustivel = input("Informe o combustível (E - Etanol / D - Diesel): ").upper()
litros = float(input("Informe a quantidade de litros: "))

preco_etanol = 1.70
preco_diesel = 2.00
desconto = 0
preco_litro = 0
valido = True

if tipo_combustivel == 'E':
    preco_litro = preco_etanol
    if litros <= 15:
        desconto = 0.02
    else:
        desconto = 0.04
elif tipo_combustivel == 'D':
    preco_litro = preco_diesel
    if litros <= 15:
        desconto = 0.03
    else:
        desconto = 0.05
else:
    print("Tipo de combustível inválido!")
    valido = False

if valido:
    valor_bruto = preco_litro * litros
    valor_desconto = valor_bruto * desconto
    valor_pagar = valor_bruto - valor_desconto
    
    print(f"\nValor total sem desconto: R$ {valor_bruto:.2f}")
    print(f"Desconto aplicado: R$ {valor_desconto:.2f}")
    print(f"Valor a ser pago: R$ {valor_pagar:.2f}")
  1. Variação percentual de vendas de Imóveis

A fórmula de variação precisa ser bem estruturada ((atual - anterior) / anterior) * 100. Também organizei as condições em ordem decrescente, indo da variação mais alta para a mais baixa.

vendas_2022 = float(input("Informe a quantidade de vendas em 2022: "))
vendas_2023 = float(input("Informe a quantidade de vendas em 2023: "))

if vendas_2022 == 0:
    print("O número de vendas de 2022 não pode ser zero para esse cálculo.")
else:
    variacao = ((vendas_2023 - vendas_2022) / vendas_2022) * 100
    print(f"\nA variação de vendas foi de: {variacao:.2f}%\n")

    if variacao > 20:
        print("Sugestão: Bonificação para o time de vendas.")
    elif 2 <= variacao <= 20:
        print("Sugestão: Pequena bonificação para time de vendas.")
    elif -10 <= variacao < 2:
        print("Sugestão: Planejamento de políticas de incentivo às vendas.")
    else:
        print("Sugestão: Corte de gastos.")

Espero que ajude quem também está quebrando a cabeça nesses projetos. Bons estudos e muito código para todos nós!

2 respostas
solução!

Olá, Weriton. Como vai?

Parabéns pela iniciativa de compartilhar as suas resoluções! Essa é uma das melhores formas de fixar o conhecimento e ajudar outros colegas que estão trilhando a mesma jornada. Os seus códigos demonstram uma excelente maturidade lógica, organização de variáveis e ótimas escolhas técnicas.

Gostaria de destacar e complementar alguns pontos excelentes da sua implementação, além de sugerir pequenos detalhes de boas práticas para enriquecer ainda mais o seu repertório:

1. Desafio da Calculadora
A sua escolha em usar o método .is_integer() foi sensacional para verificar se o número é decimal ou inteiro de forma nativa e limpa.

  • Dica extra: No bloco onde você analisa se o número é par ou ímpar usando resultado % 2 == 0, o Python pode se comportar de forma inesperada caso o resultado seja um número decimal (por exemplo, 5.5 % 2 resulta em 1.5, fazendo com que ele caia no else e imprima que é ímpar). Uma boa prática de mercado seria aninhar essa verificação para rodar apenas se o número for realmente inteiro.

2. Formação e Classificação de Triângulos
A sua "grande sacada" está certíssima! Validar a existência do triângulo antes de classificá-lo economiza processamento e evita falsos diagnósticos no algoritmo. A sua linha de validação lógica (lado_a + lado_b > lado_c...) representa perfeitamente a regra da desigualdade triangular.

3. Calculadora de Desconto de Combustível
O seu código ficou extremamente limpo porque você centralizou o cálculo matemático no final do script, alterando apenas os fatores de preço e desconto nas condicionais. O uso do .upper() na entrada do combustível foi uma excelente sacada para evitar bugs caso o usuário digite letras minúsculas.

4. Variação Percentual de Vendas
Você teve um cuidado excelente de engenharia de software ao tratar a divisão por zero com o if vendas_2022 == 0:. Muitas pessoas esquecem desse detalhe e acabam gerando um erro crítico no sistema (ZeroDivisionError).

  • Dica de sintaxe: No Python, você pode simplificar a leitura de intervalos como fez no bloco elif 2 <= variacao <= 20:. Esse recurso é chamado de chaining (encadeamento de operadores) e torna o código muito elegante.

Continue com essa energia compartilhando seus códigos e soluções com a comunidade. Você está no caminho certo para se tornar um grande cientista ou analista de dados!

Espero que possa ter lhe ajudado!

Salve Evandro! Quero agradecer especialmente pela excelente observação no desafio da calculadora:

A questão de aninhar a validação de par/ímpar dentro da verificação de número inteiro foi uma dica cirúrgica! Realmente, não havia me atentado ao comportamento do operador módulo (%) ao lidar com floats (como o exemplo do 5.5 caindo como ímpar). É exatamente esse tipo de detalhe e tratamento de edge cases (casos extremos) que previnem bugs silenciosos em sistemas reais. Já anotei a correção aqui!

Também foi muito bacana descobrir o nome técnico do chaining (encadeamento de operadores). É um recurso que deixa a leitura do Python quase tão natural quanto ler a regra de negócio em português.

Agradeço mais uma vez pelo tempo dedicado a revisar o código e por enriquecer a postagem com essas dicas de mercado.

Um grande abraço e seguimos firmes nos estudos!