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 en Python

14/49
Recursos

Los strings tienen varios métodos que nosotros podemos utilizar.

  • upper: convierte todo el string a mayúsculas
  • lower: convierte todo el string a minúsculas
  • find: encuentra el indice en donde existe un patrón que nosotros definimos
  • startswith: significa que empieza con algún patrón.
  • endswith: significa que termina con algún patrón
  • capitalize: coloca la primera letra en mayúscula y el resto en minúscula

in y not in nos permite saber con cualquier secuencia sin una subsecuencia o substrings se encuentra adentro de la secuencia mayor.

dir: Nos dice todos los métodos que podemos utilizar dentro de un objeto.
help: nos imprime en pantalla el docstrings o comentario de ayuda o instrucciones que posee la función. Casi todas las funciones en Python las tienen.

Aportes 65

Preguntas 5

Ordenar por:

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

Dunder methods: También conocidos como métodos mágicos (magic métodos) o special methods (métodos especiales).
https://docs.python.org/3/reference/datamodel.html#special-method-names

MÉTODOS DE CADENAS

  • METODO CENTRAR
    La funcion retorna una ‘cadena’ con rellenado con una cantidad especifica de caractéres

    POR EJEMPLO
    nombre='Alexander' nombre.center(20,'*')
    output = *****alexander******

  • METODO COUNT
    El metodo count() devuelve el numero de coincidencias de una subcadena que contiene la cadena
    POR EJEMPLO:

	nombre = 'alexander'
	nombre.count('a')		=> 2
	nombre.count('a',1,-1) 	=> 1
  • MÉTODO CAPITALIZE
    Devuelve una copia de la cadena con el primer caracter en mayuscula.
    POR EJEMPLO :

    nombre="alexANder"
    nombre.capitalize() => "Alexander"
    
  • MÉTODO ENDSWITH
    Devuelve verdadero si la cadena finaliza en el sufijo especificado,en caso contrario falso.
    POR EJEMPLO:

    nombre='Alexander'
    nombre.endswith('DER') => false
    nombre.endswith('der') => true
    
  • MÉTODO FIND
    Devuelve el menor índice de la cadena para que el sub se encuentre, también recibe 2 argumentos opcionales de inicio y fin. Nos devuelve -1 si no se halla el substring.
    POR EJEMPLO

    nombre = 'Alexander'
    nombre.find('exa')		=> 2
    nombre.find('exa',5)	=> -1
    
  • MÉTODO ISALNUM
    devuelve verdadero si todos los caracteres son alfanuméricos y hay al menos un caracter.
    POR EJEMPLO:

    nombre = "Alexander"
    nombre.isalnum() 		=> true
    prueba = ""			
    prueba.isalnum() 		=> false
    test 	="alexander@@@"
    test.isalnum() 			=> false
    

- MÉTODO ISALPHA()
	devuelve verdadero si todos los caracteres son alfabéticos.
	POR EJEMPLO:
	```
	nombre="alexander"
	nombre.isalpha() 		=>true
	nombre="alexander745"
	nombre.isalpha() 		=>false
	```

- MÉTODO ISDIGIT
	devuelve verdadero si todos los caracteres son dígitos.
	por ejemplo:
	```
	codigo="4785"
	codigo.isdigit() 		=> true
	```

Lista completa de operadores de Strings

Ver artículo original
*

