1
resposta

DESAFIO: HORA DA PRÁTICA - Momento dos projetos

10) Um programa deve ser escrito para ler dois números e, em seguida, perguntar à pessoa usuária qual operação ele deseja realizar. O resultado da operação deve incluir informações sobre o número - se é par ou ímpar, positivo ou negativo e inteiro ou decimal.

Programa que lê dois números e realiza uma operação escolhida pela pessoa usuária - O resultado inclui informações sobre par/ímpar, positivo/negativo e inteiro/decimal

Entrada dos números
num1 = float(input("Digite o primeiro número: "))
num2 = float(input("Digite o segundo número: "))

Escolha da operação
print("Escolha a operação: + (soma), - (subtração), * (multiplicação), / (divisão)")
operacao = input("Digite a operação desejada: ")

Realiza a operação
if operacao == "+":
resultado = num1 + num2
elif operacao == "-":
resultado = num1 - num2
elif operacao == "*":
resultado = num1 * num2
elif operacao == "/":
if num2 != 0:
resultado = num1 / num2
else:
print("Erro: divisão por zero não é permitida.")
exit()
else:
print("Operação inválida.")
exit()

Exibe o resultado
print("Resultado da operação:", resultado)

Verifica se é par ou ímpar (apenas se for inteiro)
if resultado % 2 == 0:
print("O resultado é par.")
elif resultado % 2 != 0:
print("O resultado é ímpar.")

Verifica se é positivo ou negativo
if resultado > 0:
print("O resultado é positivo.")
elif resultado < 0:
print("O resultado é negativo.")
else:
print("O resultado é zero.")

Verifica se é inteiro ou decimal
if resultado % 1 == 0:
print("O resultado é um número inteiro.")
else:
print("O resultado é um número decimal.")

**11) Escreva um programa que peça à pessoa usuária três números que representam os lados de um triângulo. O programa deve informar se os valores podem ser utilizados para formar um triângulo e, caso afirmativo, se ele é equilátero, isósceles ou escaleno. **

Programa que verifica se três lados podem formar um triângulo e identifica o tipo de triângulo

lado1 = float(input("Digite o primeiro lado: "))
lado2 = float(input("Digite o segundo lado: "))
lado3 = float(input("Digite o terceiro lado: "))

Primeiro, valida se os lados são positivos
if lado1 <= 0 or lado2 <= 0 or lado3 <= 0:
print("Os lados devem ser valores positivos.")
else:
# Verifica a condição da desigualdade triangular
if (lado1 + lado2 > lado3) and (lado1 + lado3 > lado2) and (lado2 + lado3 > lado1):
print("Os valores podem formar um triângulo.")

Classificação do triângulo
if lado1 == lado2 == lado3:
print("O triângulo é Equilátero (três lados iguais).")
elif lado1 == lado2 or lado1 == lado3 or lado2 == lado3:
print("O triângulo é Isósceles (dois lados iguais).")
else:
print("O triângulo é Escaleno (três lados diferentes).")
else:
print("Os valores fornecidos NÃO podem formar um triângulo.")

12) Um estabelecimento está vendendo combustíveis com descontos variados. Para o etanol, se a quantidade comprada for até 15 litros, o desconto será de 2% por litro. Caso contrário, será de 4% por litro. Para o diesel, se a quantidade comprada for até 15 litros, o desconto será de 3% por litro. Caso contrário, será de 5% por litro. O preço do litro de diesel é R$ 2,00 e o preço do litro de etanol é R$ 1,70. Escreva um programa que leia a quantidade de litros vendidos e o tipo de combustível (E para etanol e D para diesel) e calcule o valor a ser pago pelo cliente. Tenha em mente algumas dicas:

Programa que calcula o valor a ser pago por combustível com desconto

Entrada de dados
litros = float(input("Digite a quantidade de litros vendidos: "))
tipo = input("Digite o tipo de combustível (E para etanol, D para diesel): ").upper()

Preços por litro
preco_etanol = 1.70
preco_diesel = 2.00

Cálculo do valor e desconto
if tipo == "E":
if litros <= 15:
desconto_percentual = 0.02
else:
desconto_percentual = 0.04
preco_litro = preco_etanol

elif tipo == "D":
if litros <= 15:
desconto_percentual = 0.03
else:
desconto_percentual = 0.05
preco_litro = preco_diesel

else:
print("Tipo de combustível inválido!")
exit()

Valor bruto
valor_bruto = preco_litro * litros

Valor do desconto
valor_desconto = valor_bruto * desconto_percentual

Valor final
valor_final = valor_bruto - valor_desconto

print(f"Valor bruto: R$ {valor_bruto:.2f}")
print(f"Desconto aplicado: R$ {valor_desconto:.2f}")
print(f"Valor a pagar: R$ {valor_final:.2f}")

1 resposta

Olá, Penha. Como vai?

Que entrega espetacular de projetos! Resolver três desafios complexos de uma vez só, aplicando validações e regras de negócio tão detalhadas, demonstra que você está dominando com maestria as estruturas condicionais (if, elif, else) no Python.

Assim como nos exercícios anteriores, a lógica de todos os algoritmos está impecável. Destaco como excelente prática o uso do método .upper() no Desafio 12, que padroniza a entrada do usuário e evita erros caso a pessoa digite as letras "e" ou "d" em minúsculo, além da formatação de moeda com duas casas decimais ({valor_final:.2f}).

Analisando o seu código, separei alguns pontos de atenção e melhorias de sintaxe que vão deixar seus scripts ainda mais refinados:

1. Cuidado com o Erro de Lógica Oculto no Desafio 10
No Python, se o resultado de uma operação for, por exemplo, 5.5, a condição de par ou ímpar será testada mesmo assim. Como 5.5 % 2 resulta em 1.5 (que é diferente de zero), o programa imprimirá que o resultado é ímpar, o que conceitualmente está incorreto, pois paridade só se aplica a números inteiros.

Para resolver isso de forma elegante, podemos aninhar o teste de par/ímpar dentro da validação se o número é inteiro. Veja no código abaixo.

2. Ajuste na Classificação do Triângulo (Desafio 11)
Na estrutura do seu código para o triângulo, o bloco de classificação (if lado1 == lado2 == lado3: ...) acabou ficando fora do if que valida a desigualdade triangular por conta do recuo das margens. Lembre-se sempre de manter esse bloco indentado dentro da validação para que ele só tente classificar se for um triângulo válido.

Veja como ficaria o Desafio 10 reestruturado com a correção da paridade e com a indentação correta para o Python rodar perfeitamente:

# Trecho final do Desafio 10 corrigido e indentado

print("Resultado da operação:", resultado)

# Primeiro verifica se o número é inteiro
if resultado % 1 == 0:
    print("O resultado é um número inteiro.")
    # Se for inteiro, faz o teste de paridade com segurança
    if resultado % 2 == 0:
        print("O resultado é par.")
    else:
        print("O resultado é ímpar.")
else:
    print("O resultado é um número decimal (e números decimais não possuem paridade).")

# Verifica se é positivo ou negativo
if resultado > 0:
    print("O resultado é positivo.")
    
elif resultado < 0:
    print("O resultado é negativo.")
else:
    print("O resultado é zero.")

Com esses pequenos ajustes de fluxo e organização do recuo do texto, suas soluções ficam totalmente blindadas contra falhas de execução e erros conceituais matemáticos.

Você tem demonstrado uma evolução incrível a cada postagem no fórum. Continue com esse foco nos detalhes!

Espero que possa ter lhe ajudado!