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

While loops

19/49
Recursos

Al igual que las for loops, las while loops nos sirve para iterar, pero las for loops nos sirve para iterar a lo largo de una secuencia mientras que las while loops nos sirve para iterar mientras una condici贸n sea verdadera.

Si no tenemos un mecanismo para convertir el mecanismo en falsedad, entonces nuestro while loops se ira al infinito(infinite loop).

Aportes 72

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

C贸digo actualizado:

import sys

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 client\'s list')


def delete_client(client_name):
	global clients

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

def search_client(client_name):
	clients_list = clients.split(',')

	for client in clients_list:
		if client != client_name:
			continue
		else:
			return True

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 ('[L]ist client')
	print ('[U]pdated client')
	print ('[D]elete client')
	print ('[S]earch client')


def _get_client_name ():
	client_name = None

	while not client_name:
		client_name = str.lower(input('What is the client name ? '))

		if client_name == 'exit':
			client_name = None
			break

	if not client_name:
			sys.exit()

	return 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 == 'L':
		list_clients()
	elif command == 'U':
		client_name = _get_client_name()
		updated_client_name = str.lower(input ('What is the updated client name ? '))
		updated_client(client_name, updated_client_name)
		list_clients()
	elif command == 'D':
		client_name = _get_client_name()
		delete_client(client_name)
		list_clients()
	elif command == 'S':
		client_name = _get_client_name()
		found = search_client(client_name)

		if found:
			print('The client is in the client\'s list')
		else:
			print('The client: {} is not in our client\'s list'.format(client_name))

	else:
		print ('Invalid command')

Hay que tener en cuenta que el while not client_name valida si no se agrega ningun valor, si se ingresan solo espacios, el los va a tomar como el nombre.

Para solucionar esto y limpiar aun asi los espacios en caso de que se vayan antes o despues de un nombre real, se puede hacer agregando

client_name = input("What is the client name? ").strip()

Como s煤per curiosidad, si declaras una variable con valor 鈥淣one鈥, el tipo de esa variable ser谩 鈥淣oneType鈥

>>> client_name = None
>>> type(client_name)
<class 'NoneType'>

Descubri un peque帽o error en el codigo que me gustaria corregir aca:

para el caso en el que por ejemplo se agregara el nombre 鈥淭atiana鈥 y acto seguido se agregara el nombre 鈥淎na鈥 el sistema detectara que ya existe puesto que esta contenido en la cadena del nombre anterior, para arreglar esto se corrige la condicion del create_client al concatenar una coma (,) la cual es la que indica la separacion de nombre para indicar en donde termina un nombre completo.

`def create_client(client_name):
global clients

if client_name+',' not in clients:
    clients += client_name
    _add_comma()
else:
    print('Client already exists')`

David es un profesor id贸neo, 隆隆por que no fuiste mi profesor en el pasado!!!

Si caen un un infinitive loop pueden detener la ejecuci贸n del c贸digo en la consola pulsando Ctrl + C

Un truco en el interactive shell. Este tiene un historial, puedes accerder a el pulsando la fecha hacia arriba (la tecla), e ir metiendo los ultimos fragmentos de codigo sin tener que escribirlos nuevamente

Pasar client_name a none es como hacer trampa, quedaria mejor que el sys.exit() se agregue a la condicional 鈥渋f client_name == 鈥榚xit鈥:鈥

if client_name == 鈥榚xit鈥:
sys.exit()

saludos. excelente prof.

En este paso me hubiese servido mas seguir la configuraci贸n del profesor, ya que para capturar los nombres indefinidamente me toco hacer un loop por cada opci贸n, sin embargo me sigue gustando mas mi personalizaci贸n.

Adicionalmente inclu铆 en la funci贸n Welcome un While que permite ejecutar el programa hasta que el usuario decida salir, ya sea en la captura del nombre o en la toma de decisiones iniciales. Esto implico crear la funci贸n name_Break, que evalua el nombre ingresado y si es 鈥淓xit鈥 termina el programa!!


import sys



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 client蹋\'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 client蹋\'s list!!!')
	
	else:

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

def search_client(client_name):
	
	global clients

	for client in clients:

		if client_name == client:

			return True

		else: 

			continue

def _finder(client_name):
	
	client_finded = search_client(client_name)

	if client_finded :

		print('The client {} is in the client\'s list'.format(client_name))

	else:

		print('The client {} isn\'t in the client\'s list'.format(client_name))

def break_Name(client_name):

	if client_name == 'Exit':
		print('Good Bye')
		sys.exit()
	pass


def welcome():
	
	command = None
	client_name = None

	while command != 'E':

		global clients
		print('Welcome to Platzi Sales')
		print('')
		print('*' * 50)
		print('')
		print('What would you like to do today?')
		print('')
		print('[C]reate Client')
		print('[U]pdate')
		print('[S]earch')
		print('[D]elete client')
		print('[E]xit')
		print('')
		print('At any time you can enter "Exit" to escape the program')

		command = input('Please tell us your option: ')
		
		if command == 'Exit':
			break_Name(command)


		command = command.upper()

		if (command == "C"):

			while client_name == None or client_name == '':
				
				client_name = input('Please enter the name you want to create: ')
				break_Name(client_name)

			Create_Cliente(client_name)

		elif (command == "D"):
			
			while client_name == None or client_name == '':

				client_name = input('Please enter the name you want to delete: ')
				break_Name(client_name)
			
			delete_client(client_name)

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

		elif (command == 'S'):
			
			while client_name == None or client_name == '':

				client_name = input('please enter the name you want to Seach: ')
				break_Name(client_name)
			
			_finder(client_name)

		elif (command == 'E'):

			print('Good Bye')
			break


		else:

			print('Invalid option: ')