Method Description
capitalize() Convierte el primer carácter en mayúsculas
casefold() Convierte una cadena en minúsculas
center() Devuelve una cadena centrada
count() Devuelve el número de veces que un valor especificado se produce en una cadena
encode() Devuelve una versión codificada de la cadena
endswith() Devuelve true si los extremos de cadena con el valor especificado
expandtabs() Establece el tamaño de la pestaña de la cadena
find() Busca la cadena de un valor especificado y devuelve la posición de donde fue encontrado
format() Formatos especifican los valores de una serie
format_map() Formatos especifican los valores de una serie
index() Busca la cadena de un valor especificado y devuelve la posición de donde fue encontrado
isalnum() Devuelve verdadero si todos los caracteres de la cadena son alfanuméricos
isalpha() Devuelve True si todos los caracteres de la cadena están en el alfabeto
isdecimal() Devuelve True si todos los caracteres de la cadena son decimales
isdigit() Devuelve verdadero si todos los caracteres de la cadena son dígitos
isidentifier() Devuelve True si la cadena es un identificador
islower() Devuelve verdadero si todos los caracteres de la cadena son minúsculas
isnumeric() Devuelve verdadero si todos los caracteres de la cadena son numéricos
isprintable() Devuelve verdadero si todos los caracteres de la cadena son imprimibles
isspace() Devuelve True si todos los caracteres de la cadena son espacios en blanco
istitle() Devuelve True si la cadena sigue las reglas de un título
isupper() Devuelve True si todos los caracteres de la cadena son mayúsculas
join() Se une a los elementos de un iterable al final de la cadena
ljust() Devuelve una versión justificada izquierda de la cadena
lower() Convierte una cadena en minúsculas
lstrip() Devuelve una versión de ajuste izquierdo de la cuerda
maketrans() Devuelve una tabla de traducción para ser utilizado en traducciones
partition() Devuelve una tupla donde la cadena se separó en tres partes
replace() Devuelve una serie en un valor especificado es reemplazado con un valor especificado
rfind() Busca la cadena de un valor especificado y devuelve la última posición de donde fue encontrado
rindex() Busca la cadena de un valor especificado y devuelve la última posición de donde fue encontrado
rjust() Devuelve una versión justificada derecha de la cadena
rpartition() Devuelve una tupla donde la cadena se separó en tres partes
rsplit() Divide la cadena en el separador especificado y devuelve una lista
rstrip() Devuelve una versión ajuste correcto de la cadena
split() Divide la cadena en el separador especificado y devuelve una lista
splitlines() Divide la cadena en los saltos de línea y devuelve una lista
startswith() Devuelve true si la cadena comienza con el valor especificado
strip() Devuelve una versión recortada de la cadena
swapcase() Permutas de los casos, se convierte en minúsculas mayúsculas y viceversa
title() Convierte el primer carácter de cada palabra en mayúsculas
translate() Devuelve una cadena traducida
upper() Convierte una cadena en mayúsculas
zfill() Rellena la cadena con un número determinado de valores de 0 a principios


usando el help(str) en el interpete nos muestra la ayuda de los metodos asociados a la clase str

title() sirve para los nombres, ejemplo:
peter pan -> Peter Pan
Convierte la primera letra de cada palabra a mayúsculas

Un truco para limpiar su consola o el interprete de Python. Pulsen CTRL + L. Funciona en linux y MacOs, no se si en Windows tambien

Para los que les gustaria saber que es "pass"
Aquí pueden ver un ejemplo.

Mi código comentado de este ejercicio, espero les sirva 😎👍

#Métodos para maipular strings
print("#Métodos para maipular strings")
var_string = "var_string = Initial text"
print (var_string)
print('-'*75)

new_string = var_string.upper()
print ("var_string.upper = ", new_string, " | Convert text to capital letters" )
print('-'*75)

new_string = var_string.lower()
print ("var_string.lower = ", new_string, " | Convert text to lowercase letters" )
print('-'*75)

new_string = var_string.find("a")
print ("var_string.find('a') = ", new_string, "  | Show the first character´s position in the text string, is case sensitive " )

new_string = var_string.find("i")
print ("var_string.find('i') = ", new_string, "  | Remember is case sensitive " )

new_string = var_string.find("z")
print ("var_string.find('z') = ", new_string, " | If there´s not a character the result is -1 " )

print('-'*75)

new_string = var_string.capitalize()
print ("var_string.capitalize = ", new_string, "| Convert the first character of the string into a capital letter")

print('-'*75)

if var_string.startswith('i'):
	print("if var_string.endswith('i'): print ('it´s true, te strings starts with: 'i' ')")
	print('it´s true, te strings ends with: "i"')

print('-'*75)

if var_string.endswith('t'):
	print("if var_string.endswith('t'): print ('it´s true, te strings ends with: 't' ')")
	print('it´s true, te strings ends with: "t"')

print('-'*75)
print('-'*75)

#Operadores de pertenencia, nos permiten sabes si un substring, es decir una subsecuencia se encuentra en la secuencia mayor 
#Por ejemplo la subsecuencia col esta dentro de colombia
#Distingue entre maysuculas y minusculas
print ("Operadores de pertenencia")
var_string = "Hola"
print ('var_string = "Hola"')
if "Ho" in var_string :
	print('if "Ho" in var_string :')
	print('The substring "Ho" is into the string "Hola" ')

print('-'*75)

