4
respostas

comando ljust dentro de um print

estou fazendo passo a passo das aulas apresentadas no vídeo alterando o texto e compilando na sequencia.

a linha que faz o cabeçário da função listar_restaurantes não funciona de forma alguma print(f'{'Nome do restaurante'.ljust(22)} | {'Categoria'.ljust(20)} | Status')

e apresenta o seguinte erro de syntax:

File "c:\Users\dutra\OneDrive - Cepel.br\Área de Trabalho\ALURA\sabor-express\app.py", line 54 print(f'{'Nome do restaurante'.ljust(22)} | {'Categoria'.ljust(20)} | Status') ^^^^ SyntaxError: f-string: expecting '}'

só consegui executar o cabeçário declarando Nome do restaurante e Categoria como variáveis e ai deu certo. Olha só como ficou:

nome_restaurante = 'Nome do restaurante'
categoria = 'categoria'  
print(f'{nome_restaurante.ljust(22)} | {categoria.ljust(20)} | Status')

Alguma ideia do porque não funcionou?

4 respostas

Acabei de concluir esse curso, acho que consigo te ajudar.

Pode mandar o código da função inteira, por favor ?

Imagem com o código e o respectivo output!

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

OLá Guilherme, obrigado pela ajuda

o código que dá o erro é o seguinte:

def listar_restaurantes():
    exibir_subtitulo('Listando os restaurantes cadastrados')
    print(f'{'Nome do restaurante'.ljust(22)} | {'Categoria'.ljust(20)} | Status')
    #nome_restaurante = 'Nome do restaurante'
    #categoria = 'categoria'  
    #print(f'{nome_restaurante.ljust(22)} | {categoria.ljust(20)} | Status')


    for restaurante in restaurantes:
        nome_restaurante = restaurante['nome']
        categoria = restaurante['categoria']
        ativo = 'ativado' if restaurante['ativo'] else 'desativado'
        print(f'- {nome_restaurante.ljust(20)} | {categoria.ljust(20)} | {ativo.ljust(20)}')

    voltar_ao_menu_principal()

A resposta de erro no prompt é a seguinte:

PS C:\Users\dutra\OneDrive - Cepel.br\Área de Trabalho\ALURA\sabor-express> & C:/Python310/python.exe "c:/Users/dutra/OneDrive - Cepel.br/Área de Trabalho/ALURA/sabor-express/app.py" File "c:\Users\dutra\OneDrive - Cepel.br\Área de Trabalho\ALURA\sabor-express\app.py", line 54 print(f'{'Nome do restaurante'.ljust(22)} | {'Categoria'.ljust(20)} | Status') ^^^^ SyntaxError: f-string: expecting '}'

logo abaixo do print(f'{'Nome do restaurante'.ljust(22)} | {'Categoria'.ljust(20)} | Status')que é a origem do erro, eu coloquei a solução que encontrei para fazer o cabeçário.

Mais uma vez obrigado pela ajuda

Olá Ricardo,

Eu testei sua função no meu código, e funcionou sem problemas:

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

Já que não é a função o problema, creio que possa estar na identação, formatação ou algo do tipo. Se conseguir me mandar o código completo, ai eu posso testar assim que possível. Vamos nos ajudando, qualquer coisa pode mandar!

Aliás, eu separei meu código em dois: app.py e funcoes.py, vou disponibilizá-los aqui.

app.py

import funcoes

restaurantes = [{'nome':'Praça', 'categoria':'Japonesa', 'ativo':False}, 
                {'nome':'Pizza Suprema', 'categoria':'Pizza', 'ativo':True},
                {'nome':'Cantina', 'categoria':'Italiano', 'ativo':False}]


if __name__ == '__main__':
    funcoes.main()

funcoes.py

import os
import app
import time


def finalizar_app():
    sub_titulo('Finalizando o app!')
    time.sleep(3)
    print('App finalizado!')


def exibir_nome_do_programa():
    print('''
    █▀ ▄▀█ █▄▄ █▀█ █▀█   █▀▀ ▀▄▀ █▀█ █▀█ █▀▀ █▀ █▀
    ▄█ █▀█ █▄█ █▄█ █▀▄   ██▄ █░█ █▀▀ █▀▄ ██▄ ▄█ ▄█
    ''')


def exibir_opcoes():
    print('1. Cadastrar restaurante')
    print('2. Listar restaurantes')
    print('3. Alterar estado de restaurantes')
    print('4. Sair\n')


def escolher_opcao():
    try:
        opcao_escolhida = int(input('\nEscolha uma opção: '))
        if opcao_escolhida == 1:
            cadastrar_novos_restaurantes()
        elif opcao_escolhida == 2:
            listar_restaurantes()
        elif opcao_escolhida == 3:
            ativar_restaurantes()
        else:
            finalizar_app()
    except:
        opcao_invalida()


#FUNÇÃO PARA CADASTRAR NOVOS RESTAURANTES
def cadastrar_novos_restaurantes():
    '''Essa função é responsável por cadastrar um novo restaurante
    - Nome do restaurante
    - Categoria

    Output:
    - Adiciona um novo restaurante à lista de restaurantes
    '''
    sub_titulo('Cadastro de novos restaurantes')
    nome_do_restaurante = input('Digite o nome do restaurante que deseja cadastrar: ')
    categoria = input(f'Digite o nome da categoria do restaurante {nome_do_restaurante}: ')
    app.restaurantes.append ({'nome':nome_do_restaurante, 'categoria':categoria, 'ativo':False})
    print('\nAguarde um momento, estamos realizando o cadastro em nosso banco de dados!\n')
    time.sleep(2.5)
    print(f'\nO restaurante {nome_do_restaurante} foi cadastrado com sucesso!')
    voltar_menu_principal()


def listar_restaurantes():
    sub_titulo('Listando os restaurantes')
    incrementador = 1
    print(f'            {'Nome do Restaurante'.ljust(20)}     |     {'Categoria'.ljust(20)}     |     Status')
    print('_____________________________________|______________________________|_____________________________________')
    print('                                     |                              |                                     ')
    for restaurante in app.restaurantes:
        nome_do_restaurante = restaurante['nome']
        categoria = restaurante['categoria']
        ativo = 'Ativado' if restaurante['ativo'] else 'Desativado'
        print(f' {incrementador}          {nome_do_restaurante.ljust(20)}     |     {categoria.ljust(20)}     |     {ativo}')
        incrementador += 1
    voltar_menu_principal()


def ativar_restaurantes():
    sub_titulo('Alterando estado do restaurante')
    nome_restaurante = input('Digite o nome do restaurante que deseja alterar o estado: ')
    restaurante_encontrado = False
    for restaurante in app.restaurantes:
        if nome_restaurante == restaurante['nome']:
            restaurante_encontrado = True
            restaurante['ativo'] = not restaurante['ativo']
            mensagem = f'O restaurante {nome_restaurante} foi ativado com sucesso' if restaurante['ativo'] else f'O restaurante {nome_restaurante} foi desativado com sucesso'
            print(mensagem)
    if not restaurante_encontrado: 
        print('Restaurante não encontrado')            
    voltar_menu_principal()


def voltar_menu_principal():
    input('\nDigite uma tecla para voltar ao menu principal')
    main()


def opcao_invalida():
    print('Opção Inválida!\n')
    voltar_menu_principal()


def sub_titulo(subtitulo):
    os.system('cls')
    linha = '*' * (len(subtitulo))
    print(linha)
    print(subtitulo)
    print(linha, '\n')


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