Aprendiendo Python: de cero a héroe

      No hay comentarios en Aprendiendo Python: de cero a héroe

En primer lugar, ¿qué es Python? De acuerdo con su creador, Guido van Rossum, Python es un:

lenguaje de programación de alto nivel, su filosofía principal de diseño es la legibilidad del código y una sintaxis que permite a los programadores expresar conceptos con unas pocas líneas de código.

Para mi, la razón principal para aprender Python es que es un lenguaje de programación ‘bonito’. Es muy fácil codificar y expresar lo que estás pensando.

Otra razón es que podemos usar Python de múltiples maneras: ciencia de datos, desarrollo web, aprendizaje automático… Quora, Pinterest y Spotify usan Python en el backend de su web. Así que, aprendamos un poco.

Lo básico

1. Variables

Podemos entender las variables como palabras que almacenan datos. Así de sencillo.

En Python, es muy fácil definir una variable y asignarle un valor. Imagina que quieres almacenar el valor 1 en una variable llamada ‘uno’. Sería así:

uno = 1

Sencillo, ¿no? Acabas de asignar el valor 1 a la variable ‘uno’.

dos = 2
un_numero = 10000

Puedes asignar cualquier valor a cualquier otra variable. Como ves en el código anterior, la variable ‘dos’ almacena el valor 2 y ‘un_numero’ almacena 10000.

Además de enteros, también podemos usar booleanas (Verdadero/Falso), strings, floats y muchos otros tipos.

# booleans
true_boolean = True
false_boolean = False

# string
my_name = "Leandro Tk"

# float
book_price = 15.80

2. Control de flujo

«if» usa una expresión para evaluar si una sentencia es verdadera o falsa. Si es verdadera, ejecuta lo que hay dentro de la sentencia ‘if’. Por ejemplo:

if True:
  print("Hello Python If")

if 2 > 1:
  print("2 is greater than 1")

2 es mayor que 1, así que el código ‘print’ se ejecuta.

La sentencia ‘else’ se ejecutará si la expresión ‘if’ es falsa.

if 1 > 2:
  print("1 is greater than 2")
else:
  print("1 is not greater than 2")

1 no es mayor que 2, así que el código dentro de ‘else’ se ejecutará.

También puedes usar las sentencia ‘elif’:

if 1 > 2:
  print("1 is greater than 2")
elif 2 > 1:
  print("1 is not greater than 2")
else:
  print("1 is equal to 2")

3. Looping o iteraciones

En Python podemos iterar de diferentes formas. Hablaremos de dos, ‘while’ y ‘for’

While: mientras la sentencia es verdadera, se ejecutará el código dentro del bloque. Así pues, este código imprimirá los números del 1 al 10.

num = 1

while num <= 10:
    print(num)
    num += 1

While necesita una condición de iteración. Mientras sea verdadera, continúa iterando. En este ejemplo, cuando num es 11 la condición de iteración es falsa.

Otro ejemplo para entenderlo mejor:

condicion_iteracion = True

while condicion_iteracion:
    print("Loop Condition keeps: %s" %(condicion_iteracion))
    condicion_iteracion = False

La condicion_iteracion es verdadera, así que sigue iterando hasta que lo cambiamos a falso.

For: se aplica la variable num al bloque y la sentencia for la iterará. Este código imprime lo mismo que el código de while: de 1 a 10.

for i in range(1, 11):
  print(i)

Muy sencillo. El rango empieza en 1 y termina en 11 (10 es el décimo elemento)

List: Collection | Array | Estructura de datos

Imagina que quieres almacenar el entero 1 en una variable. Pero puede que también quieras almacenar el 2. Y el 3, 4, 5…

¿Tenemos otro modo de almacenar todos los enteros que queramos, pero no en millones de variables? Como imaginabas, hay otro modo de hacerlo.

‘List’ es una colección que puede usarse para almacenar listas de valores (como enteros). Usémoslo:

my_integers = [1, 2, 3, 4, 5]

Muy sencillo. Hemos creado un array y lo hemos almacenado en ‘my_integers’.

Y ahora te preguntas: ¿cómo recupero un valor del array?

Buenas pregunta. ‘List’ tiene un concepto llamado ‘índice’. El primer elemento tiene el índice 0, el siguiente 1 y así para los demás.

Para que sea más claro, podemos representar cada elemento del array con su índice. Un dibujo:

Usando la sintaxis de Python también es muy fácil de entender:

my_integers = [5, 7, 1, 3, 4]
print(my_integers[0]) # 5
print(my_integers[1]) # 7
print(my_integers[4]) # 4

Imagina que no quieres almacenar enteros. Quieres almacenar texto, por ejemplo una lista de los nombres de tus familiares. La mía sería algo así:

relatives_names = [
  "Toshiaki",
  "Juliana",
  "Yuji",
  "Bruno",
  "Kaio"
]

print(relatives_names[4]) # Kaio

Funciona igual que con enteros. Perfecto.

