Básicos del Lenguaje

1

Guía de instalación y conceptos básicos

2

Archivos y slides del curso práctico de Python

3

IMPORTANTE: Instalando Ubuntu Bash en Windows para facilitarte el seguimiento del curso desde Windows.

4

¿Qué es la programación?

5

¿Por qué programar con Python?

6

Operadores matemáticos

7

Variables y expresiones

8

Presentación del proyecto

9

Funciones

10

Usando funciones en nuestro proyecto

11

Operadores lógicos

12

Estructuras condicionales

Uso de strings y ciclos

13

Strings en Python

14

Operaciones con Strings en Python

15

Operaciones con strings y el comando Update

16

Operaciones con strings y el comando Delete

17

Operaciones con strings: Slices en python

18

For loops

19

While loops

20

Iterators and generators

Estructuras de Datos

21

Uso de listas

22

Operaciones con listas

23

Agregando listas a nuestro proyecto

24

Diccionarios

25

Agregando diccionarios a nuestro proyecto

26

Tuplas y conjuntos

27

Tuplas y conjuntos en código

28

Introducción al módulo collections

29

Python comprehensions

30

Búsquedas binarias

31

Continuando con las Búsquedas Binarias

32

Manipulación de archivos en Python 3

Uso de objetos y módulos

33

Decoradores

34

Decoradores en Python

35

¿Qué es la programación orientada a objetos?

36

Programación orientada a objetos en Python

37

Scopes and namespaces

38

Introducción a Click

39

Definición a la API pública

40

Clients

41

Servicios: Lógica de negocio de nuestra aplicación

42

Interface de create: Comunicación entre servicios y el cliente

43

Actualización de cliente

44

Interface de actualización

45

Manejo de errores y jerarquía de errores en Python

46

Context managers

Python en el mundo real

47

Aplicaciones de Python en el mundo real

Conclusiones finales

48

Python 2 vs 3 (Conclusiones)

Clases bonus

49

Entorno Virtual en Python y su importancia: Python en el mundo real

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Operaciones con strings y el comando Update

15/49
Recursos

En esta clase seguiremos construyendo nuestro proyecto PlatziVentas, agregaremos el comando update para poder actualizar nuestros clientes y pondremos en práctica lo aprendido en clases anteriores sobre Strings.

https://github.com/platzi/curso_Python3/tree/8-while-loops

Aportes 71

Preguntas 12

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

El método replace, solo busca el nombre, no es necesario agregar las comas (’,’)

def update_client(client_name, updated_client_name):
global clients

if client_name in clients:
    # clients = clients.replace(client_name + ',', updated_client_name + ',')
    clients = clients.replace(client_name, updated_client_name)
else:
    print('Client is not in clients list')

Estaba checando que aunque se ingrese un nombre que sea incorrecto nos va a seguir pidiendo el Input para hacer el Update, en dado caso si agregamos el input para updated_client_name dentro del if de la función update_client() ya no nos va a pedir el input en caso de insertar un nombre que no esté en la lista y así terminar la ejecución:

def update_client(client_name):
    global clients

    if client_name in clients:
        updated_client_name = input('What is the updated client name? ')
        clients = clients.replace(client_name + ',', updated_client_name + ',')
    else:
        print('Client not found in the client\'s list')

Si hicieran una competencia de quien es el mejor profesor de Platzi yo voto por David

Código actualizado con las sugerencias de los demás compañeros.
Espero les sirva 😎👍

#proyecto_final
clients = 'Pablo, Ricardo' #creamos el string

def _print_welcome(): #funcion para dar el mensaje de bienvenida
	print ('Welcome to Monares POS')
	print ('what would you like to do today?')
	print ('*' * 52)  #imprimimos el caracter "*" 52 veces
	print ('[C]reate client')
	print ('[U]pdate client')
	print ('[D]elete client')


def create_client(client_name):
	global clients  #Utilizamos global para definir que la variable es la globarl, es decir la que definimos con pablo y ricardo
	clients_minusculas = clients.lower() #convertimos la cadena de texto en minusculas y la guardamos en otra variable para no diferenciar entre "Pablo" y "pablo"
	if client_name not in clients_minusculas: #si el nombre del cliente no esta en clients_minusculas
		_add_coma() #ejecutamos la funcion _add_coma para agregar una coma y un espacio 
		clients += client_name.capitalize()  #adicionamos el nuevo string pero con la funcion capitalize para poner el primer caractér en mayuscula
	else:
		print('Client already exists') #Sino mostramos un mensaje al usuario


def update_client(client_name):
	global clients
	if (client_name in clients ):
		updated_client_name = input('What is the updated client name?')
		clients = clients.replace(client_name, updated_client_name)
	else:
		print ('Client is not in client list')


def _add_coma():  #el nombre de la función comienza con un guión bajo para establecer que será una funcion privada
	global clients
	clients +=", " #se agrega una coma y un espacio al string para separar los nuevos valores


def list_clients(): #función que muestra la lista de clientes
	global clients
	print (clients) #imprimimos el string clientes


def _get_client_name():
	return input('What is the client name?')  #guardamos en la variable client_name el valor de los caracteres que ingresa el usuario hasta recibir un enter


if __name__ == '__main__': #funcion main
	_print_welcome() #ejecutamos la funcion que da el mensaje de bienvenida
	command = input().lower() #guardamos el valor del dato ingresado en la variable command pero lo convertimos a miunsculas para realizar la accion si presiona "C" o "c"
	if command == 'c': #si el comando es igual al caracter "c"
		client_name = _get_client_name()
		create_client(client_name) #ejecutamos la funcion crear cliente y enviamos como parametro el valor de la variable que almacena lo que digitó el usuario
		list_clients() #Ejecutamos la funcion listar clientes 
	elif command == 'u':
		client_name = _get_client_name()
		update_client(client_name)
		list_clients()
	elif command == 'd': #si el dato ignresado por el usuario es "d"
		pass
	else:
		print('Invalid command')
input() #Escribimos un input para que el programa haga una pausa y no cierre la ventana hasta recibir un enter

Ejemplo de la función replace llamada sobre un str en el mundo de game of thrones

>>> clients = 'Ned, Daenerys, Jon, Tyron'
>>> clients.replace('Jon', 'Aegon')
'Ned, Daenerys, Aegon, Tyron'

Código utilizando listas:

clients = ['Pablo', 'Ricardo']

def welcome():
        print('Welcome!',
              '*'*20,
              'What would you like to do?',
              'C -> Create client',
              'U -> Update client',
              'D -> Delete client',
              '>>>',
              sep='\n', end=' ')


def create_client(client_name):
    
    global clients # Take global variable clients to use it
    if client_name not in clients:
        clients.append(client_name) # Add element client_name to the list
    else:
        print('{client} is already in the client\'s list'.format(client=client_name))

def list_clients():
    """Join the elements of the list clients through the string ', ' """
    print(', '.join(clients))

