(3 pontos) Implemente um programa utilizando a classe de produto descrita no enunciado da questão 2, que permita controlar o estoque de 5 produtos em memória. O cadastro dos 5 produtos ocorre no início da execução do programa. Depois, o sistema deve apresentar um menu que permite ao usuário realizar as operações de alteração de estoque para qualquer um dos produtos desejados.

Passo 1

Beleza, vamos lá! O enunciado pede para a gente criar um programa que gerencia o estoque de 5 produtos usando uma classe de produto. Isso envolve conceitos de Programação Orientada a Objetos (POO), onde vamos utilizar classes e objetos para representar os produtos. Vamos precisar também de estruturas de dados como listas para armazenar os produtos e implementar um menu interativo para alterar o estoque conforme a necessidade.

Passo 2

Primeiro, vamos definir a classe Produto. Uma classe é como um molde que define as características dos objetos que vamos criar. No nosso caso, cada produto vai ter atributos como nome, preço e quantidade em estoque.
class Produto:
    def __init__(self, nome, preco, quantidade):
        self.nome = nome
        self.preco = preco
        self.quantidade = quantidade

    def atualizar_estoque(self, quantidade):
        self.quantidade = quantidade
Aqui, o método __init__ é o construtor da classe, que inicializa os atributos do produto. O método atualizar_estoque vai nos ajudar a mudar a quantidade em estoque quando necessário.

Passo 3

Agora, vamos criar uma lista para armazenar os 5 produtos. No início do programa, vamos pedir para o usuário inserir os detalhes de cada produto.
produtos = []

for i in range(5):
    print(f"Cadastro do Produto {i+1}")
    nome = input("Nome do produto: ")
    preco = float(input("Preço do produto: "))
    quantidade = int(input("Quantidade em estoque: "))
    produto = Produto(nome, preco, quantidade)
    produtos.append(produto)
    print("Produto cadastrado com sucesso!\n")
Aqui, usamos um loop for para repetir o processo de cadastro 5 vezes. Para cada produto, solicitamos o nome, preço e quantidade, criamos um objeto Produto e adicionamos à lista produtos.

Passo 4

Depois de cadastrar os produtos, vamos criar um menu que permite ao usuário alterar a quantidade em estoque de qualquer produto. O menu vai continuar aparecendo até que o usuário escolha sair.
while True:
    print("Menu de Operações:")
    print("1. Ver estoque de todos os produtos")
    print("2. Atualizar estoque de um produto")
    print("3. Sair")
    escolha = input("Escolha uma opção: ")

    if escolha == '1':
        print("\nEstoque Atual:")
        for idx, produto in enumerate(produtos, start=1):
            print(f"{idx}. {produto.nome} - Preço: R${produto.preco:.2f} - Quantidade: {produto.quantidade}")
        print()

    elif escolha == '2':
        try:
            num = int(input("Digite o número do produto que deseja atualizar: "))
            if 1 <= num <= 5:
                nova_quantidade = int(input("Digite a nova quantidade: "))
                produtos[num-1].atualizar_estoque(nova_quantidade)
                print("Estoque atualizado com sucesso!\n")
            else:
                print("Número de produto inválido. Tente novamente.\n")
        except ValueError:
            print("Entrada inválida. Por favor, digite um número.\n")

    elif escolha == '3':
        print("Saindo do programa. Até mais!")
        break

    else:
        print("Opção inválida. Por favor, escolha novamente.\n")
Neste trecho:
  • Opção 1: Mostra o estoque de todos os produtos listados.
  • Opção 2: Permite que o usuário escolha qual produto deseja atualizar a quantidade. Verificamos se o número escolhido está entre 1 e 5 para evitar erros.
  • Opção 3: Sai do programa.
  • Validação: Usamos try e except para tratar possíveis erros de entrada, garantindo que o usuário insira números válidos.

Resposta

Aqui está o programa completo que controla o estoque de 5 produtos conforme o enunciado:
class Produto:
    def __init__(self, nome, preco, quantidade):
        self.nome = nome
        self.preco = preco
        self.quantidade = quantidade

    def atualizar_estoque(self, quantidade):
        self.quantidade = quantidade

