4
respostas

[Reclamação] APÓS CRIAR A PASTA APP.PY O TERMINAL NÃO TRAZ OS RESULTADOS

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Aparentemente não há erro, porém o terminal não está executando o comando. As pastas estão nos locais certos![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

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

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
4 respostas

Olá amigo.
Preciso do seu código completo para que possa analisar.
Aguardo...

Olá amigo.
Após analisar seu código com base nas imagens fornecidas:
Aparentemente o problema está no arquivo app.py.
Você criou a função main(), mas não está chamando ela em nenhum lugar.
Ou seja, o Python executa o arquivo, define a função, mas como não há chamada, nada acontece no terminal.
No final do seu app.py, adicione:

if __name__ == "__main__":
    main()

Ficaria assim:

# segundo criamos o módulo de importação
from modelos.restaurante import Restaurante
restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_mexicano = Restaurante('Mexican Food', 'Mexicana')
restaurante_japones = Restaurante('Japa', 'Japonesa')

restaurante_mexicano.alternar_estado()
# primeiro criamos o código principal
def main():
    Restaurante.listar_restaurantes()

if __name__ == "__main__":
    main()

Quando você roda python app.py, o Python executa o arquivo.

  • Sem esse if, ele apenas carrega as funções e classes.
  • Com ele, o main() é realmente chamado e vai executar o método listar_restaurantes().
    Testa isso e me diz se agora aparece a listagem no terminal.
    Se o erro persistir cola seu codigo completo aqui para que eu possa testar.
    Utilize o icone de codigo (</>)para facilitar a visualização e dividir os arquivos.
    Obrigado.

Olá amigo,

Obrigado,

A função até estava, porém o main estava aom aspas simples:

if name == 'main':
main()

Agora esta executando, minha questão agora está nos símbolos, por não estão carregando.

class Restaurante:

restaurantes = []

 # nome da classe por convenção sempre com a primeira letra maiuscula
def __init__(self, nome, categoria):  #o self é a referência 
    self._nome = nome.title() #vai .alterar o nome para a primeira letra do nome para maiuscula
    self._categoria = categoria.upper()  #vai alterar todas as .letras para maiúscula
    self._ativo = False   #A boa prática é todos os atributos com underline ( nome, categoria, ativo)
    Restaurante.restaurantes.append(self)

def __str__(self):
    return f'{self._nome} | {self._categoria}'

@classmethod  #por convenção usamos o class method para trazer todos os atributos dessa classe
def listar_restaurantes(cls):
    print(f'{'Nome do restaurante'.ljust(25)} |{'categoria'.ljust(25)} | {'Status'}')
    for restaurante in cls.restaurantes:
        print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {restaurante._ativo}')
@property  #decorator serve para mostrar algum atributo de forma diferente, nesse caso estamos decorando o ativo
def ativo(self):
    return '☒' if self._ativo else '☐'

def alternar_estado(self):
    self._ativo = not self._ativo

Aqui amigo mais uma vez...
Vamos tentar resolver o problema.
O método ativo, que retorna o símbolo "☒" ou "☐", nunca é chamado, e pode haver erros de estrutura.
Vamos corrigir e reestruturar a classe completa.
Aqui está a versão correta da classe Restaurante:

Classe corrigida:

class Restaurante:
    restaurantes = []

    def __init__(self, nome, categoria):
        self._nome = nome.title()
        self._categoria = categoria.upper()
        self._ativo = False
        Restaurante.restaurantes.append(self)

    def __str__(self):
        return f'{self._nome} | {self._categoria}'

    @classmethod
    def listar_restaurantes(cls):
        print(f'{"Nome do restaurante".ljust(25)} | {"Categoria".ljust(25)} | Status')
        for restaurante in cls.restaurantes:
            print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {restaurante.ativo}')

    @property
    def ativo(self):
        return '☒' if self._ativo else '☐'

    def alternar_estado(self):
        self._ativo = not self._ativo

O que estava errado ou faltando:

  1. Erro de formatação em listar_restaurantes:
    No print(f'{'Nome...)`, as aspas estavam mal formatadas. Corrigi para que o cabeçalho apareça corretamente.
  2. No listar_restaurantes, você usava restaurante._ativo diretamente:
    Isso imprime True ou False. Para mostrar os símbolos "☒"/"☐", você deve acessar a property ativo, ou seja, restaurante.ativo.

Exemplo de uso no arquivo principal (main.py):

from restaurante import Restaurante  # se a classe estiver em outro arquivo chamado restaurante.py

rest1 = Restaurante('pizzaria da mama', 'italiana')
rest2 = Restaurante('Sushi House', 'japonesa')
rest2.alternar_estado()  # ativa o restaurante

Restaurante.listar_restaurantes()

Saída esperada:

Nome do restaurante       | Categoria               | Status
Pizzaria Da Mama          | ITALIANA                | ☐
Sushi House               | JAPONESA                | ☒

Reforço que para uma analise correta preciso do código completo.
Todos os arquivos .py que compõe seu app.
Mas testa com estas mudanças e me envia o resultado.
Bons estudos.
E se tiver mais alguma duvida não deixe de perguntar.
Obrigado.