def update_client(client_name):
    global clients

    if client_name in clients:
        updated_client_name = input('What is the updated client name:\n>>> ')
        client_index = clients.index(client_name)
        clients[client_index] = updated_client_name
        return
    print('Client is not in clients list')

def _get_client_name():
    return input('What is the client name?:\n>>> ')

if __name__ == '__main__':
    welcome()

    user_decision = input()
    user_decision = user_decision.upper()

    if user_decision == 'C':
        client_name = _get_client_name()
        create_client(client_name)
        list_clients()
    elif user_decision == 'D':
        pass
    elif user_decision == 'U':
        client_name = _get_client_name()
        update_client(client_name)
        list_clients()
    else:
        print('Invalid command')

Acordaros de correr el código con python3 main.py

Okey… Aquí esta mi aporte 😄


Y Aquí el código:

# -*- codign: utf-8 -*-

# Variables & Const
global clients
clients = ['Miguel', 'David']

def run():
    """Start the software"""
    show_title()
    read_element()


def show_title():
    """Show custom title of 'Platzi Seller'"""
    title =  ('██████╗ ██╗      █████╗ ████████╗███████╗██╗    ███████╗███████╗██╗     ██╗     ███████╗██████╗')
    complement = title
    title += ('\n██╔══██╗██║     ██╔══██╗╚══██╔══╝╚══███╔╝██║    ██╔════╝██╔════╝██║     ██║     ██╔════╝██╔══██╗')
    title += ('\n██████╔╝██║     ███████║   ██║     ███╔╝ ██║    ███████╗█████╗  ██║     ██║     █████╗  ██████╔╝')
    title += ('\n██╔═══╝ ██║     ██╔══██║   ██║    ███╔╝  ██║    ╚════██║██╔══╝  ██║     ██║     ██╔══╝  ██╔══██╗')
    title += ('\n██║     ███████╗██║  ██║   ██║   ███████╗██║    ███████║███████╗███████╗███████╗███████╗██║  ██║')
    title += ('\n╚═╝     ╚══════╝╚═╝  ╚═╝   ╚═╝   ╚══════╝╚═╝    ╚══════╝╚══════╝╚══════╝╚══════╝╚══════╝╚═╝  ╚═╝')
    # Add Styles
    break_line = ('-' * len(complement) + "\n") * 2
    title = "{}\n{}\n{}\n".format(break_line, title, break_line)
    print(title)
    show_menu()
    

def show_menu():
    """Show the menu of 'Platzi Seller'"""
    options = [
        'List Client',
        'Create Client',
        'Update Client',
        'Delete Client',
        'Exit'
    ]
    count = 0
    print("Write a number of the next options:")
    for element in options:
        print("{}. {}".format(count, element))
        if count <= len(options): 
            count+= 1


def read_element():
    """Execute and make the process of the actions specifics"""
    option = 0
    while option != 4:
        input_data = input('\nOption: ')
        if input_data:
            option = int(input_data)
            response = action(option)
        else:
            response = 'No action allowed'
        print(response)


def action(option):
    """Select and Action"""
    response = "Any Action valid"
    if option == 0: # List
        response = show_all_clients()
    elif option == 1: # Create Client
        response = create_client()
    elif option == 2: # Update Client
        response = update_client()
    elif option == 3: # Delete Client
        response = delete_client()
    elif option == 4: # Exit
        response = 'Good Bye!'
    
    return response


def show_all_clients():
    """Print all Clients"""
    return ("This is your list:\n{}".format(clients))
    

def __show_all_clients_index():
    response = 'This is your list:\n'
    for client in enumerate(clients):
        response += "{}, ".format(client)
    print(response)


def create_client():
    """Create a Client"""
    name = input("Write a name of the client: ")
    if name:
        clients.append(name)
        return show_all_clients()
    else:
        return "The client name is empty"
        

def update_client():
    """Update a Client"""
    response = 'Any Change'
    __show_all_clients_index()
    index = input('\nWrite the index of the client: ')
    if index:
        index = int(index)
        if index >= 0 and index <= len(clients):
            name = input("Write a name of the client: ")
            if name:
                clients[index] = name
                response = "Client #{} is updated\n\n{}".format(index, show_all_clients())
    return response


def delete_client():
    """Delete a Client"""
    response = 'Any Change'
    __show_all_clients_index()
    index = input('\nWrite the index of the client: ')
    if index:
        index = int(index)
        if index >= 0 and index <= len(clients):
            del clients[index]
            response = "Client #{} is deleted\n\n{}".format(index, show_all_clients())
    return response


if __name__ == '__main__':
    run()

yo ya había resuelto el problema de que el usuario introdujera un comando en minúsculas usado lo aprendido en las primeras clases, pero creo que es mucho mas optima la solución que nos brinda el profesor, aunque no esta mal arreglárselas con lo poco que se sabe.

	if command == 'C' or 'c':
		client_name = input('what is the client name?')
		create_client(client_name)
		list_clients()
	elif command == 'D' or 'd':
		pass```

Breve explicación del método o función replace().

replace(valorAntiguo, valorNuevo, contador), el contador estable la cantidad de veces que va a ser reemplazado el valorAntiguo, por default es “all” todas las ocurrencias

¡Hola! Una forma distinta de dejar el upper sobre la variable command es de la siguiente forma:

command = input().upper()

Se deja directamente para que no se tenga que crear primero la variable command y ahí si volverla en mayúsculas.

Al actualizar no es necesario colocar que reemplace las comas, para tenerlo en cuenta 😉

Mi idea sería incluir el updated_client_name dentro del if de la funcioón update_client:

def update_client(client_name):
    """Update an existing client"""
    global clients
 
    if client_name in clients:
       updated_client_name = input('What is the updated client name:\n>>> ')
       clients = clients.replace(client_name + ',' , updated_client_name + ',')
       return
    print('Client is not in clients list')

Éste me parece un código más claro ya que si ponemos el nombre del cliente y no existe, no nos preguntará el nombre del cliente actualizado, si no que nos dirá directamente que el cliente a actualizar no existe.
.
Aún así, yo hubiese preferido utilizar listas en vez de strings (adjunto mi código en otro comentario)

Seria bueno poner estos dos input

client_name = _get_client_name()
updated_client_name = input('What is the updated client name?')

como parte de la funcion update_client para hacer la validación de si el nombre existe al capturar el 1er input.
Ahora si se escribe un nombre que no existe, igual te hace escribir la actualización, aunque no la vaya a hacer.

aquí mi código con la función de eliminar el cliente

clients = []

def _get_name():
    return str(input('Enter the Client Name: '))

def create_clients(clients):
    name = _get_name()
    clients.append(name)

def list_clients(clients):
    print(clients)

def update_client(clients):
    name = _get_name()
    client_idx = clients.index(name)
    new_name = str(input('Enter the new name: '))
    clients[client_idx] = new_name

def remove_client(clients):
    name = _get_name()
    clients.remove(name)

def _print_welcome():
    while True:
        print('WELCOME TO PLATZI VENTAS')
        print('*---'*6)
        print('')
        print('What do you want to do?')

        option_selected = str(input('''
         Select an option
         [a] Add Client
         [l] List Clients
         [u] Update Client
         [d] Delete client
         [e] Exit
        '''))
        option_selected.lower()

        if option_selected == 'a':
            create_clients(clients)
        elif option_selected == 'l':
            list_clients(clients)
        elif option_selected == 'u':
            update_client(clients)
        elif option_selected == 'd':
            remove_client(clients)
        else:
            break
            

if __name__ == '__main__':
    _print_welcome()
    
    ```