def main():
    produtos = []

    # Cadastro dos 5 produtos
    for i in range(5):
        print(f"Cadastro do Produto {i+1}")
        nome = input("Nome do produto: ")
        preco = float(input("Preço do produto: "))
        quantidade = int(input("Quantidade em estoque: "))
        produto = Produto(nome, preco, quantidade)
        produtos.append(produto)
        print("Produto cadastrado com sucesso!\n")

    # Menu de operações
    while True:
        print("Menu de Operações:")
        print("1. Ver estoque de todos os produtos")
        print("2. Atualizar estoque de um produto")
        print("3. Sair")
        escolha = input("Escolha uma opção: ")

        if escolha == '1':
            print("\nEstoque Atual:")
            for idx, produto in enumerate(produtos, start=1):
                print(f"{idx}. {produto.nome} - Preço: R${produto.preco:.2f} - Quantidade: {produto.quantidade}")
            print()

        elif escolha == '2':
            try:
                num = int(input("Digite o número do produto que deseja atualizar: "))
                if 1 <= num <= 5:
                    nova_quantidade = int(input("Digite a nova quantidade: "))
                    produtos[num-1].atualizar_estoque(nova_quantidade)
                    print("Estoque atualizado com sucesso!\n")
                else:
                    print("Número de produto inválido. Tente novamente.\n")
            except ValueError:
                print("Entrada inválida. Por favor, digite um número.\n")

        elif escolha == '3':
            print("Saindo do programa. Até mais!")
            break

        else:
            print("Opção inválida. Por favor, escolha novamente.\n")

if __name__ == "__main__":
    main()
Como usar o programa:
  1. Cadastro: Ao iniciar, o programa vai pedir para você cadastrar 5 produtos, enviando o nome, preço e quantidade de cada um.
  2. Menu:
    • Opção 1: Mostra a lista completa de produtos com seus preços e quantidades.
    • Opção 2: Permite que você atualize a quantidade em estoque de qualquer produto específico.
    • Opção 3: Encerra o programa.
Exemplo de interação:
Cadastro do Produto 1
Nome do produto: Caneta
Preço do produto: 1.50
Quantidade em estoque: 100
Produto cadastrado com sucesso!

... (cadastro dos demais produtos)

Menu de Operações:
1. Ver estoque de todos os produtos
2. Atualizar estoque de um produto
3. Sair
Escolha uma opção: 1

Estoque Atual:
1. Caneta - Preço: R$1.50 - Quantidade: 100
2. Lápis - Preço: R$0.80 - Quantidade: 200
... 

Menu de Operações:
1. Ver estoque de todos os produtos
2. Atualizar estoque de um produto
3. Sair
Escolha uma opção: 2
Digite o número do produto que deseja atualizar: 1
Digite a nova quantidade: 150
Estoque atualizado com sucesso!

... (continua até escolher sair)
Pronto! Com esse programa, você consegue controlar facilmente o estoque de 5 produtos, atualizando as quantidades conforme necessário.

Exercícios relacionados

(3,5 pontos) Implemente uma classe que represente um produto em estoque (código, descrição, quantidade). Esta classe deve possuir, além dos métodos necessários para a atribuição inicial de valores, outros dois que permitam alterar a quantidade do produto. O primeiro método deve servir para adicionar uma quantidade ao estoque já existente. O segundo método deve servir para remover uma quantidade ao estoque já existente. Depois de criar tal classe escreva um programa que permita informar valores iniciais para um produto, depois alterar a sua quantidade em estoque e, em seguida, apresentar as informações finais do mesmo.
Dica: exemplo da assinatura dos métodos de alteração de quantidade:
void adicionar(int quantidade);
void remover(int quantidade);
(3,5 pontos) Crie uma classe para modelar um aluno (nome, média, frequência). A classe deve disponibilizar métodos para cadastrar os dados do aluno. Além disso, a classe deve disponibilizar um método que permita consultar se o aluno está aprovado ou reprovado. O método retornará 1 caso o aluno esteja aprovado e 0 caso o aluno esteja reprovado. O aluno aprovado é aquele que tem média igual ou superior a 6 e frequência igual ou superior a 75.
Crie então um programa, utilizando a classe criada, que permita ao usuário informar os dados de um aluno. O programa deve então exibir na tela se o aluno está aprovado ou reprovado.
Crie um programa (notas_lista.py) que cria uma lista com 10 posições e peça para o usuário entrar com as 10 notas. As notas podem ser números reais.