if __name__ == '__main__':
	

	welcome()

ctl + c: Para parar el bucle infinito.

Con Ctrl + L tambi茅n pueden limpiar la terminal

la funcion getClientName() me qued贸 diferente y funcional

import sys
print('\n\nHello, this is your software practice!')
clients = 'Carlos, Frank, '
print('*' * 70)
print('What would you like to do?')
print('[C]reate a new client')
print('[S]earch a client')
print('[D]elete a client')
print('[U]pdate a client')



"""*****************************FUNCTIONS********************************"""
"""*****************************FUNCTIONS********************************"""
def getClientName():
  clientName = None
  while not clientName:
    clientName = input('What\'s the client name? ')
    if clientName == 'exit':
      sys.exit()
  return clientName

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

def clientList():
  global clients
  print(clients)

def createClient(clientName):
  global clients
  if clientName not in clients:
    clients += clientName
    addComma()
  else:
    print('Client already is in the client\'s list')

def searchClient(clientName):
  global clients
  if clientName in clients:
    print('The client ' + clientName + ' is in the client\'s list')
  else:
    print('The client ' + clientName + ' isn\'t in the client\'s list')

def deleteClient(clientName):
  global clients
  if clientName in clients:
    clients = clients.replace(clientName + ',','')
    print('This client has been deleted!')
  else:
    print('This client not exist in the client list!')

def updateClient(clientName, newClientName):
  global clients
  if clientName in clients:
    clients = clients.replace(clientName + ',', newClientName + ',')
  else:
    print('Doesn\'t exist this client name! ')

"""*****************************FUNCTIONS********************************"""
"""*****************************FUNCTIONS********************************"""





"""***************************IF STATEMENTS******************************"""
"""***************************IF STATEMENTS******************************"""
command = input()
if command == 'C':
  clientName = getClientName()
  createClient(clientName)
  clientList()
elif command == 'S':
  clientName = getClientName()
  searchClient(clientName)
elif command == 'D':
  clientName = getClientName()
  deleteClient(clientName)
  clientList()
elif command == 'U':
  clientName = getClientName()
  newClientName = input('What\'s the new client name? ')
  updateClient(clientName, newClientName)
  clientList()
else:
  print('INVALID KEY')
  
"""***************************IF STATEMENTS******************************"""
"""***************************IF STATEMENTS******************************"""

Creo que necesitab oir que los errores son normales 鉂わ笍

Dando el salto fuera del script de c贸digo.

.
Que emocionante comenzar a utilizar scripts que se ejecutan fuera de nuestro c贸digo para llegar a establecer comunicaci贸n con otros protocolos.
.

隆Backend aqu铆 vamos!

.
Mi c贸digo:

def _get_client_name():
    client_name = None

    while not client_name:
        client_name = input(f'\n\tWhat is the client name?:')

        if client_name == 'exit':
            client_name = None
            break

    if not client_name:
        sys.exit()
    return client_name

While loops

Repite un statement hasta que la condici贸n que le estamos pasando sea falsa, debemos tener cuidado con los loops infinitos.

Stack Overflow

Aparte de ser una de las comunidades m谩s grandes de developers y d贸nde puedes encontrar muchas respuestas y ayudas para tu c贸digo, es cuando un programa est谩 intentando utilizar m谩s memoria de la que tiene disponible.

Recuerden que el return es el fin de la funci贸n por lo tanto si agregan cualquier cosa dentro de la funci贸n despu茅s del return el programa no funcionar谩.

Agregando validaci贸n en caso de que el cliente escriba exit en mayuscula

Aprovechando las posibilidades de los loops defin铆 una variable 鈥渇inish鈥 con valor False y cree un While loop en donde puse toda la parte de las opciones de forma que pueda usar los comandos de manera continua y el programa solo termine cuando ingrese el comando 鈥淓XIT鈥.

if __name__ == '__main__':
    
    finish = False

    _print_welcome()

    while(finish == False):
        _print_options()
        command = input()
        command = command.upper()

        if command == 'C':
            client_name = _get_client_name()
            create_client(client_name)
            list_clients()
        elif command == 'R':
            list_clients()
        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()
        elif command == 'D':
            client_name = _get_client_name()
            delete_client(client_name)
            list_clients()
        elif command == 'S':
            client_name = _get_client_name()
            found = search_client(client_name)

            if found:
                print('The client is in the clients list')
            else:
                print('The client: {} is not in our clients list'.format(client_name))
        
        elif command == 'EXIT':
            finish = True
        else:
            print('Invalid command')

Tambi茅n aproveche para separar la impresi贸n de las opciones del mensaje de bienvenida para no estar imprimiendo lo todo el tiempo.

def _print_welcome():
    print('WELCOME TO PLATZI VENTAS')
    

def _print_options():
    print('*' * 50)
    print('What would you like to do today?')
    print('[C]reate client')
    print('[R]ead clients')
    print('[U]pdate client')
    print('[D]elete client')
    print('[S]earch client')

Cuando hizo el ejercicio antes del Bug, tuve un error de sintaxis, en visual code, solo por el hecho que hab铆a cometido un error en los espacios previos al iniciar el rengl贸n, alguien podr铆a explicarme porque pasa eso?, en html no tengo esos problemas.

