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

[Desafio 3] Resolução dos problemas lendo a documentação do Python

Olá pessoal, espero que esta mensagem os encontrem bem ao tempo da leitura:

Estou compartilhando os principais pontos que achei pertinente demonstrar a minha solução para o desafio, as respostas completas pode ser visualizada no projeto: https://github.com/vitorkol/python-for-data disponibilizado no meu github.

Questão 2

# Sei que a linha 6 poderia ser removida, mas quis deixar para demonstrar que a produção da empresa estagnou.
metaCrescimento = 3
print(f'Como gerente comercial, seu objetivo é bater a meta de produção de {metaCrescimento}% solicitada pela empresa!')

percentualAlcancado = int(input('Informe o percentual alcançado de produção:'))

if percentualAlcancado == metaCrescimento:
    print(f'Crescimento Positivo. O percentual alcançado {percentualAlcancado}% não bateu a meta da empresa de {metaCrescimento}%.')
elif 0 <= percentualAlcancado < metaCrescimento:
    print(f'Crescimento Positivo. O percentual alcançado {percentualAlcancado}% não bateu a meta da empresa de {metaCrescimento}%.')
elif percentualAlcancado > metaCrescimento:
    print(f'Crescimento Positivo. O percentual alcançado {percentualAlcancado}% superou a meta da empresa de {metaCrescimento}%.')
else:
    print(f'Decrescimento. O percentual alcançado {percentualAlcancado}% foi inferior a meta projetada pela empresa de {metaCrescimento}%.')

Questão 4

# Aplicando o conceito aprendido na de operadores logicos trabalhando com lista.
# Criei uma lista para coletar os dados.
precoMedioAno = [
    float(input('Informe o preço no 1º ano: ')),
    float(input('Informe o preço no 2º ano: ')),
    float(input('Informe o preço no 3º ano: '))
]

# Ao ler a documentação do python, vim que tem a função min, max e apliquei no exercício.
maior = max(precoMedioAno)
menor = min(precoMedioAno)

# 3. Exibição formatada
print(f'O preço médio mais alto foi de: R${maior:.2f}')
print(f'O preço médios mais baixo foi de: R${menor:.2f}')

Questão 6

# Aplicando o conceito aprendido na de operadores logicos trabalhando com lista.
# Criei uma lista para coletar os dados.
numero = [
    float(input('Informe o primeiro número: ')),
    float(input('Informe o segundo número: ')),
    float(input('Informe o terceiro número: '))
]
# Lendo a documentação do pyton vi que a função sort() que ordena, e para imprimir na ordem decrescente tenho que usar o reverse = true
decrescente = sorted(numero, reverse=True)
print(f'Ordem dos números digitada pelo usuário: {numero}.')
print(f'Ordem decrescente dos números: {decrescente}.')

Questão 7

# Coletando o turno e já tratando a entrada (minúsculo e sem espaços extras), aplicando os conceitos de manipulação de strings ensinado no curso
turno = input('Em qual turno você estuda? (M-manhã, T-tarde, N-noite): ').lower().strip()

if turno == 'manhã' or turno == 'm':
    print('Bom Dia!')
elif turno == 'tarde' or turno == 't':
    print('Boa Tarde!')
elif turno == 'noite' or turno == 'n':
    print('Boa Noite!')
else:
    print('Erro: Turno não reconhecido. Use M, T ou N.')

Questão 10

# Colentando os dados primários para execução do programa
num1 = float(input("Digite o primeiro número: "))
num2 = float(input("Digite o segundo número: "))
operacao = input("Qual operação deseja realizar? (+, -, *, /): ").strip()

resultado = 0
# Criei a flag valido, porque se a operação for inválida, o programa avisa e não tenta analisar o número, pois não faz sentido analisar um erro.
valido = True

# Estrutura if else usada para tomar de decisão para 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 Crítico: Divisão por zero não é permitida na física ou matemática. Operação Cancela!")
        valido = False
else:
    print(f"O operador usado: {operacao}, resultou em uma operação inválida. Operação cancelada!")
    valido = False

# validando as entradas de dados, se o usuário inserir uma informação não válida, o programa só irá executar se a operação for válida.
if valido:
    # Tratando valores pares ou ímpares (usando o módulo % que aprendemos!)
    par_impar = "par" if resultado % 2 == 0 else "ímpar"
    # Observação: tratando resultados positivo negativo.
    if resultado > 0:
        pos_neg = "positivo"
    elif resultado < 0:
        pos_neg = "negativo"
    else:
        pos_neg = "neutro (zero)"
    # Observação: tratando resultados decimal.
    tipo = "inteiro" if resultado == int(resultado) else "decimal"
    print(f"\nResultado da operação: {resultado}")
    print(f"O número é {par_impar}, {pos_neg} e {tipo}.")

Espero que tenha contribuído para o estudo de todos!

3 respostas

Ah um detalhe muito importante que eu esqueci de comentar, até mesmo porque a quantidade de caracteres não permitiam; é que não minha Questão 10 eu fiz um tratamento para evitar analise desnecessário de código quando um operador é passado diferente dos tipos informados e de falsos positivos.

A imagem a seguir exemplificando a sugestão da professora:
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
A imagem a seguir exemplificando a minha solução:
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Dessa forma o custo computacional é preservado, porque o programa não vai para os próximos passos!

Fico totalmente aberto ao diálogo e à construção conjunta.

Espero ter contribuído um pouco mais para os estudos de nossos colegas do fórum!

solução!

Olá, Vitor! Como vai?

Realmente o custo computacional impacta muito em códigos de larga escala, é muito válido sempre lembrarmos disso!

E observei que você explorou o uso de operadores lógicos e manipulação de listas para organizar dados em Python, utilizou muito bem funções como min(), max() e sorted() para simplificar cálculos e ainda compreendeu a importância de validar entradas e estruturar condições claras para evitar erros durante a execução.

Continue trazendo suas observações, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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

Olá Daniel, obrigado pelo retorno e fico feliz que as minhas contribuições possam auxiliar a outros colegas!
Tenha uma excelente semana.