if "mundo!" not in var_string :
	print('if "mundo!" not in var_string :')
	print('var_string += "mundo!"')
	var_string += " mundo!"
	print("var_string = ", var_string)	

#La función global dir nos dice los métodos que podemos utilizar dentro de un objeto
print('-'*75)
print('The dir() function, show us all the methods that we can use with an element')
print('For example:')
print('dii(car_string)')
print ( dir(var_string) )
print('-'*75)

print('-'*75)

def my_function():
	"""Este es un texto de ayuda de como utilizar esta funcion"""
	pass

print(help(my_function))

print('-'*75)
print("Presiona enter para salir")
input()


¿Cual sería la diferencia entre usar las comillas triples y el numeral (#) para colocar anotaciones? Supongo que el numeral no responde al comando help.

En Windows para salir del operador ‘help’, y volver a la consola tenemos que pulsar ‘q’.

Estos son metodos de formato en Python:.

Convertir a mayúscula la primera letra
Método: capitalize()

Retorna:
una copia de la cadena con la primera letra en mayúsculas.

cadena = "bienvenido a mi aplicación"
print cadena.capitalize()
Bienvenido a mi aplicación

Convertir una cadena a minúsculas
Método: lower()

Retorna: una copia de la cadena en minúsculas.

cadena = "Hola Mundo"
print cadena.lower()
hola mundo

Convertir una cadena a mayúsculas
Método: upper()

Retorna: una copia de la cadena en mayúsculas.

cadena = "Hola Mundo"
print cadena.upper()
HOLA MUNDO

Convertir mayúsculas a minúsculas y viceversa
Método: swapcase()

Retorna: una copia de la cadena convertidas las mayúsculas en minúsculas y viceversa.

cadena = "Hola Mundo"
print cadena.swapcase()
hOLA mUNDO

Convertir una cadena en Formato Título
Método: title()

Retorna: una copia de la cadena convertida.

cadena = "hola mundo"
print cadena.title()
Hola Mundo

Centrar un texto
Método: center(longitud[, “caracter de relleno”])

Retorna: una copia de la cadena centrada.

cadena = “bienvenido a mi aplicación”.capitalize()
print cadena.center(50, “=”)
=Bienvenido a mi aplicación==

print cadena.center(50, " ")
Bienvenido a mi aplicación

Alinear texto a la izquierda
Método: ljust(longitud[, “caracter de relleno”])

Retorna: una copia de la cadena alineada a la izquierda.

cadena = “bienvenido a mi aplicación”.capitalize()
print cadena.ljust(50, “=”)
Bienvenido a mi aplicación=======================

Alinear texto a la derecha
Método: rjust(longitud[, “caracter de relleno”])

Retorna: una copia de la cadena alineada a la derecha.

cadena = “bienvenido a mi aplicación”.capitalize()
print cadena.rjust(50, “=”)
=======================Bienvenido a mi aplicación

print cadena.rjust(50, " ")
Bienvenido a mi aplicación

Rellenar un texto anteponiendo ceros
Método: zfill(longitud)

Retorna: una copia de la cadena rellena con ceros a la izquierda hasta alcanzar la longitud final indicada.

numero_factura = 1575
print str(numero_factura).zfill(12)
000000001575

Funcion split() en python vs rsplit()

Estuve interactuando con los diferentes metodos de la lista y me gusto los resultados de muchas de ellas aunque en algunas me sale error.

help(): Accedemos a los docstrings que nos explica que hace la función.

La palabra más larga en español es "Anticonstitucionalmente"
La palabra más larga en inglés es: “pneumonoultramicroscopicsilicovolcanoconiosis”

Con la clase he querido probar el avance y decidi hacer una funcion que separe el nombre teniendo en cuenta los espacios, y los concatene con punto y coma, en código puro:

  1. Para el eje_y: busco las posiciones donde hay espacios y las adiciono a un arreglo, y le agrego la longitud de la cadena como ultimo valor.

[4, 11, 20, 27]

  1. Para el eje_x: Agrego el 0 al arreglo del eje_x, y hago el recorrido tomando como referencia el arreglo del eje_y, mientras que el valor i del eje_y que estoy recorriendo, sea menor al maximo valor del eje_y sumare en 1 y lo adicionare al arreglo del eje_x.

[0, 5, 12, 21] =[0,4+1,11+1,20+1]

  1. creo la funcion separar nombre y le paso 3 parametros (nombre, ejex, ejey) hago el recorrido del eje_y, podría tomar también el eje_x, ambos tienen la misma longitud, y almaceno en la variable complete_name el nombre separado por eje_x y eje_y (start, end), y hago una condición para agregar el punto y coma.

Claro esta, no quiero reinventar la rueda, hay otras formas más sencillas que ya vienen con python, pero he querido entender el funcionamiento interno y hacerlo por mi cuenta para practicar, les dejo también las otras opciones.

#Second way
fname_space = fname.split()
print(f'{fname_space}')
print(f'{";".join(fname_space)}')

#third way
print(fname.replace(' ',';'))

Saludos chicos les dejo este link muy util para enriquezer esta clase.

center, centra la cadena de caracteres entre espacios o en el caracter que le pongamos como parametro

platzi.center(20)
'       platzi       '
platzi.center(20, 'x')
'xxxxxxxplatzixxxxxxx'

A summary of docstring

⭐ 👀 Docstring in Python

Docstrings are accesible from the doc attribute (__doc__) for any of the Python objects and also with the built-in help() function.

Docstrings are great for understanding the functionality of the larger part of the code. They are a descriptive text written by a programmer mainly for themselves to know what the line of code does.

Docstring vs Commenting:

  • Docstrings are similar in spirit to commenting, but they are enhanced, more logical, and useful version of commenting. Docstrings acts as documentation for the class, module and packages.
  • On the other hand, Comments are mainly used to explain non-obvious portions of the code and can be useful for comments on Fixing bugs and tasks that are needed to be done.
  • The comment can´t be accessed with the built-in doc attribute and help function.

One-line Docstring

def square(a):
    '''Returned argument a is squared.''' #or you can use """ xxxx """
    return a**a

Multi-LineDocstring

def some_function(argument1):
    """Summary or Description of the Function

    Parameters:
	    argument1 (int): Description of arg1

    Returns:
	    int:Returning value

   """

    return argument1

Alguien me dice para que sirve pass?

Split en el ejemplo una cadena de caracteres separada por espacios al aplicar la función me los convierte en ,

Strings Methods
capitalize()
casefold()
center(width[, fillchar])
count(sub[, start[, end]])
encode(encoding=“utf-8”, errors=“strict”)
endswith(suffix[, start[, end]])
expandtabs(tabsize=8)
find(sub[, start[, end]])
format(*args, **kwargs)
format_map(mapping)
index(sub[, start[, end]])
isalnum()
isalpha()
isdecimal()
isdigit()
isidentifier()
islower()
isnumeric()
isprintable()
isspace()
istitle()
isupper()
join(iterable)
ljust(width[, fillchar])
lower()
lstrip([chars])
maketrans(x[, y[, z]])
partition(sep)
replace(old, new[, count])
rfind(sub[, start[, end]])
rindex(sub[, start[, end]])
rjust(width[, fillchar])
rpartition(sep)
rsplit(sep=None, maxsplit=-1)
rstrip([chars])
split(sep=None, maxsplit=-1)
splitlines([keepends])
startswith(prefix[, start[, end]])
strip([chars])
swapcase()
title()
translate(table)
upper()
zfill(width)

Documenyació que nos puede ayudar: https://docs.python.org/3/library/string.html

Dato curioso.
Si le aplicamos la función _.lower() _a una letra mayúscula, esta se convierte en minúscula, pero aún así se guarda en un lugar de memoria diferente al de la letra “original” en minúscula.

¿alguien sabe por que?

Para javascript

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3);