qui茅n est茅 usando linux el

sys.exit()

al parecer funciona correctamente en Mac, pero en linux se debe colocar:

syst.exit(0)

Si tienen el error

IndentationError: unexpected indent

Deben verificar que esten dando los espacios correctos despues de usar " : ", ya que python es muy estricto con eso

El m贸dulo 鈥榮ys鈥 provee acceso a funciones, m茅todos y objetos del interprete de python.

Asi que con sys.exit() puedes terminar la ejecuci贸n de un script.

Comprendo que el profesor quiere que entendamos el statement break, pero creo que ser铆a mucho m谩s simple la funci贸n de la siguiente forma:

def _get_client_name():
    """Throw an input to get the client name"""
    client_name = None

    #Repeat the function until the user responds
    while not client_name:
        client_name = input('What is the client name?:\n>>> ')
        # Turn off the program if the client_name is exit
        if client_name == 'exit':
            sys.exit()
    return client_name

Sinceramente me gusto mucho que hayas presentado un error de logica y otro de sintaxis, eso le dio mas dinamismo a la clase. 10/10

Creo que me tomar茅 un break

Buenas, yo le hice un loop al menu colocandolo dentro de un while.

Nota: Estoy usando colorama para pintar los print en terminal es por eso que tienen concatenadas dos etiquetas.

def app_loop():
        while True:
            #!MENU
            _print_welcome() #Muestra el men煤 en pantalla.
            
            _space_line() #Funcion que agrega un espacio en la terminal
            command = input(FGREENL+ '-> ' + FR).upper()
            _space_line()

            if command == 'C': #Creacion de clientes
                create_clien(_get_client_name())
                list_client()
            elif command == 'D': #Eliminacion de clientes
                delate_client(_get_client_name())
            elif command == 'U': #Actualizacion de clientes
                update_clients(_get_client_name(),_get_new_client_name())
                list_client()
            elif command == 'S': #Busqueda de clientes
                client_name = _get_client_name()
                found = search_client(client_name)
                if found:
                    _space_line()
                    print(FYELLOW+'The client {} is in the client\'s list.'.format(client_name)+FR)
                else:
                    _space_line()
                    _msg_not_exist_client() #Funcion de mensaje de cliente no encontrado.
                list_client()
            elif command == 'E': #Salir del programa 
                break
            else:
                print(FREDL+'Invalid command'+FR) 


if __name__ == '__main__':#Funcion principal
    app_loop()  #Llamada a la funci贸n del loop


En consola se ve de esta manera:

por si el usuario digita de otra manera el exit le agregue el .lower() en if client_name.lower() == 'exit':

me imagino que esta mas adelante sera una function para que funcione en cualquier parte del programa.

Que buen curso 馃檶

C脫DIGO

import sys

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 client's list")


def search_client(client_name):
    clients_list = clients.split(",")

    for client in clients_list:
        if client != client_name:
            continue
        else:
            return True


def list_clients():
    global clients

    print(clients)


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 client list")


def delete_client(client_name):
    global clients

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


def _add_comma():
    global clients

    clients += ","


def _get_client_name():
    client_name = None

    while not client_name:
        client_name = input("What is the client name? ")

        if client_name == "exit":
            client_name = None
            break

    if not client_name:
        sys.exit()

    return client_name

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


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 == "L":
        list_clients()

    elif command == "D":
        client_name = _get_client_name()
        delete_client(client_name)
        print("The client "+ client_name + " a been delete")
        list_clients()

    elif command == "U":
        client_name = _get_client_name()
        update_client_name = input("What is the update client name? ")
        update_client(client_name, update_client_name)
        list_clients()

    elif command == "S":
        client_name = _get_client_name()
        found = search_client(client_name)

        if found:
            print("The client is in the client's list")

        else:
            print("The client: {} is not our client's list".format(client_name))

    else:
        print("Invalid command")

Me encanto ver que pasaran esos 2 errores, asi pudimos ver la diferencia entre tipos de bugs, entendiendo que tienen que haber infinidades mas, pero muy bueno que pasara para irnos haciendo a la idea de como es

<import sys
from ast import Delete
from http import client


clients = 'pablo, ricardo, '


def create_client(client_name):
    global clients
    if client_name not in clients:
        clients += client_name
        _add_comma()
    else:
        _client_was_found()


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


def delete_client(client_name):
    global clients
    
    if client_name in clients:
        clients = clients.replace(client_name + ',', '')
    else:
        _client_not_found()


def search_client(client_name):
    clients_list = clients.split(',')
    for client in clients_list:
        if client != client_name:
            continue
        else:
            return True


def _add_comma():
    global clients

    clients += ", "


def _print_welcome():
    print('BIENVENIDOS A PLATZI VENTAS')
    print('*'*50)
    print('Que quieres hacer hoy?')
    print('[C]reate client')
    print('[L]ist clients')
    print('[U]pdate client')
    print('[D]elete client')
    print('[S]earch client')


def _get_client_name():
    client_name = None

    while not client_name:
        client_name = input('Cual es el nombre del cliente? ')

        if client_name == 'exit':
            break
        if not client_name:
            sys.exit()

    return client_name

def _client_not_found():
    return print('El cliente no esta registrado en la lista')


def _client_was_found():
    print('El cliente ya esta registrado en la lista')