Excelente, esta quedando bonito el programita

yo intente hacer el ejercicio por mi cuenta, para ver si era capaz de hacerlo solo y tengo un erro, no se cual es, quien me puede ayudar

# main.py donde se inicia el proyecto

import sys


clientes = 'pablo, ricardo,'


def crear_clientes(nombre_clientes):
    global clientes

    if nombre_clientes not in clientes: 
        clientes += nombre_clientes
        _agregar_coma()

    else:
        print('el cliente ya esta en la lista')


def lista_clientes():
    global clientes

    print(clientes)


def actualizar_clientes(nombre_clientes, nombre_actualizado):
    global clientes

    if nombre_clientes in clientes:
        clientes.replace(nombre_clientes + ',', nombre_actualizado + ',')

    else:
        print('el cliente no esta en la lista')


def borrar_clientes(nombre_clientes):
    global clientes

    if nombres_clientes in clientes:
        clientes = clientes.replace(nombre_clientes + ',', '')

    else:
        print('el cliente no esta en la lista')
        

def buscar_cliente(nombre_cliente):
    lista_clientes = clientes.split(',')

    for clientes in lista_clientes:
        if clientes != nombre_cliente:
            continue

        else:
            return True
        

def _agregar_coma():
    global clientes

    clientes += ','


def _obtener_nombre_cliente():
    nombre_cliente = None

    while not nombre_cliente:
        nombre_cliente = input('¿cual es el nombre del cliente? ').lower

        if nombre_cliente == 'exit' or 'salir':
            nombre_cliente = None
            break

    if not nombre_cliente:
        sys.exit()

    return nombre_cliente


def _pantalla_de_Bievenida():
    print('Bienvenidos a Platzi Ventas')
    print('=' * 30)
    print('''¿Que deseas hacer?
        1. Crear un cliente
        2. Borrar un cliente
        3. Lista de clientes
        4. Actualizar clientes
        5. Buscar clientes''')
    

    opcion = input('selecciona la opcion escribiendo la primera palabra o el numero: ').lower()

    if opcion == '1':
        nombre_cliente = _obtener_nombre_cliente()
        crear_clientes(nombre_clientes)
        lista_clientes()
        
    elif opcion == '2':
        cliente_eliminado = _obtener_nombre_cliente()
        borrar_clientes(cliente_eliminado)
        lista_clientes()

    elif opcion == '3':
        lista_clientes()

    elif opcion == '4':
        nombre_cliente = _obtener_nombre_cliente()
        nombre_actualizado = input('¿cual es el nuevo nombre del cliente? ')

        actualizar_clientes(nombre_cliente, nombre_actualizado)
        lista_clientes()

    elif opcion == '5':
        nombre_cliente = _obtener_nombre_cliente()
        encontro = buscar_cliente(nombre_cliente)

        if encontro:
            print('el cliente si esta en la lista')

        else:
            print('el cliente: {} no esta en esta lista'.formant(nombre_cliente))

    else:
        print('el comando es invalido')
                

    
if __name__ == '__main__':

    _pantalla_de_Bievenida()

    lista_clientes()```

No es necesario colocarle en el replace el + ',' pues modificamos es el nombre la coma sigue ahí.

Hasta el momento que curso tan genial ❤️🐧🐍

**Les dejo mi Código hecho de otra forma pero hace lo mismo que en la clases **

clients:str = 'Jesus, Daniel'

def create_client(client_name): # create_client crea un nuevo cliente
    global clients
    if client_name not in clients: # Si el cliente no existe, lo crea
        _add_comma()
        clients += client_name
        print (f'Cliente {client_name} Creado Satisfactoriamente')
    else: # Si el cliente ya existe, lo informa
        print(f'El Cliente {client_name} Ya Existe')


def update_client(client_name, update_client_name): # Creo una funcion para actualizar el nombre del cliente
    global clients
    if client_name in clients:
        _add_comma()
        clients = clients.replace(client_name + ',', update_client_name + ',')
        print (f'Cliente {client_name} Fue Actualizado Satisfactoriamente a {update_client_name}')
    else:
        print(f'El Cliente {client_name} No Existe')
    
def list_cleints(): # list_cleints muestra los clientesa que existen
    global clients
    print('clientes:',clients)
   

def _add_comma(): # Agrega una coma al final de la lista de clientes
    global clients
    clients += ', '


def _print_welcome(): # Imprime un mensaje de bienvenida al usuario 
    print(' _________________________________________ ')
    print('|        Bievenido a Platzi Ventas        |')
    print('|-----------------------------------------|')
    print('|[C] - Crear cliente                      |')
    print('|[E] - Eliminar cliente                   |')
    print('|[A] - Actualizar cliente                 |')
    print('|[B] - Buscar cliente                     |')
    print('|[S] - Salir.                             |')
    print('|_________________________________________|')
    
    global command
    command = input('Ingresa una opcion: ').upper()
       
    return _get_client_action(command) # retorno el valor de la variable command y lo paso a la funcion _get_client_action

def _get_client_action(command): # Creo una Función para ejecutar las acciones de los clientes
      
    if command == 'C':
        list_cleints()
        client_name = _get_client_name()
        create_client(client_name)
        list_cleints()

    elif command == 'E':
        pass

    elif command == 'A':
        list_cleints()
        client_name = _get_client_name()
        update_client_name = input('Ingresa el nuevo nombre del cliente: ')
        update_client(client_name ,update_client_name)
        list_cleints()
        

    elif command == 'B':
        pass

    elif command == 'S':
        pass
    else:
        print('                                         ')
        print(' __________Comando no encontrado__________')
      
        _print_welcome()

def _get_client_name(): # Creo una funcion para pedir el nombre del cliente
    client_name = input('Ingresa el nombre del cliente: ')
    return client_name


if __name__== '__main__':
    _print_welcome()```

Al principio tenia mis dudas sobre las comas en el replace, asi que no las use, el resultado fue el esperado y confirmado en los comentarios

Una verdadera confusión usar vim para impartir un curso, a pesar de que conozco lo básico de vim, no entiendo como realmente actúa este editor… veo lineas de código que van de 20,19,18…2,1… 1, 2, 3, ??? va de mayor a menor… luego de menor a mayor… qué pasa aquí… ya no se líneas tiene el profesor y qué líneas tengo yo… Realmente muy confuso.

Es necesario validar, que con el replace los valores que pueda contener, un nombre incompleto va cambiar el valor.

Me adelanto al método de ver clientes:

elif command == 'R':
    list_clients()

que bonito apreder, sigamos u.u

