







Olá, Silvana. Como vai?
Meus parabéns pela dedicação e pela resolução completa desse imenso caderno de exercícios! Tirar os códigos do papel, estruturá-los em arquivos Python e testar cada uma das saídas no console (como você fez de maneira brilhante nas imagens) é a melhor e mais rápida forma de consolidar a lógica de programação.
Seus códigos demonstram uma excelente compreensão das estruturas condicionais if, elif e else, além de um ótimo uso de operadores lógicos como o and, métodos de string como .upper() e .lower(), e o operador de pertencimento in.
Para enriquecer o seu post e trazer algumas sugestões de melhoria para os seus estudos, separei duas análises sobre pontos específicos dos seus algoritmos que podem te ajudar a escrever códigos ainda mais limpos e eficientes no seu dia a dia:
No seu exercício de ordenar três números de forma decrescente (e na lógica de encontrar o produto mais barato), você construiu estruturas de if/elif/else bem profundas, testando manualmente várias combinações possíveis. Essa abordagem funciona, mas é fácil se perder em meio a tantos blocos.
Na programação real com Python, quando precisamos apenas ordenar ou extrair valores extremos (mínimos e máximos), nós confiamos nas funções nativas da linguagem. Elas reduzem dezenas de linhas de condicionais para apenas uma linha direta.
Veja como o seu exercício de valor mais alto e mais baixo (que você resolveu super bem com a lógica de inicializar as variáveis maior e menor) e o de ordem decrescente ficariam usando as funções max(), min() e sorted():
# --- Simplificando Valor Mais Alto e Mais Baixo ---
preco_ano1 = float(input('Informe o preço médio no primeiro ano: '))
preco_ano2 = float(input('Informe o preço médio no segundo ano: '))
preco_ano3 = float(input('Informe o preço médio no terceiro ano: '))
# O Python encontra os extremos instantaneamente para você:
maior = max(preco_ano1, preco_ano2, preco_ano3)
menor = min(preco_ano1, preco_ano2, preco_ano3)
print(f'O preço mais alto foi de R$ {maior:.2f}')
print(f'O preço mais baixo foi de R$ {menor:.2f}')
# --- Simplificando a Ordem Decrescente ---
num1 = int(input('Informe o primeiro número: '))
num2 = int(input('Informe o segundo número: '))
num3 = int(input('Informe o terceiro número: '))
# Colocamos os números em uma lista e pedimos para o Python ordenar de forma reversa
numeros_ordenados = sorted([num1, num2, num3], reverse=True)
print("Números em ordem decrescente:")
for num in numeros_ordenados:
print(num)
No seu script da calculadora ("Momento dos projetos"), você construiu uma ótima validação para verificar as propriedades do resultado da operação (se é par/ímpar, positivo/negativo ou inteiro/decimal).
No entanto, há uma "pegadinha" clássica de engenharia de software na operação de divisão (/): o usuário pode digitar o número 0 como o segundo número. Se isso acontecer, a linha resultado = num1 / num2 quebrará o programa imediatamente com um erro crítico de ZeroDivisionError.
Uma excelente prática de proteção é interceptar essa possibilidade no exato momento da operação. Veja como o seu bloco elif operacao == '/': pode ganhar uma camada de segurança:
elif operacao == '/':
if num2 == 0:
print("Erro: Não é possível realizar uma divisão por zero!")
resultado = 0
else:
resultado = num1 / num2
Sua divisão de tarefas e a consistência em testar cenários variados — como o cálculo de variação percentual de vendas, a classificação de triângulos e a validação do turno de estudos — mostra que você está construindo uma base fantástica em Data Science.
Qual desses exercícios você achou mais desafiador de estruturar logicamente?