if __name__ == '__main__':
    _print_welcome()
    command = input("Escribe un comando: ")
    command = command.upper()
    if command == 'C':
        client_name = _get_client_name()
        create_client(client_name)
        list_clients()
    elif command == 'L':
        list_clients()
    elif command == 'D':
        client_name = _get_client_name()
        delete_client(client_name)
        list_clients()
    elif command == 'U':
        client_name = _get_client_name()
        updated_client_name = input('Inglrese la actualizacion en el nombre: ')
        update_client(client_name, updated_client_name)
        list_clients()
    elif command == 'S':
        client_name = _get_client_name()
        found = search_client(client_name)
        if found:
            print('Se encontro el cliente en la lista')
        else:
            _client_not_found()
    else:
        print('Comando invalido')> 

Les Comparto el C贸digo Pero con otras cosas Mas

import sys
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 delete_client(client_name): # Creo una funcion para eliminar un cliente
    global clients
    if client_name in clients:
        _add_comma()
        clients = clients.replace(client_name + ',', '')
        print (f'Cliente {client_name} Fue Eliminado Satisfactoriamente')
    else:
        print(f'El Cliente {client_name} No 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 search_client(client_name): # Creo una funcion para buscar un cliente
    global clients
    found = False
    if client_name in clients:
        found = True
    return found

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 = None
    while not command:
        command = input('Ingresa una opcion: ').upper()

        if command in ['C','E','A','B','S']:    
            return _get_client_action(command) # Retorno la funcion principal para que sea ejecutada y se la paso a _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':
        list_cleints()  
        client_name = _get_client_name()
        delete_client(client_name)
        list_cleints()
        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':
        list_cleints()
        client_name = _get_client_name()
        found = search_client(client_name)
        if found:
            print(f'El cliente {client_name} se encuentra en la lista')
        else:
            print(f'El cliente {client_name} no se encuentra en la lista')
        list_cleints()
    

    elif command == 'S':
        print('Saliendo...')
        sys.exit()
        
    else:
        print('                                         ')
        print(' __________Comando no encontrado__________')
      
        _print_welcome()

def _get_client_name(): # Creo una funcion para pedir el nombre del cliente
    client_name = None
    while not client_name:
        client_name = input('Ingresa el nombre del cliente: ')
        if client_name == '':
            client_name = None
            print('                                         ')
            print(' __________El nombre del cliente es requerido__________')
        
        if client_name == 'exit':
            client_name = None
            break

    if not client_name:
        sys.exit()

    
    return client_name


if __name__== '__main__':
    _print_welcome()

Espero te sirvan

Les comparto la actualizaci贸n de mi codigo, con algunos retoques de mi parte

import sys

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 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 delete_client(client_name):
    global clients

    update_client(f'{client_name},','')

def seach_client(client_name):
    clients_list = clients.split(',')
    if client_name in clients_list:
        return True
    else:
        return False


def list_clients():
    global clients

    print(clients)

def _add_comma():
    global clients

    clients += ','

def _get_client_name(command):
    client_name = None
    while not client_name:
        if '[' in command:
            client_name = input(f'What is the name of the client we are going to {command}? ')   
        else:
            client_name = input(f'What is the new name? ') 
        if client_name == 'exit':
            client_name = None
            sys.exit()
    return client_name

def _print_welcome():
    print('WELCOME TO QUEIS VENTAS')
    print('*' * 5)
    print('What wouls you like to do today?')
    print('[C]reate client')
    print('[U]pdate client')
    print('[D]elete client')
    print('[S]earch client')


if __name__ == '__main__':
    _print_welcome()

    command = input().upper()

    
    if command == 'C':
        client_name = _get_client_name('[C]reate')

        create_client(client_name)
        list_clients()
    elif command == 'D':
        client_name = _get_client_name('[D]eleted')

        delete_client(client_name)
        list_clients()
    elif command == 'U':
        updated_client_name = _get_client_name('[U]pdate')
        client_name = _get_client_name('new')

        update_client(updated_client_name, client_name)
        list_clients()
    elif command == 'S':
        client_name = _get_client_name('[S]earch')
        found = seach_client(client_name)

        if found:
            print('The client is in the clien\'s list')
        else:
            print(f'The client: {client_name} is not in out client\'s list')

    else:
        print('Invalid Command')

Con el tiempo e aprendido a valorar los errores en python.

code

import sys

clients = 'pablo,ricardo,'

def create_client(client_name):
    global clients

    if client_name not in clients:
        clients += client_name
        _add_comma()
    else:
        print('the client is ready register')


def list_clients():
    global clients
    print(clients)


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

def delete_client(client_name):
    global clients

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


def search_client(name_client):
    global clients
    clients_list = clients.split(',')

    for cilient in clients_list:
        if clients != client_name:
            continue
        else:
            True


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


def _print_welcome():
    print('welcome to platzi sells')
    print('*' * 50)
    print('what woul you like to do')
    print('[C]create client')
    print('[D]delete client')
    print('[U] update')
    print('[S] search client')

def _get_client_name():
    client_name = None

    while not client_name:
        client_name = input('what is the client name ')

        if client_name == 'exit':
            client_name = None
            break
    if not client_name:
        sys.exit()
    return 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':
        client_name = _get_client_name()
        delete_client(client_name)
        list_clients()

    elif command == 'U':
        client_name = _get_client_name()
        update_client_name = input('what is the updated client name')
        update_client(client_name,update_client_name)
        list_clients()

    elif command == 'S':
        client_name = _get_client_name()
        found = search_client(client_name)
        if found:
            ('the client is in the list')
        else:
            print(f'cant found the client {client_name} in our client list')
    else:
        print('invalid command')




aprende a querer los errores
-David Aroesti

un increible aprendizaje

import sys

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 update_client(client_name, update_cliente_name):
    global clients
    if client_name in clients:
        clients = clients.replace(client_name + ',', update_cliente_name + ',' )
    else:
        dont_exist()

def delete_client(client_name):
    global clients
    if client_name in clients:
        clients = clients.replace(client_name + ',', '')
    else:
        dont_exist()

def search_client(client_name):
    clients_list = clients.split(',')
    
    for client in clients_list:
        if client != client_name:
            continue
        else:
            return True

def list_clients():
    global clients
    print(clients)

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

def dont_exist():
    return 'Client is not in clients list'

def _print_welcome():
    print('WELCOME TO PLATZI VENTAS')
    print('*' * 50)
    print('What would you like to do today?')
    print('[D]elete Client')
    print('[L]ist Client')
    print('[D]elete Client')
    print('[U]pdate Client')
    print('[S]earch Client')

def _get_client_name():
    client_name = None
    while not client_name:
        client_name = input('what is the client name?: ')
        if client_name == 'exit':
            client_name = None
            break
    if not client_name:
        sys.exit() 
    return 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 == 'L':
        list_clients()
    elif command == 'D':
        client_name = _get_client_name()
        delete_client(client_name)
        list_clients()
    elif command == 'U':
        client_name = _get_client_name()
        update_client_name = input('What is the updated client name: ')
        update_client(client_name, update_client_name)
        list_clients()
    elif command == 'S':
        client_name = _get_client_name()
        found = search_client(client_name)
        if found:
            print(f'The client {client_name} is in client\'s list')
        else: 
            print(f'The client {client_name} is not our client\'s list')
    else:
        print('Invalid command')

Plot Twist: No es que hubiera un bug, es que al programa le cae mal James

Me ha encatando este curso, hasta ahora.

Sale del programa:

import sys
...
if not client_name: #Sale del programa
        sys.exit()

Comunidad para limpiar pantalla en modo editor python

Despues de hacer esto ya cada vez que quieran limpiar la pantalla en el editor python pones

cls() seguido de enter y listo

Y si estan en la consola CMD de windows solo usa
cls

Prueba como se lee

def leer(palabra):
    cantidad = len(palabra)
    while cantidad > 0:
        cantidad -= 1
        print(palabra[cantidad]) 

Esta es mi versi贸n hasta este punto del c贸digo

El sys.exit lo utilizo para la opci贸n de Salida
Al pedir el nombre si no quieres rellenarlo sale al men煤 poniendo salir, pero no de la aplicaci贸n

import sys

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("E - Encontrar cliente")
    print("T - Encontrar cliente tabulado")
    print("L - Listar clientes")
    print("S - Salir")


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


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


def _obtener_input(texto):
    input_text = None
    while not input_text:
        input_text =  input(texto)

        if input_text == 'salir':
            break

    return input_text


def _borrar_cliente(nombre_cliente):
    global clientes

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


def _encontrar_cliente(nombre_cliente):
    global clientes

    return clientes.find(nombre_cliente) > -1


def _encontrar_cliente_tabulados(nombre_cliente):
    global clientes
    encontrado = False 

    listado_cliente = clientes.split(",")

    for cliente in listado_cliente:
        if(cliente != nombre_cliente):
            continue
        else:
            encontrado = True
            break
    return encontrado


if __name__ == '__main__':
    while True:
        _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)
        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)
        elif comando == 'E':
            nombre_cliente = _obtener_nombre_cliente_existente()
            cliente_encontrado = _encontrar_cliente(nombre_cliente)
            if cliente_encontrado:
                print("Hemos encontrado a {}".format(nombre_cliente))
            else:
                print("Lo sentimos mucho, pero el cliente {} no se encuentra".format(nombre_cliente))
        elif comando == 'T':
            nombre_cliente = _obtener_nombre_cliente_existente()
            cliente_encontrado = _encontrar_cliente_tabulados(nombre_cliente)
            if cliente_encontrado:
                print("Hemos encontrado a {}".format(nombre_cliente))
            else:
                print("Lo sentimos mucho, pero el cliente {} no se encuentra".format(nombre_cliente))
        elif comando == 'S':
            print("Muchas gracias por utilizar nuestro programa")
            sys.exit()
        else:
            print("Opci贸n desconocida")