Una pequeña refactorización del código, de la función update

def update_client(client_name):
    global clients

    if client_name in clients:
        updated_client_name = input('What is the updated client name? ')
        clients = clients.replace(client_name, updated_client_name)
    else:
        print('Client not found in the client\'s list')

clients = ''

def add_client(client_name):
    global clients
    
    if client_name.upper() not in clients.upper():
        clients += client_name
        _add_coma()
    else:
        print("The client already exist!!")


def update_client(client_name,name_update):
    global clients
    
    if client_name.upper() in clients.upper():
        clients = clients.replace(client_name+',',name_update+',')
    else:
        print("The client not exist!!")


def _add_coma():
    global clients
    clients += ','

def list_client():
    global clients
    print(clients)

def _get_client_name():
    return input("What's client Name? ")


def _print_welcome():
    mesaje ="""
        WELCOME TO PLATZI VENTAS
        '*'*50
        What would you lke to do today?
        [C] Create Client
        [L] List Client
        [D] Delete Client
        [U] Update Client
        [S] Salir
        : """
    option  = input(mesaje)
    return option

if __name__ == "__main__":
    
    active = True

    while active:

        option = _print_welcome()
        if option == 'L' or option == 'l':
            list_client()

        elif option == 'C' or option == 'c':
            name = _get_client_name()
            add_client(name)
            list_client()

        elif option == 'U' or option == 'u':
            name = _get_client_name()
            name_update = input("What's name to update? ")
            update_client(name,name_update)
            list_client()

        elif option == 'S' or option == 's':
            active = False

Que divertida es la consola =)

Pongo mi código pero lo tengo en español, y agrego la funcion de borrar que es igual a la de actualizar, pero en lugar de un nombre por otro, remplazo por el valor “”

clientes = "Pedro,Pablo,"

def crear_cliente(nombre_cliente):
    global clientes

    if nombre_cliente not in clientes:
        clientes += nombre_cliente
        _agregar_coma()
    else:
        print("El cliente ya existe en la lista")

def listar_clientes():
    global clientes

    print(clientes)

def actualizar_ciente(nombre_cliente, nombre_cliente_nuevo):
    global clientes

    if(nombre_cliente in clientes):
        clientes = clientes.replace(nombre_cliente,nombre_cliente_nuevo)
        listar_clientes()
    else:
        print("el cliente " + nombre_cliente + " no existe en el listado")

def _agregar_coma():
    global clientes

    clientes += ","

def _print_bienvenido():
    print('*' * 50)
    print("Bienvenido")
    print('*' * 50)
    print("¿Qué quieres hacer hoy?")
    print("A - Actualizar cliente")
    print("B - Borrar cliente")
    print("C - Crear cliente")
    print("L - Listar clientes")

def _obtener_nombre_cliente_existente():
    return input("Introduzca el nombre del cliente a actualizar: ")

def _obtener_nombre_cliente():
    return input("Introduzca el nombre del cliente: ")

def _borrar_cliente(nombre_cliente):
    global clientes

    if nombre_cliente in clientes:
        clientes = clientes.replace(nombre_cliente + ",", "" )


if __name__ == '__main__':
    _print_bienvenido()

    comando = input()
    comando = comando.upper()

    if comando == 'C':
        nombre_cliente = _obtener_nombre_cliente()
        crear_cliente(nombre_cliente)
        listar_clientes()
    elif comando == 'B':
        nombre_cliente = _obtener_nombre_cliente()
        _borrar_cliente(nombre_cliente)
        listar_clientes()
    elif comando == 'L':
        listar_clientes()
    elif comando == 'A':
        nombre_cliente = _obtener_nombre_cliente_existente()
        nombre_cliente_nuevo = _obtener_nombre_cliente()
        actualizar_ciente(nombre_cliente, nombre_cliente_nuevo)
    else:
        print("Opción desconocida")
Algo curioso que vi es que para este ejemplo el profe olvidó usar la función *,

No se le entiende, supongo que los que comentan mostrando sus codigos ya tendran su buena base y no sera su primer curso de programacion, como es mi caso! 😃

Código actualizado:

clients = 'luisa, juan,'

def create_client(client_name):
	global clients

	if client_name not in clients:
		clients += client_name
		_add_comma()
	else:
		print ('Client already is in the client\'s list')

def list_clients():
	global clients

	print(clients)


def updated_client(client_name, updated_client_name):
	global clients

	if client_name in clients:
		clients = clients.replace (client_name + ',', updated_client_name + ',')
	else:
		print ('Client is no it clients list')


def _add_comma():
	global clients

	clients += ','


def _print_welcome():
	print ('WELCOME TO PLATZI VENTAS')
	print ('*' * 50)
	print ('What would you like to do today ? ')
	print ('[C]reate client')
	print ('[U]pdated client')
	print ('[D]elete client')


def _get_client_name ():
	return input('What is the client name ?')


if __name__ == '__main__':
	_print_welcome()

	command = input()
	command = command.upper()

	if command == 'C':
		client_name = _get_client_name()
		create_client(client_name)
		list_clients()
	elif command == 'U':
		client_name = _get_client_name()
		updated_client_name = input('What is the updated client name ?')
		updated_client(client_name, updated_client_name)
		list_clients()
	elif command == 'D':
		pass
	else:
		print ('Invalid command')```

variable.upper()

Para los que están perdidos en el curso, les recomiendo este curso que parte de los fundamentos de phyton y desde cero. Es de píldoras informáticas, un tremendo canal.

Link–> https://www.youtube.com/watch?v=vawEHhV_HFA&list=PLU8oAlHdN5BlvPxziopYZRd55pdqFwkeS&index=6

Este es mi código con ciertas modificaciones

clients = 'pablo, ricardo, '


def create_client(client_name):
    global clients

    if client_name not in clients:
        clients += client_name
        _add_comma()
    else:
        print('Client already in client\'s list')


def list_clients():
	global clients

	print(clients)


def update_client(client_name,updated_client_name):
	global clients

	if client_name in clients:
		clients = clients.replace(client_name + ",", updated_client_name)
	else:
		print(client_name, "is not in client's list")


def _repeat():
	return input("What is the client name? ")


def _add_comma():
	global clients
	
	clients += ","


def _print_welcome():
	print("WELCOME TO LA BOOTS VENTAS")
	print("*" * 50)
	print("What would yo like to do today?")
	print("[C]reate client")
	print("[D]elete client")
	print("[L]ist client")
	print("[U]pdate client")


if __name__ == '__main__':
	_print_welcome()

	command = input()
	command = command.upper()

	if command == "C":
		nombre_cliente = _repeat()
		create_client(nombre_cliente)
		list_clients()
	elif command == "L":
		list_clients()
	elif command == "D":
		pass
	elif command == "U":
		nombre_cliente = _repeat()
		nombre_cliente_actualizado = input("What is the updated client name? ")
		update_client(nombre_cliente, nombre_cliente_actualizado)
		list_clients()
	else:
		print("Invalid command, try again")```

Aqui mi programa

clients = 'pablo,ricardo,'


