Estou com uma dúvida! Quero fazer um programa simples de cadastro de cliente, porém não consigo fazer uma função que adiciona esse cliente a uma lista, poderiam me ajudar?
Eu tenho o seguinte código até agora. #cadastro de cliente em programacao procedural
option=int(input('''[1] - Cadastrar cliente[2] - Consultar Clientes[3] - Editar Cliente[4] - Sair do programa'''))clientes = []while option != 4: if option == 1: for i in range(clientes):clientes=input('Digite o nome do cliente: ')clientes=input('Digite o cep do cliente: ')clientes=input('Digite o telefone do cliente: ')clientes.append(clientes)print('Cliente adicionado')print(clientes)
Considere criar para cada cliente um tupla com seus dados (nome, cep, telefone, etc);
Para cada dado crie uma nova variavel. Por exemplo CEP: cliente_cep;
Eu estou sem IDE, usei um interpretador online, então debuguei colocando um option fixo (=1) e coloquei o número de clientes a serem cadastrados (para não rodar o laço indefinidamente);
Com as tuplas na lista fica facil acessar os dados de cada cliente. Dê uma pesquisada sobre.
Código:
option=1clientes=[]n_clientes=1# numero de clientes para cadastroifoption!=4:# trocar while para ififoption==1:foriinrange(n_clientes):cliente_nome=input('Digite o nome do cliente: ')# dados com inputcliente_cep=input('Digite o cep do cliente: ')cliente_tel=input('Digite o telefone do cliente: ')cliente_dados=(cliente_nome,cliente_cep,cliente_tel)# tupla contendo todos os dadosclientes.append(cliente_dados)# anexando as tuplas à lista clientesprint('Cliente adicionado')print(clientes)
A
AndreLuiz99
Certo! Consegui adicionar e dei uma estudada sobre tuplas. Mas estou com uma dúvida, como faço para que assim que eu cadastrar um cliente, meu programa volte para o menu para poder consultar por exemplo? Fiz isso uma vez em java usando um do while, mas não sei como fazer isso em Python
O código atual ficou assim #cadastro de cliente em programacao procedural
from functions import cadastra_cliente
option=int(input('''[1] - Cadastrar cliente[2] - Consultar Clientes[3] - Editar Cliente[4] - Sair do programa'''))ifoption!=4:ifoption==1:cadastra_cliente()ifoption==2:print(f''' Nome: {clientes[0]} Cep: {clientes[1]} Telefone: {Clientes[2]}''')
e o cadastra cliente esta dentro de outra pasta da seguinte forma
clientes = []
defcadastra_cliente():n_clientes=1foriinrange(n_clientes):cliente_nome=input('Digite o nome do cliente: ')cliente_cep=input('Digite o cep do cliente: ')cliente_telefone=input('Digite o telefone do cliente: ')clientes_dados=(cliente_nome,cliente_cep,cliente_telefone)clientes.append(clientes_dados)print(clientes)print('Cliente adicionado')
M
Martin_Hermes_Anscha
Como eu estou sem a IDE não vou “visualizar” algumas coisas.
Contudo, nesse caso eu faria uma função para realizar o laço menu o chamaria ao final do código.
(tem várias maneiras de resolver e encapsular isso)
Exemplo:
defmenu():option=int(input(''' [1] - Cadastrar cliente [2] - Consultar Clientes [3] - Editar Cliente [4] - Sair do programa '''))returnoptiondefprograma():option=menu()# retorna o valor da variavel option de menu()# linhas de codigo do programa e laço de tratamento para option# ...# fim do laçoprint(clientes)print('Cliente adicionado')programa()# chama programa() para ler input e realizar o laço novamente
A
AndreLuiz99
Certo entendi!
Meu problema ta sendo justamente na parte do while, não consigo fazer ele sair do loop infinito de cadastrar clientes
#cadastro de cliente em programacao procedural
clientes=[]n_clientes=1defmenu():option=int(input('''[1] - Cadastrar cliente[2] - Consultar Clientes[3] - Editar Cliente[4] - Sair do programa'''))returnoptiondefmostrar_cliente():print(f''' Nome: {clientes[0]} Cep: {clientes[1]} Telefone: {Clientes[2]}''')defcadastra_cliente():cliente_nome=input('Digite o nome do cliente: ')cliente_cep=input('Digite o cep do cliente: ')cliente_telefone=input('Digite o telefone do cliente: ')clientes_dados=(cliente_nome,cliente_cep,cliente_telefone)clientes.append(clientes_dados)print(clientes)print('Cliente adicionado')defprograma():condition=Trueoption=menu()whileoption!=4:ifoption==1:cadastra_cliente()ifoption==2:mostrar_cliente()programa()
M
Martin_Hermes_Anscha
Cara, desculpa, estava sem tempo. Removi minha última resposta, pois estava com discordâncias. Resolvi o problema utilizando um main() para chamar programa(). O main no python tem sintaxe um pouco diferente e é a primeira função chamada a partir do run do código. Ao final do laço eu chamo programa() novamente.
clientes=[]n_clientes=1defmenu():option=int(input('''[1] - Cadastrar cliente[2] - Consultar Clientes[3] - Editar Cliente[4] - Sair do programa'''))returnoptiondefmostrar_cliente():print(f''' Nome: {clientes[0]} Cep: {clientes[1]} Telefone: {Clientes[2]}''')defcadastra_cliente():cliente_nome=input('Digite o nome do cliente: ')cliente_cep=input('Digite o cep do cliente: ')cliente_telefone=input('Digite o telefone do cliente: ')clientes_dados=(cliente_nome,cliente_cep,cliente_telefone)clientes.append(clientes_dados)print(clientes)print('Cliente adicionado')defprograma():condition=Trueoption=menu()whileoption!=4:ifoption==1:cadastra_cliente()ifoption==2:mostrar_cliente()programa()if__name__=='__main__':programa()