Veo que no se ha dicho algo importante y es que cuadno se usa help() por ejemplo en nuestra variabel despues del explorarla con dir() debemos usar la variable y la function, ejemplo:

  • dir(platzi) este da todo las functions disponibles y para aplciarle el help es con
  • help(platzi.FUNCTION) por ejemplo la function partition() entonces, help(platzi.partition)

Esto me ayudo muchisimo, y me alegra verlo en el curso. La documentación lo enseña.


  • How can I find the methods or attributes of an object?
    For an instance x of a user-defined class, dir(x) returns an alphabetized list of the names containing the instance attributes and methods and attributes defined by its class.

para mas información
https://docs.python.org/3/faq/general.html#is-python-a-good-language-for-beginning-programmers

country=“colombia”
#imprime la ultima letra
print(country[-1])
print(len(country))
#añade la letra S
country+="s"
print(country)

declaré la variable juan
juan = 'juan’
y le apliqué help entre corchetes así:
help([juan])

No puedo negar, que sin duda este es el mejor curso que tienen de Python, la verdad todos son buenos, pero hasta el momento, este es el que mas me gusta

En las triples comillas “”" pueden utilizar los enters sin problemas, pueden escribir en varios renglones sin tener que usar un \n como en las string normales

Muy interesante lo que podemos hacer con el método help()