def create_client(client_name):
    # Permite usar una variable global dentro de la funcion
    global clients
    if client_name not in clients:
        clients += client_name
        _add_comma()
    else:
        print("El cliente ya esta en la lista de clientes")


def list_clients():
    global clients
    print(clients)


def update_client(current_client_name, updated_client_name):
    global clients
    if client_name in clients:
        clients = clients.replace(current_client_name, updated_client_name)
    else:
        print("Client not found on client list")


def _add_comma():
    global clients
    clients += ','


def _print_welcome():
    print('Bienvenidos a la app de ventas')
    print('*' * 50)
    print('¿Que quisieras hacer hoy?')
    print('[C]reate client')
    print('[U]pdate client')
    print('[D]elete client')
    print('')


def _get_client_name():
    return input("¿Cual es el nombre del cliente? ")


if __name__ == '__main__':
    _print_welcome()
    command = input()
    command = command.upper()

    if command == 'C':
        client_name = _get_client_name()
        create_client(client_name)
        list_clients()
    elif command == 'D':
        pass
    elif command == 'U':
        client_name = _get_client_name()
        new_client_name = input("What is the updated client name?")
        update_client(client_name, new_client_name)
        list_clients()
    else:
        print("Invalid command")

Aqui micodigo, modificado con operaciones para que acepte el nombre del cliente ya sea en mayuscula, minuscul, etc, y que tambien se cree o actualice en un formato.

clients = 'Pablo, Ricardo, '  # creamos el string


def create_client(client_name):
    global clients  # Utilizamos global para definir que la variable es la global, es decir la que definimos con pablo y ricardo
    if client_name not in clients:  # Condicion para saber si un cliente ya existe o no
        clients += client_name  # adicionamos el nuevo string
        _add_comma()  # ejecutamos la funcion _add_coma para agregar una coma y un espacio
    else:
        print('Client already is in the client\'s list')


def list_clients():  # función que muestra la lista de clientes
    global clients

    print(clients)  # imprimimos el string clientes


def update_client(client_name):
    global clients

    if client_name in clients:
        updated_client_name = input('What is the updated client name?: ')
        clients = clients.replace(client_name + ', ', updated_client_name.capitalize() + ', ')
    else:
        print('Client is not in client list')


def _add_comma():  # el nombre de la función comienza con un guión bajo para establecer que será una funcion privada
    global clients

    clients += ', '  # se agrega una coma y un espacio al string para separar los nuevos valores


def _print_welcome():
    print('WELCOME TO PLATZI VENTAS')
    print('*' * 50)
    print('What would yo like to do today?')
    print('[C]reate cliente')
    print('[U]pdate cliente')
    print('[D]elete cliente')
    print('')


def _get_client_name():
    return input('What is the client name?: ')
    # guardamos en la variable client_name el valor de los caracteres que ingresa el usuario hasta recibir un enter


if __name__ == '__main__':  # funcion main
    _print_welcome()

    command = input()
    command = command.upper()

    if command == 'C':
        client_name = _get_client_name()
        create_client(client_name.capitalize())
        list_clients()
    elif command == 'D':
        pass
    elif command == 'U':
        client_name = _get_client_name()
        # updated_client_name = input('What is the updated client name?: ')
        update_client(client_name.capitalize())
        list_clients()
    else:
        print('Invalid command')

Aqui dejo mi código tal como me va quedando hasta ahora:

clients = 'Pablo, Ricardo'

def _print_welcome():
    print('WELCOME A PLATZI VENTAS')
    print('*' *50)
    print('What would you like to do today?')
    print('Create client')
    print('[C]reate client')
    print('[U]pdate client')
    print('[D]elete client')

def _get_client_name():
    return input('What is the client name?')


def create_client(client_name):
    global clients
    if client_name not in clients:
        _add_comma()
        clients += client_name
    else:
        print('Client alredy is in the client\'s list')


def _add_comma():
    global clients
    clients +=','


def list_clients():
    global clients
    print(clients)


def update_client(client_name,updated_client_name):
    global clients

    if client_name in clients:
        clients = clients.replace(client_name + ',', updated_client_name + ',')
    else:
        print('Client is not in client list')


if __name__ == '__main__':
    _print_welcome()    

    command = input('Command: ')
    command =  command.upper()

    if command == 'C':
        client_name = _get_client_name()
        create_client(client_name)
        list_clients()
    elif command == 'D':
        pass
    elif command == 'U':
        client_name = _get_client_name()
        updated_client_name = input('What is te updated client name?')
        update_client(client_name,updated_client_name)
        list_clients()
    else:
        print('Invalid command')```

Bueno, yo ya había pensado lo del comando en minuscula y use las operadores lógicos, aunque pienso que así como lo hizo el maestro es más sencillo

Se puede de alguna manera decir que detecte el nombre, independientemente de que este la primera letra en mayuscula o minúscula. Ya que el ejecutar, si se escribe Ricardo con mayuscula ya se ejecuta el elif del Cliente no esta en la lista.

Saludos y excelente curso.

Hola alguien puede ayudarme con este error?

Traceback (most recent call last):
  File "main.py", line 60, in <module>
    command = input()
  File "<string>", line 1, in <module>
NameError: name 'U' is not defined```

Recomendación para hacer un código más legible: NO USAR ELSE INNECESARIOS

por ejemplo en vez de escribir:

def update_client(client_name):
global clients

	if client_name in clients:
		updated_client_name = input('What is the updated client name?: ')
		clients = clients.replace(client_name + ', ', updated_client_name + ', ')
	else:
		print('Client is not in client list')

escribir:

def update_client(client_name):
	global clients
	if client_name in clients:
	updated_client_name = input('What is the updated client name?: ')
	clients = clients.replace(client_name + ', ', updated_client_name.  ', ')
	return

	print('Client is not in client list')

No hace mucha diferencia cuando el código es así de corto, pero en casos reales si lo que se ejecuta al entrar al if es lo último que se hará antes de salir de la función es una buena práctica para ahorrarle tiempo de lectura a ti mismo o a futuros colaboradores de tu código, ya que establece claramente el punto de salida de la función y no nos hace tener que leer hasta la última línea de la misma para saber si hace algo más.

Aquí les dejo mi código, he modificado un poco el método de

_get_client_name(message_to_display)

Ahora le puede pasar un texto y generar inputs mas dinámicos, además he creado la función

_client_exists(client_name) 

la cual retorna True si el cliente existe o False en caso de que no exista.

clients = 'pablo,ricardo,'
_TYPE_YOUR_CLIENT_NAME = 'What is the client name? '
_TYPE_YOUR_UPDATED_CLIENT_NAME = 'What is the new client name? '


def create_client (client_name) :
    global clients
    if client_name not in clients :
        clients += client_name
        _add_coma ()
    else :
        print('Client is already registered')


def update_client (client_name, updated_client_name) :
    global clients

    if client_name in clients :
        clients = clients.replace(client_name + ",", updated_client_name + ",")


def _client_exists (client_name) :
    global clients

    if client_name in clients : 
        return True
    return False 


