Aprendiendo Python 10 minutos al día # 5

Esta es una serie de artículos breves de Python de 10 minutos que lo ayudan a aumentar su conocimiento de Python. Trato de publicar un artículo todos los días (sin promesas), comenzando desde lo más básico, hasta expresiones idiomáticas más complejas. No dude en ponerse en contacto conmigo en LinkedIn para preguntas o solicitudes sobre temas particulares de Python que desea conocer.

En la primera sesión ya vimos la función integrada ” imprimir ” que puede imprimir texto, números, en realidad cualquier cosa, en la pantalla. Para llamar a una función, necesitamos escribir su nombre ( imprimir en este caso), seguido de un conjunto de paréntesis. Entre paréntesis, se pasan los parámetros de la función. La función incorporada no necesita ningún parámetro y se puede llamar usando: ” print () ” para imprimir una línea vacía en la pantalla. Le hemos pasado un parámetro, que era la frase corta ‘hola mundo’. Este parámetro es un objeto de tipo ” str “, que es una cadena en Python. No dude en consultar el DocString de la función de impresión incorporada utilizando el ‘?’ Hemos aprendido antes.

Se puede asignar una cadena usando comillas simples, comillas dobles o como su variante de varias líneas indicada por tres veces un símbolo de comilla. Este último método que ya vimos al crear DocStrings:

# Both, single and double quotes are fine to assign strings
my_name =Dennis Bakhuis
course_name = “Variables: representing text using strings”
# Use, the other type if you want to include quotes in a string
nice_day = “it’s a beautiful day!”
quote = ‘and he said:”give me some cake!”‘
# or you escape characters using
i_like_single_qoutes = ‘hes a great guy’
# Multi-line strings start with three times the quote symbol
multi_line_string = ”’
this is a
multi-line string”’
another_multi_line_string = “””hello
everybody”””
print(multi_line_string)