La función dir(objeto) nos muestra un listado de las cosas que podemos hacer con ese objeto.

help(objeto) nos regresa el mensaje que se encuentra en las 6 comillas dobles.

hay bastante métodos para utilizar. muy bueno

Practica de Clase Aqui escribo algunos metodos que pude practicar para esta clase

  • String Method

Casefold: Vuelve minusculas las palabras

emilio = 'EMILIO’
emilio.casefold()
‘emilio’

Center:

emilio.center(24)
’ EMILIO ’

Count: Cuenta cuantas palabras iguales hay en un string

string1 = 'Programmer is awesome’
print(string1.count(“awesome”))
1

Encode:Codifica a uft un texto

string = 'emilio’
print('The string is: ', string)
The string is: emilio

string_utf = string.encode()
print('The encoded string is: ‘, string_utf)
The encoded string is: b’emilio’

EndSwith:Verifica si el final del string coincide

text = 'Python is for learn easy’
result = text.endswith(‘is for learn easy’)
print(result)
True

Expandtabs:Tabula varios string

string = 'xyz\t123456\tabc’
result = string.expandtabs()
print(result)
xyz 123456 abc

Format: Forma distinta de concatenar string

print(“Hi {}. your balance is {}.”.format(“Emilio”, 165.52))
Hi Emilio. your balance is 165.52.

print(“Hi {name}. your balance is {balance}.”.format(name=“Emilio”, balance=165.52))
Hi Emilio. your balance is 165.52.

Format_map:Otra forma distinta de concatenar string

point = {‘x’:5, ‘y’:-67}
print(’{x} {y}’.format(**point))
5 -67

Index: Este no lo logre entender muy bien

phrase = 'Hi mom how are you’
result = phrase.index(‘are you’)
print(result)
11

Isalnum:Verifica si tiene caracteres numeros y alfanumericos

Name = 'Emilio123’
print(Name.isalnum())
True
Si posee otro que no sea ese da false

Name = 'Emili??[o’
print(Name.isalnum())
False

Isalpha: Devuelve verdadero si todos los caracteres son del alfabeto, en mi caso como tenia espacio entre palabras dio falso y cuando los uni dio verdadero

Name = 'Emilio Nunez’
print(Name.isalpha())
False

Name = 'EmilioNuñez’
print(Name.isalpha())
True

Isdecimal: Verifica si el valor es decimal

IsOrNot = "253525"
print(IsOrNot.isdecimal())
True

IsOrNot = "25352kj5"
print(IsOrNot.isdecimal())
False

Isidentifier: Devuelve verdadero si es identificador valido en python

str = 'Python’
print(str.isidentifier())
True

str = 'ifa’
print(str.isidentifier())
True

str = 'ifa333’
print(str.isidentifier())
True

str = 'if a’
print(str.isidentifier())
False

Isprintable:

s = 'Space is a printable’
print(s)
Space is a printable

print(s.isprintable())
True

Isspace: verifica si tiene espacios

s = ’ '
s.isspace()
True

s = ''
s.isspace()
False

Istitle: Verifica si la cadena es un titulo

t = 'Hi How Are’
t.istitle()
True

t = 'Hi how are’
t.istitle()
False

Join: Usando listas y tuplas

list = [‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
seperator = ', '
print(seperator.join(list))
1, 2, 3, 4, 5

list = {‘1’, ‘2’, ‘3’, ‘4’, ‘5’}
print(seperator.join(list))
1, 2, 4, 3, 5

Ljust:

string = 'dog’
width = 6
print(string.ljust(width))
dog

string = 'dog’
width = 6
fillchar = ''
print(string.ljust(width, fillchar))
dog
**

Aqui algunas pruebas que realice con help de python:
help(str)
dir(str)
help(str.splitlines)
import time
help(time)

>>> help('random thing')
>>> help('print')
>>> help('def')```

Función Help (doc string), para crear documentación a una función se asigna las triples comillas dobles.
Ejemplo

def my_function():
    """Este es un texto de ayuda de como utilizar esta función"""
    pass
help(my_function)

información acerca de la función help

Genial!!

A que se debe el siguiente error al utilizar “help(my_funtion)”:
more no se reconoce como un comando interno o externo

Entendido y poniendo en práctica.

Comentarios en python

con triple comillas doble “”“sdfsdfs”"""doy documentacion (docstring) a una funcion creada, con la cual daremos una descripcion de los parametros y de los elementos de salida, accediendo a estos por help(funcion_creada)

Puede ser util en el proyecto string.title(), toda inicial de las palabras las vuelve mayusculas, digo que podria ser util si en la lista de clientes se quiere que se muestre las iniciales con mayusculas y no se escribieron asi

Se explica el porque de los métodos que comienzan y terminan con __metodo__

casefold() Converts string into lower case
center() Returns a centered string
count() Returns the number of times a specified value occurs in a string

| Command | | Action |

| dir | | Muestra todos las funciones accesibles del objeto |
| Help | | imprime la documentación de la función |

Docstrings: Para generar una documentación utilizar triples dobles comillas """ :

def my_function():
    """ documentación de la función """ 
    pass

Estas fueron las opciones que me salieron cuando coloque help en my_funtion:

Excelente clase, vamos por mas

len() es muy útil!

Existen diferencias entre la función title() y la función capitalize():

Aquí la explicacion:

title() changes every word, but capitalize() only the first word in a sentence:

a = 'silly question’
a.title()
‘Silly Question’

a.capitalize()
‘Silly question’

.find(): Nos devuelve el índice a partir de donde está el patrón.

Para utilizar un método colocas la variable a utilizar seguida de un punto y el método terminandolo con ().

Las triples comillas se utilizan para dar una explicación de como funciona el programa que estas haciendo, o que es lo que realiza la función que lo contiene. A este se le llama docstring, y se le accede a través de la función help(‘la función’)

En vista de la importancia de los Docstring, me gustaría compartir lo siguiente:

Acá un poco más claro:

Under Methods y son los que permiten configurar cómo Python se ejecuta.

Las comparaciones en Python lexicográficas.

Este es un Update de mi comentario anterior hahahaha, descubri otro problema del código, el script marca como un nuevo cliente si antes de escribir el nombre agregamos un espacio por ejemplo: " ricardo ", así que agregue los operadores .lstrip() y .rstrip()

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 _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] create client')
    print('[D] delet client')

if __name__ == '__main__':
    _print_welcome()

    command = input()

    if command.upper() == 'C':
        client_name = input('What is the client name? ')
        create_client(client_name.lstrip().rstrip().capitalize().replace(" ", ""))
        list_clients()
    elif command == 'D':
        pass
    else:
        print('Invalid command')

Hola, comparto mi código de como he ido arreglando algunas cosas y corrigiendo algún tipo de vulnerabilidad de ingreso de clientes, el código va conforme vamos avanzado en el curso pero con algunos cambios

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 _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] create client')
    print('[D] delet client')

if __name__ == '__main__':
    _print_welcome()

    command = input()

    if command.upper() == 'C':
        client_name = input('What is the client name? ')
        create_client(client_name.capitalize().replace(" ", ""))
        list_clients()
    elif command == 'D':
        pass
    else:
        print('Invalid command')

el .replace(" ", “”) me ayuda a remplazar los espacios que sean agregados por ejemplo: j o s e
esto probocaria que el sistema ingrese el nombre con todo y espacios, y si es un nombre repetido como: r i c a r d o
Lo agregara ya que con los espacios sera otro tipo de memoria, lo que hará el .replace es eliminar los espacios de: r i c a r d o , y lo convertirá a: Ricardo, ya cuando sea ingresado el nombre Ricardo marcara que ya esta en el string de clientes, a diferencia de como nosotros lo llevamos hasta ahora. hehe si no entienden algo pueden responder el post y yo puedo ayudar UwU<3

un bune repaso sigamos u.u

wowow hay muchas cosas que podemos conocer a mayor profundidad a partir del uso de help() para abrir eldocstring`. No conocía la función pero será de mucha ayuda.

count. Encuentra un caracter dentro de un string y retorna la cantidad que hay del mismo.

platzi.count('a')
1

casefold, es similar a lower

>>> platzi.casefold()
'platzi'

¿Para qué sirve la sentencia pass?