Acabamos de aprender como funcionan los índices de ‘List’. Pero aún necesitamos saber cómo podemos añadir elementos a ‘List’ (un item en una lista.)

El métodos más habitual para añadir un elemento a un ‘List’ es ‘append’. Veamos como funciona:

bookshelf = []
bookshelf.append("The Effective Engineer")
bookshelf.append("The 4 Hour Work Week")
print(bookshelf[0]) # The Effective Engineer
print(bookshelf[1]) # The 4 Hour Work Week

‘append’ es súper sencillo. Sólo tienes que usar el elemento («The Effective Engineer») como parámetro de ‘append’

Bueno, basta de ‘List’ Hablemos de otras estructuras de datos

Affiliated Ad

Diccionarios: Estructura de datos clave-valor

Ahora sabemos que ‘List’ está indexado por enteros. Pero, ¿qué pasa si no queremos usar enteros como índices? Algunas estructuras de datos que podemos usar son números, strings u otros tipos de índices.

Veamos la estructura de datos ‘Dictionary’. Estos son colecciones de pares clave-valor. Este es el aspecto que tienen:

dictionary_example = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

La clave (key) es el índice que apunta al valor (value). ¿Cómo accedemos al valor de un diccionario? A través de su clave. Veámoslo:

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian"
}

print("My name is %s" %(dictionary_tk["name"])) # My name is Leandro
print("But you can call me %s" %(dictionary_tk["nickname"])) # But you can call me Tk
print("And by the way I'm %s" %(dictionary_tk["nationality"])) # And by the way I'm Brazilian

He creado un diccionario acerca de mi. Mi nombre, mi mote (nickname) y nacionalidad. Estos atributos son las claves del diccionario.

Del mismo modo que hemos aprendido a acceder a ‘List’ usando índices, también usamos índices (claves en este caso) para acceder al valor almacenado en el diccionario.

En el ejemplo, he imprimido una frase acerca de mi usando todos los valores almacenados en el diccionario. Sencillo, ¿no?

Otra ventaja de los diccionarios es que podemos usar cualquier cosa como valor. En el diccionario que he creado, quiero crear lave ‘age’ (edad) y mi edad real como entero:

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian",
  "age": 24
}

print("My name is %s" %(dictionary_tk["name"])) # My name is Leandro
print("But you can call me %s" %(dictionary_tk["nickname"])) # But you can call me Tk
print("And by the way I'm %i and %s" %(dictionary_tk["age"], dictionary_tk["nationality"])) # And by the way I'm Brazilian

Aquí tenemos una pareja clave (age) y valor (24) usando un string como clave y un entero como valor.

Como hicimos con ‘List’, veamos como añadir elementos a un diccionario. La clave que apunta a un valor es gran parte de lo que es un diccionario. Esto también es cierto cuando hablamos de añadir elementos.

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian"
}

dictionary_tk['age'] = 24

print(dictionary_tk) # {'nationality': 'Brazilian', 'age': 24, 'nickname': 'Tk', 'name': 'Leandro'}

Tan sólo necesitamos asignar un valor a una clave del diccionario. Nada muy complicado, ¿no?

Iteración sobre estructuras de datos

Como vimos anteriormente, iterar sobre ‘List’ es muy sencillo. Los desarrolladores de Python normalmente usan ‘for’ para hacerlo:

bookshelf = [
  "The Effective Engineer",
  "The 4 hours work week",
  "Zero to One",
  "Lean Startup",
  "Hooked"
]

for book in bookshelf:
    print(book)

Así que para cada ‘book’ (libro) en ‘bookshelf’ (estantería) lo imprimimos. Sencillo e intuitivo, como Python.

Para estructuras de datos, también podemos usar ‘for’, pero aplicando la clave:

dictionary = { "some_key": "some_value" }

for key in dictionary:
    print("%s --> %s" %(key, dictionary[key]))
    
# some_key --> some_value

Este es un ejemplo de como usarlo. Para cada clave del diccionario, imprimimos la clave y su valor correspondiente.

Otro modo de hacerlo es usar el método ‘iteritems’.

dictionary = { "some_key": "some_value" }

for key, value in dictionary.items():
    print("%s --> %s" %(key, value))

# some_key --> some_value

Hemos llamado a los dos parámetros ‘key’ y ‘value’, pero no es necesario. Podemos llamarlos como queramos:

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian",
  "age": 24
}

for attribute, value in dictionary_tk.items():
    print("My %s is %s" %(attribute, value))
    
# My name is Leandro
# My nickname is Tk
# My nationality is Brazilian
# My age is 24

Hemos llamado ‘attribute’ a la clave del diccionario y sigue funcionando correctamente.

Hasta aquí la primera parte de este artículo. Próximamente publicaré la segunda y última parte, donde veremos clases, objetos, …

Puedes encontrar el artículo original en inglés en: https://medium.com/free-code-camp/learning-python-from-zero-to-hero-120ea540b567

Deja un comentario

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