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

[Projeto] Após loop o progama encerra

criei um código para registrar receitas de drinks, a princípio ele estava assim:

class Drink:
    carta_drinks = []
    
    def __init__ (self, nome, copo, metodo_preparo, ingredientes):
        self.nome = nome
        self.copo = copo
        self.metodo_preparo = metodo_preparo
        self.ingredientes = ingredientes
    
    @classmethod
    def criar_drink(cls):
        nome = input('Nome do Drink: ')
        copo = input('Taça ou Copo: ')
        metodo_preparo = input('Método de preparo: ')
        
        novo_drink = cls(nome=nome, copo=copo, metodo_preparo=metodo_preparo)
        
        cls.carta_drinks.append({
            'Drink' : novo_drink.nome,
            'Método de preparo' : novo_drink.metodo_preparo,
            'Copo' : novo_drink.copo,
            
        })    
        
        return novo_drink

drink_adicionado = Drink.criar_drink()

porém precisava incluir os ingredientes, fiz essas alterações:

class Drink:
    carta_drinks = []
    
    def __init__ (self, nome, copo, metodo_preparo, ingredientes):
        self.nome = nome
        self.copo = copo
        self.metodo_preparo = metodo_preparo
        self.ingredientes = ingredientes
    
    @classmethod
    def criar_drink(cls):
        nome = input('Nome do Drink: ')
        copo = input('Taça ou Copo: ')
        metodo_preparo = input('Método de preparo: ')
        numero_ingrediente = int(input('Quantos ingredientes: '))
        
        ingredientes = []
        for i in range(numero_ingrediente):
            ingrediente_nome = input(f'Nome do ingrediente {i + 1}: ')
            ingredientes.append(ingrediente_nome)
        
        novo_drink = cls(nome=nome, copo=copo, metodo_preparo=metodo_preparo, ingredientes=ingredientes)
        
        cls.carta_drinks.append({
            'Drink' : novo_drink.nome,
            'Método de preparo' : novo_drink.metodo_preparo,
            'Copo' : novo_drink.copo,
            'Ingredientes' : novo_drink.ingredientes
        })    
        
        return novo_drink

drink_adicionado = Drink.criar_drink()

O problema agora está que após o loop for, o programa encerra. não sei como resolver

4 respostas

Oii, Rafael! Tudo joia?

Como sugestão, você pode colocar a chamada à função Drink.criar_drink() dentro do loop. Dessa forma, após a criação de um drink, o programa irá perguntar se você deseja criar outro.

Espero que a sugestão te ajude. Qualquer dúvida, compartilhe no fórum.

Bons estudos, Rafael!

Obrigado, acho que funcionou, mas estou com outro problema também

import os
from cocktail import Drink
from bebida import Bebidas
from refrigerantes import Refrigerantes
from fruta import Frutas
from xarope import Xaropes

ingredientes = []
receitas = []

def exibir_titulo():
    print('Bar em Casa\n')

def finalizar_app():
    os.system('cls')
    print('Beba com moderação')

def voltar_ao_menu():
    input('\nPressione qualque tecla para voltar ao menu ')
    main()

def opcao_invalida():
    print('Opção inválida\n')
    voltar_ao_menu()

def exibir_opcoes():
    print('1 - Registrar Receita')
    print('2 - Incluir Ingrediente')
    print('3 - Listar Drinks Possíveis')
    print('4 - Listar Ingredientes')
    print('5 - Finalizar app\n')

def incluir_ingrediente():
    pass
    
def registrar_receita():
    drink_adicionado = Drink.criar_drink()
    receitas.append(Drink.carta_drinks[-1]) 
    voltar_ao_menu()

def listar_drinks():
    print(receitas)
    voltar_ao_menu()

def listar_ingredientes():
    print(ingredientes)
    voltar_ao_menu()

def escolher_opcao():
    try:
        opcao_escolhida = int(input('Escolha uma opção: '))
        
        if opcao_escolhida == 1: 
            registrar_receita()
        elif opcao_escolhida == 2: 
            incluir_ingrediente()
        elif opcao_escolhida == 3: 
            listar_drinks()
        elif opcao_escolhida == 4:
            listar_ingredientes()
        elif opcao_escolhida == 5: 
            finalizar_app()
        else: 
            opcao_invalida()
    except:
        opcao_invalida()

def main():
    os.system('cls')
    exibir_titulo()
    exibir_opcoes()
    escolher_opcao()

if __name__ == '__main__':
    main()

fiz a modularização para iniciar os outros programas a aprtir do main.py, o problema é quando o main.py é iniciado ele começa como se fosse o cocktail.py

solução!

Oii, Rafael! Tudo bem?

Peço desculpas pela demora em obter o retorno.

Fico feliz que deu certo!

Rafael, isso pode ocorrer devido ao modo que módulos foram importados e como as instâncias das classes foram criadas. Então revise em seu código como um todo, se o main.pyestá chamando os métodos e classes dos outros módulos, corretamente. Se não possui algum erro de sintaxe também é valido. Além disso, veja se os métodos estão implementados dentro da lógica.

Espero que a sugestão te ajude, conte conosco qualquer coisa.

Abraço!

Quando eu refizer o código eu vou observar isso, infelizmente apaguei sem querer e não fiz commit de nada hahahhahahhah

mas obrigado pela resposta