Aqu铆 esta mi c贸digo con varios cambios.
Creo que la mejor forma de entrenar tu l贸gica cuando estas haciendo un curso es hacer el c贸digo diferente al c贸digo del profesor.

import sys
clients = 'alyanna, angel, '
var_client_name = None

def create_client(client_name):
    global clients

    if client_name not in clients:
        clients += client_name
        _add_comma()
    else:
        print(f"Client {client_name} 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 + ",")
	elif client_name not in clients:
		_not_in_clients(client_name)


def delete_client(client_name):
	global clients

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


def search_client(client_name):
	global clients

	clients = clients.split(",")
	for i in clients:
		if i == client_name:
			return True



def _get_client_name():
	global var_client_name

	while not var_client_name:
		var_client_name = input("What is the client name? ")
		
		if var_client_name == "exit":
			var_client_name = None
			break
	
	if not var_client_name:
		sys.exit()

	return var_client_name


def _client_name():
#con esta funcion evito declarar "var_client_name = _get_client_name" en todos los if 
	global var_client_name
	var_client_name = _get_client_name()


def _not_in_clients(client_name):
	global clients

	if client_name not in clients:
		 print(client_name, "is not in client's list")


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("[R]ead client")
	print("[U]pdate client")
	print("[D]elete client")
	print("[S]earch client")


if __name__ == '__main__':
	_print_welcome()

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

	if command == "C":
		_client_name()
		create_client(var_client_name)
		list_clients()
	elif command == "R":
		list_clients()
	elif command == "D":
		_client_name()
		_not_in_clients(var_client_name)
		delete_client(var_client_name)
		list_clients()
	elif command == "U":
		_client_name()
		if var_client_name in clients:
			nombre_cliente_actualizado = input("What is the updated client name? ")
			update_client(var_client_name, nombre_cliente_actualizado)
			list_clients()
		else:
			_not_in_clients(var_client_name)
			list_clients()
	elif command == "S":
		_client_name()
		found = search_client(var_client_name)
		if found:
			print("The client: {} is in our client's list".format(var_client_name))
		else:
			print(f"{var_client_name} is not in our client's list")
	else:
		print("Invalid command, try again")

none es como null no?

Otra forma para salir de while es utilizar return para finalizar la funci贸n

def _get_client_name():
    client_name = None

    while not client_name:
        client_name = input('What is the client name? ')

        if client_name == 'exit':
            sys.exit()
            return None 
    
    return client_name

Esos infinite loop me pasaron un par de veces cuando comenzaba a programar xD

Un while loop sencillito

def cuenta_regresiva(n):
    while n > 0:
        print('> {}'.format(n))
        n -= 1


cuenta_regresiva(4)
print("\n")
cuenta_regresiva(10)
print("\n")
cuenta_regresiva(15)

Los loops son una herramienta muy valiosa cuando se tienen problemas de listar o de repetir muchas veces una serie de instrucciones

Genial!!

Existe un bug

Cuando seleccionamos la opci贸n CREATE y ponemos solamente la letra 鈥淎鈥 (sin comillas y en may煤sculas) autom谩ticamente se agrega y el resultado es por ejemplo: ** Pablo, Ricardo,A, **

Si por el contrario luego se seleccionar la opci贸n CREATE y ponemos solamente la letra 鈥渁鈥 (sin comillas y en min煤sculas) el mensaje es el siguiente :Client already is in the clients list

Conclusi贸n: s铆 introducimos un letra o cadena de caracteres que coincidan con la lista previamente establecida, mostrar谩 el mensaje Client already is in the clients list

Creo que esto hace el mismo trabajo, 驴Estoy equivocado?

def _get_client_name():
	client_name=None
	while not client_name:
		client_name=input('What is the client name? ') 
		if client_name=='exit':
			#client_name=None
			#break
	#if not client_name:
			sys.exit()
	return client_name```

C贸digo final y correcto de While Loop escrito por David en su repositorio de GitHub dentro de Plazit

Te permite copiar el c贸digo o revisarlo detalladamente y tambien conocer GitHub

import sys


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():
    print(clients)


def update_client(client_name, updated_name):
    global clients

    if client_name in clients:
        clients = clients.replace(client_name + ',', updated_name + ',')
    else:
        print('Client not in client\'s list')


def delete_client(client_name):
    global clients

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


def search_client(client_name):
    clients_list = clients.split(',')

    for client in clients_list:
        if client != client_name:
            continue
        else:
            return True


def _add_comma():
    global clients

    clients += ','

def _get_client_name():
    client_name = None

    while not client_name:
        client_name = input('What is the client name?')

        if client_name == 'exit':
            client_name = None
            break

    if not client_name:
        sys.exit()

    return client_name


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


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 == 'L':
        list_clients()
    elif command == 'U':
        client_name = _get_client_name()
        updated_name = input('What is the new client name? ')

        update_client(client_name, updated_name)
        list_clients()
    elif command == 'D':
        client_name = _get_client_name()
        delete_client(client_name)
        list_clients()
    elif command == 'S':
        client_name = _get_client_name()
        found = search_client(client_name)
        
        if found:
            print('The client is in the client\'s list')
        else:
            print('The client: {} is not in our client\'s list'.format(client_name))
    else:
        print('Invalid command')

C贸digo actualizado en lo que voy del curso, a帽ad铆 la librer铆a os que nos trae los comandos del sistema y lo encontr茅 aqu铆

import sys, os # Importamos librerias



clients = 'Natalia, Daniel, ' # Definimos algunos clientes

def create_client(client_name): # Funcion para crear clientes
    global clients              
    list_clients()
    if search_client(client_name):
        print('Client already is in client\'s list. \n')
    else:
        clients += client_name
        _add_coma()
        

def delete_client(client_name): # Funcion para borrar clientes
    global clients
    list_clients()
    if search_client(client_name):
        clients = clients.replace(client_name + ', ', '')
        list_clients()
    else:
        not_found_menssage(client_name)


def update_client(client_name, updated_client_name): # Funcion para actualizar clientes
    global clients
    _clear_screen()
    list_clients()
    if search_client(client_name):
        clients = clients.replace(client_name + ', ', updated_client_name + ', ')
        list_clients()
    else:
        not_found_menssage(client_name)


def search_client(client_name): # Funcion para verificar si el cliente esta en el sistema
    clients_list = clients.split(', ')
    for client in clients_list:
        if client != client_name:
            continue
        else:
            return True
     

def not_found_menssage(client_name): # Mensaje de cliente no encontrado mostramdo el nombre
    
    print(f'The client: {client_name} is not in the client\'s list. \n')


def _not_found_menssage(): # Mensaje de cliente no encontrado
    
    print('The client is not in the client\'s list. \n')


def found_message(): # Mensaje de cliente encontrado

    print('Client found... \n')


def client_commands(command): # Funcion que toma la opcion/comando seleccionado por el cliente y llama al metodo para cumplir con el objetivo/requerimiento del cliente
    
    command = command.upper()

    if command == 'C':
        create_client(_get_client_name())
    elif command == 'D':
        delete_client(_get_client_name())
    elif command == 'U':
        update_client(_get_client_name(), input('What is the updated client name? \n'))
    elif command == 'S':
        if search_client(_get_client_name()):
            found_message()
        else:
            _not_found_menssage()
    elif command == 'L':
        list_clients()
    elif command == 'E':
        _clear_screen()
        _exit_program()
    else:
        print('Invalid command\n')


def _add_coma(): # A帽ade el separador de los clientes en el sistema
    global clients
    clients += ', '
    list_clients()


def list_clients(): # Lista los clientes registrados
    global clients
    print(clients + '\n')


def _get_client_name(): # Retorna el nombre del cliente
    client_name = ''

    while client_name == '':
        client_name = input('What is the client name?/[E]xit/[M]enu \n')
        
    if client_name == 'E' or client_name == 'e': # Nos saca del sistema si no se desea ingresar un cliente
        client_commands(client_name)
    elif client_name == 'M' or client_name == 'm': # Nos devuelve al men煤 principal
        command = ''
        _clear_screen()
        run(command)

    _clear_screen()
    return client_name


def _print_welcome(): # Funcion de bienvenida
    print('*' * 28)
    print('**WELCOME TO PLATZI VENTAS**')
    print('*' * 28 + '\n \n')
    print('What would you like to do today? \n')
    

def client_options(): # Funcion que despliega las opciones de sistema
    print('[C]reate client')
    print('[D]elete client')
    print('[L]ist clients')
    print('[S]earch client')
    print('[U]pdate client')
    print('[E]xit')


def run(command): # Funcion que mantiene el programa activo hasta que sea ejecutada la orden de salir
    while command != 'E':
        
        client_options()
        command = input()
        _clear_screen()
        client_commands(command)


def _clear_screen(): # Funcion que limpia la consola en donde estemos trabajando
    if os.name == 'posix':
        os.system('clear')
    elif os.name == "ce" or os.name == "nt" or os.name == "dos":
        os.system('cls')


def _exit_program(): # Funcion para salir del sistema
    sys.exit()


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

    run(command)

Si quereis probar vuestras While loops con n煤meros grandes pero veis que imprime un n煤mero por cada fila pod茅is hacer lo siguiente para que aparezcan los n煤meros correlativos:

def cuenta_regresiva(n):
	while n > 0:
		print(n, end=' ')
		n -= 1

cuenta_regresiva(30)
30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Esto provocar谩 que aparezca cada todos y cada uno de los n煤meros en una fila

<code>import sys
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(_get_not_in_list())

def delet_client(client_name):
    global clients

    if client_name in clients:
        clients = clients.replace(client_name + ',', '')
    else:
        print(_get_not_in_list())

def search_client(client_name):
    clients_list = clients.split(',')

    for client in clients_list:
        if client != client_name:
            continue
        else:
            return True


def _add_comma():
    global clients

    clients += ','

def _print_welcome():
    print('welocome to platzi ventas')
    print('*' * 50)
    print('what would you like to do today?')
    print('[C]reate client')
    print('[U]pdate client')
    print('[D]elate client')
    print('[S]earch')

def _get_client_name():
    client_name = None

    while not client_name:
        client_name = input('What is the client name?')

        if client_name == 'exit':
            client_name = None
            break

    if not client_name:
            sys.exit()

    return client_name


def _get_not_in_list():
    return input('client is nos in client list')

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':
        client_name = _get_client_name()
        delet_client(client_name)
        list_clients()
    elif command == 'S':
        client_name = _get_client_name()
        found = search_client(client_name)
        if found:
            print('the client is in the client\'s list')
        else:
            print('the client: {} is not in the client list'.format(client_name))
    elif command == 'U':
        client_name = _get_client_name()
        updated_client_name = input('whats the o隆updated client name?')
        update_client(client_name, updated_client_name)
        list_clients
    else:
        print('Invalid command')

Analizando el comportamiento observo que input detiene la ejecuci贸n del while hasta obtener una respuesta por parte del usuario, este tipo de comportamiento lo presentan otras funciones built-in?

def _get_client_name():
    client_name = None
    while not client_name:
        client_name = input('What is the client name?')
    
    return client_name

Un bucle while permite repetir la ejecuci贸n de un grupo de instrucciones mientras se cumpla una condici贸n (es decir, mientras la condici贸n tenga el valor True). La ejecuci贸n de esta estructura de control while es la siguiente: Python eval煤a la condici贸n: si el resultado es True se ejecuta el cuerpo del bucle.

Las foor loops iteran a lo largo de una secuencia, mientras que las while loops iteran mientras una condici贸n sea verdadera(m谩s bien mientras la condici贸n se cumpla).

Mi c贸digo ya itera al infinito a menos de que le digamos lo contrario, usando el

while True # Para el hilo principal

y

while not variable # Para cada input que se pide

https://github.com/behagoras/basic-python/tree/infinite_loop

Veo que no se explico bien sobre el sys, hace referencia al sistema al 鈥淪ystem Exit鈥. Sale del programa directamente.

def _get_client_name():
    client_name = None
    while not client_name:
        client_name =  input('What is your client name?')
        if client_name == 'exit':
            client_name = None
            break

    if not client_name:
        sys.exit()    return client_name```
def _get_client_name():
    client_name = None;

    while not client_name:
        client_name = input('What is the client name: ');

        if client_name == 'exit':
            sys.exit();
    
    return client_name.capitalize();```

Con la opcion [C]reate clients, cuando ingreso las primeras letras de algun nombre de la lista me dice que ya existe, por ejemplo: 鈥榩abl鈥 or 鈥榬icar鈥

Esto por que pasa?

import sys

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, update_client_name):
	global clients

	if client_name in clients:
		clients = clients.replace(client_name + ',', update_client_name + ',')
	else:
		_not_client_name()


def delete_client(client_name):
	global clients

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

	else:
		_not_client_name()

def search_client(client_name):
	clients_list = clients.split(',')

	for client in clients_list:
		if client != client_name:
			continue
		else:
			return True


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 clients')
	print('[U]pdate clients')
	print('[D]elete clients')
	print('[S]earch clients')
	

def _get_client_name():
	client_name = None

	while not client_name:
		client_name = raw_input('What is the client name')

		if client_name == 'exit':
			client_name = None
			break

	if not client_name:
		sys.exit()

	return client_name


def _not_client_name():
	print('The Client: {} is not our client\'s list'.format(client_name))


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

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

	elif command == 'D':
		client_name = _get_client_name()
		delete_client(client_name)
		list_clients()

	elif command == 'U':
		client_name = _get_client_name()
		update_client_name = raw_input('What is the update client name')
		update_client(client_name, update_client_name)
		list_clients()

	elif command == 'S':
		client_name = _get_client_name()
		found = search_client(client_name)

		if found:
			print('The client is in the client\'s list')
		else:
			_not_client_name()
	else:
		print('Invalid command')```

def _get_a_client_name():
new_client = None

while not new_client:
    new_client = input("Whats is the name of client_name: ")

    if new_client == ("exit"):
        new_client = None
        break

if not new_client:
    sys.exit()

return new_client

Si no me equivoco, cuando se te acaba la memoria RAM y sigues necesitando de espacio para ejecutar programas, tu computadora empezar谩 a utilizar el espacio del disco duro, el cual es s煤per lento y por eso tu computadora empezar谩 a estar tan lenta.

El curso esta cumpliendo con todas las expectativas, nice!!!

No te angusties por los errores.

Los While loop hasta obtener el dato que tenemos.

Es muy divertido hacer infinites loops para experimentar.

En el caso de Python, el while loop el que tiene solo la capacidad de verificaci贸n.

IMPORTANTE Al momento de utilizar un ciclo while es sumamente importante que pienses bien el por que y para que pues que esto te ayuadara encontrar mucho mas el caso de falsedad, por ejemplo en un video juego podemos utilizar un while para que el jugador pueda realizar hechos mientras tenga mana para el mismo, asi sucesivamente seria un caso real del while loop.

Les comparto mi codigo

import sys

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


def delete_client(client_name):
    global clients

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

    else:
        _print_message_client()


def seach_client(client_name):
    global clients
    client_list = clients.split(',')

    for client in client_list:
        if client != client_name:
            continue
        else:
            return True


def _add_comma():
    global clients

    clients += ','


def _print_welcome():
    print('=' * 40)
    print('Welcome to Platzi ventas')
    print('=' * 40)
    print('What would you like to do today')
    print('-' * 40)
    print('[C]reate client')
    print('[L]ist   client')
    print('[U]pdate client')
    print('[D]elete client')
    print('[S]earch client')
    print('*' * 40)


def _get_client_name():
    client_name = None

    while not client_name:
        client_name = input('What is the client name? ')

        if client_name == 'exit':
            client_name = None
            break

    if not client_name:
        sys.exit()

    return client_name


def _print_message_client():
    print('Client is not in clients list')

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':
        client_name = _get_client_name()
        delete_client(client_name)
        list_clients()
    elif command == 'L':
        list_clients()
    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()
    elif command == 'S':
        client_name = _get_client_name()
        found = seach_client(client_name)
        if found:
            print('The client is in the client\'s list')
        else:
            print('The client: {} is not in our client\'s list'.format(client_name))
    else:
        print('Invalid command')
import sys
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 search_client(client_name):
    global clients

    client_list = clients.split(',')
    for client in client_list:
        if client != client_name:
            continue
        else:
            return True


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


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

def list_client():
    global clients
    print(clients)

def _get_client_name():
    client_name = None
    while not client_name:
        client_name =  input("What's client Name? ")
        if client_name == 'exit':
            client_name == None
            break
    if not client_name:
        sys.exit()
    return 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] Search Client
        [E] 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 == 'S' or option == 's':
            name = _get_client_name()
            found = search_client(name)
            if found:
                print('The client is in the client\'s list')
            else:
                print('The client: {} is not in our client\'s list'.format(name))

        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 == 'D' or option == 'd':
            name = _get_client_name()
            delete_client(name)
            list_client()

        elif option == 'E' or option == 'e':
            active = False