1
resposta

[Dúvida] Opção Inválida no Terminal...

Estou aqui quebrando minha cabeça e não consigo achar o erro do código... Até ja troquei o nome de "restaurante" para "nome_do_restaurante" e não muda...

import os

restaurantes = ['Pizza','Sushi']

def exibir_nome_do_programa():
print("""
██████████████████████████████████████████████████████████████████
█▄─▄▄─█▄─▄█▄─█─▄█▄─▄▄─███─▄▄▄▄██▀▄─██▄─▄─▀█─▄▄─█▄─▄▄▀█▄─▄▄─█─▄▄▄▄█
██─▄█▀██─███─▄▀███─▄█▀███▄▄▄▄─██─▀─███─▄─▀█─██─██─▄─▄██─▄█▀█▄▄▄▄─█
▀▄▄▄▄▄▀▄▄▄▀▄▄▀▄▄▀▄▄▄▄▄▀▀▀▄▄▄▄▄▀▄▄▀▄▄▀▄▄▄▄▀▀▄▄▄▄▀▄▄▀▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀
""")

def exibir_opcoes():
print('1. Cadastrar Restaurante')
print('2. Listar Restaurante')
print('3. Ativar Restaurante')
print('4. Sair\n')

def finalizar_app():
os.system('cls')
print('Encerrando o Programa...\n')

def opcao_invalida():
print('\nOpção Inválida!\n')
input('Digite qualquer tecla para voltar: ')
main()

def cadastrar_novo_restaurante():
os.system('cls')
print('Cᴀᴅᴀsᴛʀᴏ ᴅᴇ ɴᴏᴠᴏ ʀᴇsᴛᴀᴜʀᴀɴᴛᴇ\n ')

nome_do_restaurante = input('Digite o nome do restaurante que deseja cadastrar: ')
restaurantes.append(nome_do_restaurante)

print(f'O restaurante {nome_do_restaurante} foi cadastrado com sucesso!\n')
input('\nAperte qualquer tecla para voltar ao menu principal.')
main()

def listar_restaurantes():
os.system('cls')
print('Listando os restaurantes:\n')

for restaurante in restaurantes:
    print(f'{restaurante}')

input('\nDigite uma tecla para voltar ao Menu principal: ')
main()

def escolher_opcao():
try:
opcao_escolhida = int(input('Escolha uma opção:'))

    if opcao_escolhida == 1:
        cadastrar_novo_restaurante()

    elif opcao_escolhida == 2:
        listar_restaurantes()

    elif opcao_escolhida == 3:
        print('\nAtivar Restaurante')

    elif opcao_escolhida == 4:
        finalizar_app()

    else:
        opcao_invalida()
except:
    opcao_invalida()

def main():

os.system('cls')

exibir_nome_do_programa()

exibir_opcoes()

escolher_opcao()

if name == 'main':
main()

1 resposta

Oi, Eike! Como vai?

Do jeito que você explicou, o problema pode estar nesse ponto: faltou indentação em várias funções (os print, try, opcao_escolhida = ... e o main() precisam ficar dentro do bloco da função), e no final o correto é if __name__ == "__main__": (com __ duplo), não if name == 'main'. Isso faz o programa não iniciar como esperado e pode te levar para "Opção Inválida" mesmo digitando certo.

Uma dica interessante para o futuro é usar um dicionário para mapear opções para funções, reduzindo vários elif e deixando o menu mais organizado. Veja este exemplo:


def cadastrar():
    print("cadastro")

def listar():
    print("lista")

acoes = {1: cadastrar, 2: listar}

opcao = int(input("Escolha uma opcao: "))
acao = acoes.get(opcao)

if acao:
    acao()
else:
    print("opcao invalida")

Esse código sem acentuação usa get para buscar a função pela opção e executa quando existe; caso contrário, mostra opcao invalida.

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