Libro: Learn PYTHON the HARD WAY

By luissalgado April 16, 2024, 1:51 a.m.

Introducción

Estas son algunas notas que se me hicieron interesantes del libro, si bien este parte desde la instalación de Python en Windows, Mac y Linux hasta tocar temas de Programación Orientada a Objetos.

Algunas de las notas son de cosas que no sabía que se podía hacer con Python, tambien algunas que es necesario que siempre tengamos en cuenta o recordemos.

Comentar Código

Las formas de como podemos agregar comentarios a nuestro código, es una buena practica por que podemos agregar notas que nos sirven para saber que hacen ciertas partes del código.

Mayormente usamos # para comentarios cortos como en el siguiente ejemplo

a = 2 + 3 # Este es un comentario que nos ayuda a saber que la siguiente linea guarda el valor de la suma de 2 + 3

Ahora si necesitamos agregar más información la podemos hacer de la siguiente manera

"""
La siguiente linea de codigo hace la sumatoria de 2 + 3
"""
a = 2 + 3

Tambien lo podemos usar para deshabilitar código, por ejemplo ahora no queremos saber el resultado de la suma, si no la resta, entonces hacemos lo siguiente

"""
El siguiente ejemplo es para mostrar como podemos deshabilitar código
"""
# a = 2 + 3 # Este es un comentario que nos ayuda a saber que la siguiente linea guarda el valor de la suma de 2 + 3
a = 2 - 3 # Este es un comentario que nos ayuda a saber que la siguiente linea guarda el valor de la suma de 2 - 3, se hizo un cambio por que me nos marco error en producción

Siempre agrega comentarios, es una herramienta que te puede ayudar en un futuro.

Números y Matemáticas

Como en todo lenguaje tenemos los signos para nuestras operaciones matematicas

+ para sumar

print(2 + 3)
>>> 5

- para restar

print(3 - 2)
>>> -1

/ para dividir

print(6 / 2)
>>> 3.0
  • para multiplicar
print(3 * 2)
>>> 6

% para sacar restante de una division

print(10 % 3 ) # En este caso 10 / 3 es igual a 3 y quedan 1
>>> 1

Leyendo Respuestas

En Python podemos leer respuestas al momento de ejecutar el código

nombre = input("Hola, como te llamas?")
>>> Hola, como te llamas? Luis
edad = input(F"Hola {nombre}, cual es tu edad?")
>>> Hola Luis, cual es tu edad? 24

Parametros

Cuando ejecutamos scripts de Python con archivos .py, podemos pasar parametros que podemos leer en nuestro código, como se muestra en el siguiente ejemplo

from sys import argv
nombre, edad = argv

print(F"Hola {nombre} tu edad es {edad}")

Cuando ejecutemos nuestro código veremos lo siguiente

>>> python test.py Luis 27
Hola Luis tu edad 27

Leyendo y Escribiendo Archivos

Se menciona que podemos hacer leer, editar archivo atravez de Python, algunas de las funciones son las siguientes: - close para cerrar el archivo - read para leer nuestro archivo - readline igual que el anterior para leer linea por linea - truncate para cuando termina el archivo - write para poder escribir en el archivo

Podemos ver el siguiente ejemplo

from sys import argv

script, filename = argv

print(f"We're going to erase {filename}.")
print("If you don't want that, hit CTRL-C (^C).")
print("If you do want that, hit RETURN.")

input("?")

print("Opening the file...")
target = open(filename, 'w')

print("Truncating the file. Goodbye!")
target.truncate()

print("Now I'm going to ask you for three lines.")

line1 = input("line 1: ")
line2 = input("line 2: ")
line3 = input("line 3: ")

print("I'm going to write these to the file.")

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print("And finally, we close it.")
target.close()

Cuando se ejecuta como se muestra en el libro, obtendremos el siguiente input

$ python3.6 ex16.py test.txt
We're going to erase test.txt.
If you don't want that, hit CTRL-C (^C).
If you do want that, hit RETURN.
?
Opening the file...
Truncating the file. Goodbye!
Now I'm going to ask you for three lines.
line 1: Mary had a little lamb
line 2: Its fleece was white as snow
line 3: It was also tasty
I'm going to write these to the file.
And finally, we close it.

Funciones y Variables

Cuando queremos almacenar algunas lineas de codigo para hacer nuestro codigo mas entendible, podemos hacer uso de las funciones, a continuacion podemos hacer una funcion que haga la sumatoria de 2 numeros