El nombre de la variable puede ser cualquier cosa, excepto las palabras clave como “es” o “no”. La función “imprimir” no es una de esas palabras clave, sino una función estándar y, técnicamente, podría sobrescribir esta función con una nueva variable. Todo en Python está representado por un objeto y una variable es simplemente una etiqueta. Al declarar una cadena con el nombre “print”, la etiqueta ahora apunta a su cadena recién creada y esto es completamente válido en Python. Por supuesto, esto probablemente no sea algo que desee, así que tenga cuidado con esto. Al elegir un nombre, intente hacerlo breve pero conciso, todas minúsculas y palabras separadas por guiones bajos. Si bien no es obligatorio definir sus variables de esta manera, es un estándar, documentado en el famoso pep8(Propuesta de mejora de Python # 8). Hay muchos documentos de pep, pero pep8 es una guía de estilo que ayuda a mejorar la legibilidad. El documento es demasiado largo para recordarlo y, por lo tanto, hay ayudantes para ayudarlo a diseñar su código, como Black o Flake8 , pero lo analizaremos en una etapa posterior. Como estos formateadores automáticos no pueden ayudarlo con los nombres de las variables, intente utilizar la convención propuesta. Le ayudará a hacer que su código sea legible.


De la documentación : Las cadenas son secuencias inmutables de puntos de código Unicode. Esto significa que una cadena es una secuencia de caracteres y, como es inmutable, después de la asignación no puede cambiar. El término inmutable me ha confundido cuando comencé a aprender Python. ¿Por qué querríamos tener una cadena, que no se puede cambiar después de la definición? Lo que quieren decir con inmutable es que si hacemos una operación en una cadena, la cadena original no cambia, pero se crea una nueva cadena a partir del resultado. Si coloca el resultado en la variable original (con el mismo nombre, es decir, referencia), sobrescribe la referencia al objeto antiguo y la variable apunta a su nuevo resultado. Si ninguna otra variable hace referencia al objeto original, Python usa su recolector de basura para eliminar la cadena de la memoria.
Hay bastantes operaciones que se pueden realizar en cadenas. Una de las operaciones más comunes es la concatenación de cadenas y esto se hace como si agregamos dos números (usando el operador ‘+’). Si bien es un poco menos común, también puede multiplicar cadenas usando el operador ‘*’, para crear una nueva cadena a partir de un múltiplo de la cadena original. Supongo que el uso es muy específico.
Como es una secuencia de caracteres, tiene una longitud de secuencia. Para obtener la longitud, existe la función integrada “len”. Otra propiedad de una secuencia es que podemos iterar sobre los caracteres muy fácilmente. Todavía no hemos discutido los bucles for, pero la sintaxis es muy legible, por lo que estoy bastante seguro de que obtendrá el siguiente ejemplo.

# sequences are glued together
a = “hello”
b = ” “
c = “world”
d = a + b + c
print(d)
print(‘hello! ‘ * 5)
# we can get the length of the string
len(d) # can you guess the type it returns?
# to iterate over each letter, we simply do a for-loop:
for char in d:
print(char)

Todo en Python es un objeto y, por lo tanto, cada objeto está lleno de métodos relevantes. La clase str tiene muchos métodos para elegir, que generalmente olvido y tengo que buscar en Google. En Jupyter o IPython, puede escribir el nombre de la variable con un punto y luego presionar <tab> para obtener sugerencias.

¡Tab-completions es amigo de todos!

La mayoría de estos métodos tienen nombres que se explican por sí mismos, como “inferior”, “superior” e “isdigit”. Otros pueden necesitar alguna explicación y siempre podemos echar un vistazo a DocString. Los métodos que uso con bastante frecuencia son .split (), .replace () y .join (). A medida que estos métodos devuelven una nueva cadena, puede encadenar múltiples comandos. Por lo tanto, es muy válido hacer my_string.lower (). Split () y las cadenas más largas son incluso posibles. Solo tenga en cuenta la legibilidad al crear cadenas.
Otra técnica que es posible en las cadenas (porque son secuencias) es el corte. Si bien cortar una cadena puede tener casos de uso muy específicos, el procedimiento es idéntico a otros tipos de datos similares a secuencias. Con el corte, puede seleccionar el elemento iᵗʰ de una secuencia, indicando su número secuencial entre corchetes. Python cuenta desde cero, por lo que el primer elemento se indica como “my_string [0]”. También puede seleccionar un elemento, contando desde atrás utilizando números negativos. El último elemento de una cadena es “my_string [-1]”. Si desea seleccionar varios caracteres, puede usar un rango que se construye como [inicio: fin: paso]. En Python los rangos incluyen el elemento “inicio” pero noincluido el elemento “final”.

 El paso indica cuántos caracteres omites. Si establece el paso en 1, se seleccionan todos los caracteres, si el paso es 2, se omite cada segundo carácter. No es necesario proporcionar todo (inicio, final, paso). Si no se proporciona ningún paso, se utiliza el valor predeterminado de 1. Solo proporcionar un final, por lo que no tener valor antes del punto y coma, significa todo hasta el final (pero sin incluir). Aquí hay un par de ejemplos:

dirty_string = ‘ WhAt iS hApPenIng? ‘
clean_string = dirty_string.strip().lower()
print(clean_string)
# Select a specific indec
abc = ‘abcdefghijklmnopqrstuvwxyz’
print(‘The third letter:’, abc[2])
# Slicing is great and is used regularly in Python
a = ‘This is a string called “a”. ‘
print(a[0:4]) # Select ‘This’
print(a[:4]) # likewise
print(a[4:]) # Select all but ‘This’
print(a[5:2]) # select “a” backwards
# Using step parameter
print(‘abababababa’[1::2]) # Select all b’s
print(‘abababababa’[0::2]) # Select all a’s
# Indices that are out of range
empty_string = a[5:4] # it should be a positive range, or a negative step
print(‘empty_string:’, empty_string)
same_as_a = a[0:9999] # the ‘end’ parameter may be out of bounds
print(‘same_as_a:’, same_as_a)
this_would_raise_an_IndexError = a[999] # the ‘start’ parameter may not!

Un tema importante es el formateo de cadenas, es decir, la creación de cadenas que muestren contenido dinámico en variables. En los últimos años, la forma de hacerlo ha cambiado un par de veces. Primero, estaba el operador porcentual, que funcionaba, pero no era excelente. Más tarde, el método .format () se agregó a las cadenas para dar mucha más flexibilidad. Desde Python3.6, las cadenas f están disponibles y agregan aún más flexibilidad. Las cadenas f son un tipo especial de cadenas, indicado por la ‘f’ antes de la cadena. En mi opinión, las cadenas f también son más legibles que el método .format (), por lo tanto, le aconsejo que use cadenas f si puede. Las opciones de formato no solo se limitan a mostrar la variable en sí, sino que también pueden agregar relleno, precisión numérica, tipos y mucho más. Aquí hay una gran hoja de trucos .
a_string = ‘probably’
b_string = ‘way’
# The old way of formatting strings
print(‘this is %s a great %s’ % (a_string, b_string))
# An improved way using .format()
print(‘this is {} a great {}’.format(a_string, b_string))
# The f-string way:
print(f’this is {a_string} a great {b_string})
# formatting text with padding/size
# the ^ operator centers the text within the size given
# the > adds padding to the left to make the string the size given
print(f’this is {a_string:^12} a great {b_string:>10})
# precision is sometimes easier than rounding
value = 1.128456
print(f’Some value: {value:.2f})
# and formatting knows about percentages
percent = 0.84
print(f’Percentage: {percent:%})
print(f’Percentage: {percent:.2%})
Hay muchos detalles sobre las cadenas y mi consejo general es buscarlos cuando los necesite. Con el tiempo, quizás hasta recuerdes una pareja ;-).

Practica por hoy:

  1. En un nuevo cuaderno, asigne varias cadenas.
  2. Cambie la siguiente cadena: “Mi nombre es Jimmy y tengo 100 años” usando métodos, para tener su nombre y edad. (pista: reemplazar ())
  3. Corta y combina ‘Estoy feliz’ de las siguientes cadenas:
    c, d = ‘Estoy triste’, ‘Desearía estar feliz’
  4. Juegue con un par de cadenas f, por ejemplo, muestre valores con diversa precisión y cree un porcentaje sin decimales.


Si tiene alguna pregunta, no dude en ponerse en contacto conmigo a través de LinkedIn .


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Más info

aceptar