def list_clients () :
    global clients
    print(clients)


def _add_coma () :
    global clients
    clients += ','


def _print_welcome () :
    print("WELCOME TO PLATZI VENTAS")
    print('*' * 50)
    print('What would you like to do today? ')
    print('[C]reate client ')
    print('[U]pdate client ')
    print('[D]elete client ')


def _get_client_name (message_to_display) :
    return input(message_to_display)


if __name__ == '__main__' :
    _print_welcome()
    command = input()
    command = command.upper()

    if command == 'C' :
        client_name = _get_client_name(_TYPE_YOUR_CLIENT_NAME)
        create_client(client_name)
    elif command == 'D' :
        pass
    elif command == 'U':
        client_name = _get_client_name(_TYPE_YOUR_CLIENT_NAME)
        if _client_exists(client_name) :
            updated_client_name = _get_client_name(_TYPE_YOUR_UPDATED_CLIENT_NAME)
            update_client(client_name, updated_client_name)
        else : 
            print('El cliente no existe')
    else :
        print("Comando invalido")

    list_clients()

Es correcto que este video venga después de la clase 14? tomando en cuenta que aquí el código de Platzi Ventas está muy avanzado y en clase anterior a penas ibamos con agregar un tercer cliente.

Yo usé la alternativa de aceptar el comando en minusculas y en mayúsculas utilizando el operador lógico or

if command == 'C' or command == 'c':

clients = [‘Harold’, ‘Carlos’]

def _createclient(nameclient):
global clients
clients.append(nameclient)

def _listclients():
print(clients)

def _deliteclients(nameclients):
if nameclients in clients:
clients.remove(nameclients)
else:
input(‘Cliente No Existe’)

