Dúvida sobre input em array

5 respostas Resolvido
pythonprogramação
A

Bom dia pessoal, tudo bem?

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)

Obrigado!

5 Respostas

Martin_Hermes_Anscha
Solucao aceita

Boa tarde.

  • 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 = 1

clientes = []
n_clientes = 1  # numero de clientes para cadastro

if option != 4:  # trocar while para if
    if option == 1:
        for i in range(n_clientes):
            cliente_nome = input('Digite o nome do cliente: ')  # dados com input
            cliente_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 dados
            clientes.append(cliente_dados)  # anexando as tuplas à lista clientes
        print('Cliente adicionado')
print(clientes)
A

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
'''))

if option != 4:
    if option == 1:
        cadastra_cliente()
    if option == 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 = []

def cadastra_cliente():

    n_clientes = 1
    for i in range(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')
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:

def menu():
    option = int(input('''
    [1] - Cadastrar cliente
    [2] - Consultar Clientes
    [3] - Editar Cliente
    [4] - Sair do programa
    '''))
   
    return option

def programa():
    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ço
    print(clientes)
    print('Cliente adicionado')

    programa()  # chama programa() para ler input e realizar o laço novamente
A

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 = 1

def menu() :
    option = int(input('''
[1] - Cadastrar cliente
[2] - Consultar Clientes
[3] - Editar Cliente
[4] - Sair do programa
'''))

    return option

def mostrar_cliente() :
    print(f'''
    Nome: {clientes[0]}
    Cep: {clientes[1]}
    Telefone: {Clientes[2]}''')

def cadastra_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')

def programa() :
    condition = True

    option = menu()

    while option != 4 :
            if option == 1 :
                cadastra_cliente()
            if option == 2 :
                mostrar_cliente()

programa()
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 = 1

def menu() :
    option = int(input('''
[1] - Cadastrar cliente
[2] - Consultar Clientes
[3] - Editar Cliente
[4] - Sair do programa
'''))

    return option

def mostrar_cliente() :
    print(f'''
    Nome: {clientes[0]}
    Cep: {clientes[1]}
    Telefone: {Clientes[2]}''')

def cadastra_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')


def programa() :
    condition = True

    option = menu()

    while option != 4 :
            if option == 1 :
                cadastra_cliente()
            if option == 2 :
                mostrar_cliente()
            programa()

if __name__ == '__main__':
    programa()
Criado 29 de outubro de 2020
Ultima resposta 30 de out. de 2020
Respostas 5
Participantes 2