Dúvida sobre input em array

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!

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)

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

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

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

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