Tip to improve the code: ( Operator "in" )
First of all, you can check if the name is on the guest list using the operator in
, there is no need to check item by item with the for loop. Example:
lista_convidados = ['arthur', 'maria', 'roberto', 'naime', 'letícia']
cardapio = ['lasanha', 'hamburguer', 'fritas', 'picanha', 'feijoada', 'bisteca']
nome = input('Boa noite SR(a), informe seu nome: ').lower()
if nome in lista_convidados:
print(f'Seja bem-vindo {nome.title()}, entre e faça seu pedido.\n ')
else:
print(f'Desculpe {nome.title()}, seu nome não está na lista.\n'
f'Obrigado pela a preferência, VOLTE SEMPRE!\n')
Terminating the program if the user is not in the list: ( Quit and sys.Exit functions )
Now regarding not presenting the menu for those who are not invited, you can use the function quit()
. This function will terminate the execution of your program and can be used if you want your program to end for the user who is not in the list. Example:
for nome in lista_convidados:
if resposta == nome:
print(f'Seja bem-vindo {resposta.title()}, entre e faça seu pedido.\n ')
break
else:
print(f'Desculpe {resposta.title()}, seu nome não está na lista.\n'
f'Obrigado pela a preferência, VOLTE SEMPRE!\n')
quit()
Another function you can use is the sys.exit(status)
. He does the same thing quit()
but it returns a code when closing the program. Example:
import sys
# ...
for nome in lista_convidados:
if resposta == nome:
print(f'Seja bem-vindo {resposta.title()}, entre e faça seu pedido.\n ')
break
else:
print(f'Desculpe {resposta.title()}, seu nome não está na lista.\n'
f'Obrigado pela a preferência, VOLTE SEMPRE!\n')
sys.exit(17) # Código de exemplo: 17 significa que o cliente não está na lista.
Presenting the menu only to the client who is in the list: ( Creating functions )
If you want to proceed with your program without the user having access to the menu, you can isolate your menu code within the block if
or create a function to show the menu only to those on the guest list. Example:
def mostraCardapio(cardapio):
"""
Função para mostrar o cardápio e obter pedido do cliente.
"""
print("********** C A R D Á P I O **********\n")
for menu in cardapio:
print(f'{menu.title()}: ')
print("\n" + "*" * 37) # Imprime o asterisco 37 vezes.
resposta = input('\nDigite o prato desejado: ').lower()
if resposta in cardapio:
print(f'Ótima escolha, a {resposta.title()} está deliciosa!')
else:
print(f'Desculpe {resposta.title()}, não estamos servindo esse prato hoje.\n'
f'OBRIGADO PELA PREFERÊNCIA, VOLTE SEMPRE!')
lista_convidados = ['arthur', 'maria', 'roberto', 'naime', 'letícia']
cardapio = ['lasanha', 'hamburguer', 'fritas', 'picanha', 'feijoada', 'bisteca']
nome = input('Boa noite SR(a), informe seu nome: ').lower()
if nome in lista_convidados:
print(f'Seja bem-vindo {nome.title()}, entre e faça seu pedido.\n ')
mostraCardapio(cardapio)
else:
print(f'Desculpe {nome.title()}, seu nome não está na lista.\n'
f'Obrigado pela a preferência, VOLTE SEMPRE!\n')
Like I said, you can isolate the code to show the menu inside the block if
without creating a function, but its code would not be very well organized. Another advantage of creating a function to show the menu, is that you can call it several times so that the user can place an order as many times as he wishes.
You can learn more about Python functions by clicking here on this website and to learn more about creating a well-organized code, I suggest you take a look at the subject "Clean Code".
It is better to have a function to show the menu and another to ask about the desired dish.
– Lucas Maraal
Thank you very much! Using the form you explained I managed to apply in the code. And other improvements that I didn’t know were possible to make the code cleaner and readable.
– echaves
@Lucasmaraal In fact, following good practices, this code should be created functions such as
verificaCliente
,mostraCardapio
andrealizaPedido
, But I didn’t do it because I didn’t want to extend the answer as much as I did to stay focused. Not to mention @echaves is still a beginner, so for now, he needs to study about functions and others to then think about keeping the code well organized.– JeanExtreme002