def _welcome():
print(“Bienvenidos Clientes Platzy”)
print(’*’ * 50)
print(‘What Would You Like To Do Day? ‘)
print(’[C]reate Client’)
print(’[D]elite Client’)
print(’[S]how Clients’)
print(’[E]xit ')

if name == ‘main’:
_welcome()
user = input('Elija una Opcion. ')

if  user.lower() == 'c':
    newclient = input('Ingrese El Nombre Del Cliente. ')
    _createclient(newclient)
    print('Estos Son Todos Los Clientes: ')
    _listclients()


elif user.lower() == 'd':
    _listclients()
    user = input('Que Cliente Deseas Eliminar. ')
    _deliteclients(user)
    _listclients()


elif user.lower() == 's':
    _listclients()

elif user.lower() == 'e':
    print('Hasta Pronto. Que tengas Un Buen Dia ')
    print('FIN')
<code>

Alguien sabe por qué cuando pongo solo un caracter cuando utilizo la opción C(de [C]reate client), me aparece como si ya estubiera en la lista??

lients = "Felipe, Sergio, "

def create_client(client_name):
global clients

if client_name not in clients:
	clients += client_name
	_add_coma()
else:
	print("Client is already add on the client's list")

def list_clients():
global clients

print(clients)

def update_client(client_name, updated_client_name):
global clients

if client_name in clients:
	clients = clients.replace(client_name + ",", updated_client_name + ',')
else:
	print("Client is not on the client's list")	

def _add_coma():
global clients

clients += ","

def _print_welcome():
print(“Welcome to Platzi Ventas”)
print("*" * 50)
print(“What would you like to do today”)
print("[C]reate a client")
print("[U]pdate client")
print("[D]elete a client")

def _get_client_name():
return input("What is the client name?: ")

if name==“main”:
_print_welcome()
command = input()
command = command.upper()

if command == "C":
	client_name=_get_client_name()
	create_client(client_name)
	list_clients()
elif command == "D":
	pass
elif command == "U":
	client_name = _get_client_name()
	updated_client_name=input("What is the new name of the client: ")
	update_client(client_name, updated_client_name)
	list_clients()
else:
	print('Invalid commmand')

clients = “Pablo, Ricardo”

def create_client(client_name):
global clients

if client_name not in clients:
clients += client_name
_add_coma()
else:
	print("Client is already add on the client's list")

def list_clients():
global clients

def update_client(client_name, updated_client_name):
global clients

if client_name in clients:
	clients = clients.replace(client_name + ",", update_client_name)
else:
	print("Client is not on the client's list")	

def _add_coma():
global clients

clients += ","

def _print_welcome():
print(“Welcome to Platzi Ventas”)
print("*" * 50)
print(“What would you like to do today”)
print("[C]reate a client")
print("[U]pdate client")
print("[D]elete a client")

def _get_client_name():
return input(“What is the client name?”)

if_name__=“main”:
_print_welcome()
command = input()
command = command.upper()

if command == "C"
	client_name=_get_client_name()
	create_client(client_name)
	list_client()
elif command == "D":
	pass
elif command == "U":
	client_name = _get_client_name()
	updated_client_name=input("What is the new name of the client")
	update_client(client_name, updated_client_name)
else:
	print('Invalid commmand')

esta metodología esta genial, aplicar lo aprendido en un pequeño programa que todos comenzamos a ejecutar desde el principio, he podido hacer modificaciones de otras funciones antiguas con los conceptos nuevos.

Traceback (most recent call last):
File “main.py”, line 58, in <module>
elif commnand == “U”:
NameError: name ‘commnand’ is not defined

<code>

He agregado lo que he estado aprendiendo.

import sys

clients = "pablo, ricardo, "


def create_client(client_name):
    global clients

    if client_name not in clients:
        clients += client_name
        print("Client created")
        _add_comma()

    else:
        print("The client {} was already created".format(client_name))


def list_clients():
    global clients

    print(clients)


def update_client(client_name, update_name):
    global clients

    if client_name in clients:
        clients = clients.replace(client_name + ",", update_name + ",")
        print("Update client name")
    else:
        print("The client {} does not exist".format(client_name))


def delete_client(client_name):
    global clients

    if client_name in clients:
        clients = clients.replace(client_name + ",")
        print("Client removed")

    else:
        print("The client {} does not exist".format(client_name))


def _add_comma():
    global clients

    clients = ","


def _get_client_name():
    return input("What is the client name? ")


def _print_welcome():
    print("WELCOME TO PLATZI VENTAS".center(50, "="))
    print()
    print("What would you like to do today?")
    print("")
    print("[C]reate client".center(50))
    print("[U]pdate client".center(50))
    print("[D]elete client".center(50))


if __name__ == "__main__":
    _print_welcome()

    comman = input(": ")
    comman = comman.upper()

    if comman == "C":
        client_name = _get_client_name()
        create_client(client_name)
        list_clients()
        print("")

    elif comman == "U":

        client_name = _get_client_name()
        print("")
        update_name = input("What is the new client name? ")

        update_client(client_name, update_name)
        list_clients()

    elif comman == "D":

        client_name = _get_client_name()
        delete_client(client_name)
        print("")

    else:
        print("Invalid Command")

Compañeros les comparto mi codigo, el mismo funciona. Sin embargo, no entiendo porque solo me remplaza el nombre de “pablo” si intento reemplazar a “ricardo” el codigo no funciona adecuadamente.



clients = 'pablo, ricardo,'

def create_client(client_name): #El global permite modificar la variable inicial
    global clients 

    if client_name not in clients: #Validador de si el cliente no esta en la lista
        clients += client_name
        _add_coma()
    else:
        print('Client already is in the client\'s list')


def update_client(client_name, update_client_name):
    global clients

    if client_name in clients:
        clients = clients.replace(client_name + ', ', update_client_name + ', ')
    else:
        print('Client is not in clients list')

def list_clients(): #Imprime clientes
    global clients

    print(clients)


def _add_coma(): #Funcion privada para asignar coma
    global clients

    clients +=  ','


def _print_welcome(): #Funcion para dar la bienvenida
    print('Bienvenidos to PLATZI ventas')
    print('*'*50)
    print('What would you like to do today')
    print('[C]reate client')
    print('[U]reate client')
    print('[D]elete client')

def _get_client_name(): #Funcion para llamar al nombre del cliente
    return input('What is the client name? ')

if __name__ == '__main__': #Arranque del codigo o programa principal
    _print_welcome()
    
    command = input()
    command = command.upper()

    if command == 'C': #Validador de ejecucion de comandos
        client_name = _get_client_name()
        create_client(client_name)
        list_clients()
    elif command == 'D':
        pass
    elif command == 'U':
        client_name = _get_client_name()
        updated_client_name = input('What is the update client name')
        update_client(client_name, updated_client_name)
        list_clients()

    else:
        print('Invalid Command')

No es necesario agregar las comas al realizar el reemplazo de los clientes, seria redundante

Comparto mi codigo, los cambios que hice son para que necesitemos pasarle todo el nombre, un ejemplo, si tenemos en la lista de clientes “anabel” si buscamos ana, lo va a encontrar pero ana es diferente de anabel, por esto, hice unos cambios

def update_client(client_name, updated_name):
    global clients
    client_name = client_name.strip()
    updated_name = updated_name.strip()
    end_name = len(client_name)
    end_string = len(clients)
    find_name = clients.find(client_name)
    if clients.find(",", find_name, end_name + 1) > 0 or find_name + end_name == end_string:
        clients = clients.replace(client_name, updated_name)
    else:
        _client_not_exist(client_name)

NOTA: Mi variable clients no tiene una coma al final del ultimo nombre, es

Hola!! Muy buen vídeo. Sólo un aporte:
Dentro de la funcion replace contenida en la funcion update_clientes, al segundo parámetro habría que concatenarle una coma (",") al nuevo cliente, ya que si no lo hacemos y actualizamos un cliente que no esté al final de la lista, cunado imprimamos la lista, va a aparecer nuestro nuevo cliente pegado al siguiente cliente de la lista. El cambio quedaría de la siguiente manera:

clients = clients.replace(client_name + ', ', updated_client_name + ', ')

Funcionando y se entendio.

Por acá dejo mi código

#!/usr/bin/env python
"""
Platzi Ventas Project for Create and Update Clients in the Client List
"""

def _create_client(name, clients):
    if name not in clients:
        clients += ',' + name
    else:
        print('Client already is in the client list')
    print(clients)
    return clients


def _update_client(old_name, clients):
    if old_name in clients:
        new_name = _get_client_name(True)
        clients = clients.replace(old_name, new_name)
    else:
        print('Client is not in the list')
    print(clients)
    return clients


def _welcome():
    print('WELCOME TO PLATZI VENTAS')
    print('*' * 30)
    print('What would you like to do today?')
    print('[C]reate client')
    print('[U]pdate client')


def _get_client_name(get_new):
    if get_new:
        return input('What is the new client name? ')
    return input('What is the client name? ')


if __name__ == '__main__':
    CLIENTS = 'Pablo,Ricardo'
    _welcome()
    COMMAND = input()
    COMMAND = COMMAND.upper()
    if COMMAND == 'C':
        NAME = _get_client_name(False)
        CLIENTS = _create_client(NAME, CLIENTS)
    elif COMMAND == 'U':
        OLD_NAME = _get_client_name(False)
        CLIENTS = _update_client(OLD_NAME, CLIENTS)
    else:
        print('Invalid command')

una pregunta, esto

command = input()
    command = command.upper()

seria equivalente a esto:

command = str.upper(input())```

Siguiendo con el código y como desde la clase pasada lo cambie a arreglos, me toco hacer el delete y un append para poder actualizar ya que los métodos usados no están disponibles para este tipo de datos.

Adicionalmente deje el input del nuevo nombre dentro de la función de update, no me pareció que debiera estar afuera…

Aquí va mi código:


clients = ['Pablo', 'Ricardo']

def Create_Cliente(client_name):
	global clients
	
	if client_name not in clients:

		clients.append(client_name)
		print(clients)
		print('Client added')

	else:

		print('The name already is in clienṭ\'s list!!!')

def delete_client(client_name):
	global clients
	clients.remove(client_name)
	print(clients)
	print('Client removed')


def update_client(client_name):
	
	global clients
	
	if client_name not in clients:
		
		print('The name you pick is not in the BDD')
	
	else:

		updated_client_name = input('Enter the new name: ')
		clients.remove(client_name)
		clients.append(updated_client_name)
		print(clients)
		print('Client Updated')



def print_welcome():
	
	global clients
	print('Welcome to Platzi Sales')
	print('*' * 50)
	print('What would you like to do today?')
	print('[C]reate Client')
	print('[U]pdate')
	print('[D]elete client')
	command = input('Please tell us your option: ')
	command = command.upper()

	if (command == "C"):

		client_name = input('Please enter the name you want to create: ')
		Create_Cliente(client_name)

	elif (command == "D"):
		
		client_name = input('Please enter the name you want to delete: ')
		delete_client(client_name)

	elif (command == 'U'):
		client_name = input('Please enter the name you want to Update: ')
		update_client(client_name)

	else:

		print('Invalid option: ')


		
		
		




if __name__ == '__main__':
	

	print_welcome()

	#print(Crear_Cliente(client_name)) 
REPLACE(OLD_STR, NEW_STR): seleccionamos el string antiguo y asignamos el nuevo a cambiar

pero “replace” solo funciona con un valor único… osea una variable con un solo string```

Yo recomendaria mejor hacer una funcion de busqueda de clientes

Solucinando algunos errores en el código, me imagino que se solucionaran en el transcurso del curso mientras vamos viendo otros tipos de datos.

def update_client(client_name):
    global clients;

    list_clients = clients.split(',');

    if client_name in list_clients:
        updated_client_name = input('What is the updated client name?: ').capitalize();
        clients = clients.replace(client_name, updated_client_name, 1);
    else:
        print('Client name isn\'t in client list');

Para los que utilizan VIM como editor de texto, al ir escribiendo el nombre de una variable, pueden auto-completar con las teclas:

[Ctrl] + [N]

De esta forma, evitan errores de sintaxis.

Para ahorrar una linea de codigo en el momento en el que pasamos el command a mayusculas, simplemente hacemos esto:

command = input().upper()

En vez de:

command = input()
command = command.upper.

No es mucho pero algo es algo XD

Considerar este cambio donde se evitara preguntar por el nombre actualizado en caso de no proporcionar un nombre existente(Evita las coincidencias parciales tambien)

def update_client(client):
    global clients
    if client + ',' in clients:
        updated_client_name=input('What is the updated client name?: ')
        clients=clients.replace(client + ',', updated_client_name + ',')
    else:
        print('Client is not in clients list')

Saludos realice la funcion update_client() mucho mas optimizada y facil de leer aqui les comparto el codigo:

def update_client(client_name):
    global clients
    if client_name in clients:
        update_name = input('Change his name here: ')
        clients = clients.replace(client_name, update_name)
        print(clients)
    else:
        print('that client is not register')

podemos modificar la funcion _get_client_name para rehusarla en el caso del update

def _get_client_name(modificador=''): 
	return input(f'what is the{modificacor+' '}clients name?')

y luego el llamado cambiaria al siguiente

client_name = _get_client_name()
update_client_name = get_client_name('updated')

Me gusta mucho como va el curso, añadiendo todo al proyecto.
.
Comparto mi código, añadí la opción de mostrar la lista de clientes en el menú, ya que me hacía falta. También cambié la entrada del nuevo nombre adentro de la función para que solo evaluara el nombre ingresado
.

'''
A Pythobn Project to develop a CRUD(create, read, update, delete)
'''

clients = 'pablo, ricardo, '

# Función que añade un nuevo cliente a la variable clients
def create_client(client_name):
    global clients              # La función global aumenta el alcance de la función y permite 
                                # utilizar     la variable clients
    if client_name not in clients:
        clients += client_name
        _add_comma()
    else:
        print("\nClient already is in the client's list\n")


# Función que imprime la lista de clientes
def list_clients():
    global clients
    print(f' >>> The list of clients is: {clients}\n')


# Función que actualiza el nombre del cliente
def update_client(client_name):
    global clients

    if client_name in clients:
        clients = clients.replace(client_name + ',', updated_client_name + ',')
        updated_client_name = input(f"\n\tUPDATE the client's name\n\tWhat is the new client name?: ")
    else:
        print(f"\n\tXX This name is not in the client's list XX\n")

# Creación de función privada que será auxiliar para separar por comas los nombres
def _add_comma():
    global clients
    clients += ', '


def _print_welcome():
    print(f'\n {"*" * 50}')
    print(f'\n\t\tWelcome to ECOmmerce')
    print(f'\n\tThe most sustainable E-Commerce')
    print(f'\n {"*" * 50}')
    print(f'\n\t What would you like to do today?')
    print(f'\n\t\t [C]reate client')
    print(f'\n\t\t [U]pdate client')
    print(f'\n\t\t [D]elete client')
    print(f"\n\t\t [S]show client's list")



def _get_client_name():
    return input(f'\n\tWhat is the client name?: ')


if __name__ == '__main__':
    _print_welcome()

    command = input(f'\n\tChoose an option from above C/D/U: ')
    command = command.upper()

    if command == 'C':
        client_name = _get_client_name()
        create_client(client_name)
        list_clients()
    
    elif command == 'D':
        pass
        

    elif command == 'U':
        client_name = _get_client_name()
        update_client(client_name)
        list_clients()
    
    elif command == 'S':
        list_clients()

    else:
        print('Invalid command')


clients = 'pablo,ricardo,'


def create_client(client_name):
    global clients

    if client_name not in clients:
        clients += client_name
        _add_comma()
    else:
        print('Client already is in the client\'s list')


def list_clients():
    global clients

    print(clients)


def update_client(client_name, updated_client_name):
    global clients

    if client_name in clients:
        clients = clients.replace(client_name + ',', updated_client_name + ',')
    else:
        print('Client is not in clients list')


def _add_comma():
    global clients

    clients += ','


def _print_welcome():
    print('Welcome to Platzi ventas')
    print('*' * 50)
    print('What would you like to do today')
    print('[C]reate client')
    print('[U]pdate client')
    print('[D]elete client')


def _get_client_name():
    return input('What is the client name? ')


if __name__ == '__main__':
    _print_welcome()

    command = input()
    command = command.upper()

    if command == 'C':
        client_name = _get_client_name()
        create_client(client_name)
        list_clients()
    elif command == 'D':
        pass
    elif command == 'U':
        client_name = _get_client_name()
        updated_client_name = input('What is the updated client name ')
        update_client(client_name, updated_client_name)
        list_clients()
    else:
        print('Invalid command')



que bien, super

Hola, quiero compartir mi código con ustedes, para que validen que hice adicional al profe!

clients = 'andres,pedro,'


def create_clients(client_name):
	"""
	client_name: Nombre del cliente a agregar
	Añade nombre de clientes al final del string clients
	global = le dice a python que tome variables global
	return: un string con el nombre añadido
	"""
	global clients
	if client_name not in clients:
		clients += client_name
		_add_comma()
		list_clients(clients)
	else:
		print('¡WARNING! This user exists')


def delete_client(c_name):
	"""
	c_name: is a str object to delete
	delete the client name that retrieves
	"""
	global clients
	if c_name not in (clients):
		print('The name is not in client\'s list')
	else:
		newclients = clients.replace(c_name,'')
		if newclients.startswith(','):
			newclients = newclients.replace(',', '', 1)
			list_clients(newclients)


def update_client(c_NameToU, newName):
	"""
	c_NameToU: str object to be updated
	newName: str object to update
	"""
	global clients
	if c_NameToU not in (clients):
		print('The name is not in client\'s list')
	else:
		newclients = clients.replace(c_NameToU, newName)
		list_clients(newclients)


def _get_client_name(action):
	"""
	action: define the action to do
	return a input with the question accord the action
	"""
	return input(f'What is the client name to {action}? ').lower()


def list_clients(mylist):
	"""
	Print a list with the clients
	"""
	print(mylist)


def _print_welcome():
	"""
	Print the welcome and options in the program
	"""
	print('WELCOME TO PLATZI VENTAS')
	print('*' * 50)
	print('What would you like to do today?')
	print('[C]reate clients')
	print('[D]elete clients')
	print('[U]pdate clients')


def _add_comma():
	"""
	Añade una coma al string clients
	return string de clients con una coma al final
	"""
	global clients
	clients += ','


if __name__ == "__main__":
	_print_welcome()
	command = input()
	command = command.upper()
	if command == 'C':
		command = 'create'
		c_name = _get_client_name(command)
		create_clients(c_name)
	elif command == 'D':
		command = 'delete'
		c_name = _get_client_name(command)
		delete_client(c_name)
	elif command == 'U':
		command = 'update'
		c_NameToU = _get_client_name(command)
		newName = input('What is the new client name?: ')
		newName = newName.lower()
		update_client(c_NameToU, newName)
	else:
		print('Invalid command')

podrian subir el archivo por favor