1
resposta

[Projeto] Desafio: hora da prática

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

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:


1. Simplificação Lógica na Ordem Decrescente e Produto Mais Barato

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)

2. Cuidados com Divisão por Zero na Calculadora

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?