def suma(numero1, numero2):
    total = numero1 + numero2
    print(F"La suma es {total}")

# Queremos saber el total de 2 + 3
suma(2+3)
>>> 5

Es importante recordar su uso, siempre sera una herramienta que nos ayudara al momento de desarrollar.

Ciclos y Listas

Si bien se conoce el funcionamiento de los ciclos y listas, un punto a favor de Python es que podemos recorrer lista con un for, como el siguiente ejemplo

# Declaramos nuestra lista de nombres
lista_nombres = ["Luis", "Martin", "Juan"]

# Creamos un for
for nombre in lista_nombres:
    print(nombre)

>>> Luis
>>> Martin
>>> Juan

Si bien parece algo sencillo, es importante recordar que podemos hacer estos tipos de programacion en Python

Practica de Booleanos

Interesante, los siguientes ejemplos son proporcionados por el libro, nos ayuda a ver como Python interpreta las condiciones

Para Python False, None, 0 son igual

>>> True and True
True
>>> False and True
False
>>> 1 == 1 and 2 == 1
False
>>> "test" == "test"
True
>>> 1 == 1 or 2 != 1
True
>>> True and 1 == 1
True
>>> False and 0 != 0
False
>>> True or 1 == 1
True
>>> "test" == "testing"
False
>>> 1 != 0 and 2 == 1
False
>>> "test" != "testing"
True
>>> "test" == 1
False
>>> not (True and False)
True
>>> not (1 == 1 and 0 != 1)
False
>>> not (10 == 1 or 1000 == 1000)
False
>>> not (1 != 10 or 3 == 4)
False
>>> not ("testing" == "testing" and "Zed" == "Cool Guy")
True
>>> 1 == 1 and (not ("testing" == 1 or 1 == 0))
True
>>> "chunky" == "bacon" and (not (3 == 4 or 3 == 3))
False
>>> 3 == 3 and (not ("testing" == "testing" or "Python" == "Fun"))
False

Diccionarios

En Python, un diccionario es un tipo de estructura de datos que permite almacenar pares de clave-valor. También se le conoce como mapa o hash table. Los diccionarios son útiles para asociar valores a claves, lo que permite un acceso rápido y eficiente a los valores utilizando sus claves.

En la practica es algo muy util por que podemos estructurar nuestros datos de mejor manera, a continuacion te dejo un ejemplo

# Declaramos nuestro diccionario
diccionario_de_estados_mexico = {
    # llave : valor
    "qroo": "Quintana Roo",
    "ags": "Aguascaliente",
    "camp": "Campeche",
    "tab": "Tabasco",
    "pue": "Puebla",
}

# Si queremos recorrer nuestro diccionario lo podemos hacer de la siguiente manera
for key, value in diccionario_de_estados_mexico.items():
    # Imprimimos para ver que equivale cada variable
    print(F"{key} es la abreviatura de {value}")

>>> qroo es la abreviatura de Quintana Roo
>>> ags es la abreviatura de Aguascaliente
>>> camp es la abreviatura de Campeche
>>> tab es la abreviatura de Tabasco
>>> pue es la abreviatura de Puebla

Si queremos acceder al valor de una llave en especifo se puede hacer de las siguientes formas

>>> print(diccionario_de_estados_mexico['qroo'])
Quintana Roo
>>> print(diccionario_de_estados_mexico.get('qroo'))
Quintana Roo

# Ambos nos retornan lo mismo, una pequeña diferencia es que la primera forma si la llave no existe nos marcaran un error al contrario de la segunda opción que nos retorna un None
>>> print(diccionario_de_estados_mexico['test'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'test'
>>> print(diccionario_de_estados_mexico.get('test'))
>>> None

Si queremos agregar alguna otra llave

>>> diccionario_de_estados_mexico['oax'] = 'Oaxaca'
>>> diccionario_de_estados_mexico['qro'] = 'Queretaro'
>>> print(diccionario_de_estados_mexico)
{'qroo': 'Quintana Roo', 'ags': 'Aguascaliente', 'camp': 'Campeche', 'tab': 'Tabasco', 'pue': 'Puebla', 'oax': 'Oaxaca', 'qro': 'Queretaro'} # Se agregan nuestras nuevas llaves

¿Cual es la diferencia entre una clase y un objeto?

Entrando en el tema de programación orientada a objetos, hay una parte importante que debemos saber

Una clase es la estructura que contiene atributos y metodos, cuando un objeto es una instancia de una clase.