Python en Español

Conceptos básicos de programación en Python con ejemplos

Python es un lenguaje de scripting popular y potente que puede hacer de todo, puedes realizar web scrapping, además, tiene herramientas de red, herramientas científicas, programación en Raspberry PI, desarrollo web, videojuegos y mucho más. Con la programación en Python, puedes hacer incluso la programación del sistema, independientemente de la plataforma que estés utilizando.

Puedes trabajar con machine learning utilizando librerías de Python como TensorFlow, que se utiliza en muchos proyectos de inteligencia artificial.

También puedes realizar el procesamiento de lenguaje natural (NLP) utilizando bibliotecas de Python como NLTK.

Hace dos días, un amigo ruso estaba buscando programación de Python en el sitio web. Desafortunadamente, no encontró publicaciones de Python, y dado que los rusos son gente inteligente.

Decidí comenzar con algunas publicaciones de Python, por lo que él está satisfecho y todos los visitantes del sitio también.

Discutiremos acerca de la programación en Python básica en esta publicación, y en publicaciones futuras crearemos herramientas y veremos la programación en Python en acción.

Si encuentras que el contenido de esta publicación es un poco complicado, dímelo, de manera que empiece desde cero con la programación en Python en las siguientes publicaciones, ya que asumo que esto para principiantes con muy poco conocimiento de lo que es Python.

 

 

Manipulación de cadenas

Las cadenas en Python son inmutables, por lo que no se pueden cambiar. Cualquier cambio en el contenido de una cadena requiere hacer una nueva copia.

Tratar con cadenas de caracteres es muy simple en Python.

Concatenación de cadenas

str = "welcome " + "to Python"

print (str)

Esta es la concatenación de cadenas, también podemos multiplicar una cadena de la siguiente forma:

Multiplicación de cadenas

str = "LikeGeeks" * 2

print (str)

Concatenar con datos que no sean cadenas de caracteres

Puedes concatenar con variables que no son cadena simplemente convirtiendo el valor en una cadena usando la función str () como se muestra a continuación:

str = "This is test number " + str(15)

print (str)

Buscar una subcadena

Puedes buscar una subcadena utilizando el método find:

str = "welcome to likegeeks website"

print(str.find("likegeeks"))

El método find imprime la posición de la primera aparición de la cadena likegeeks si se encuentra.

Si no encuentra nada, devolverá -1 como resultado.

La función de find comienza desde el primer carácter, sin embargo, puede comenzar desde el enésimo carácter de esta manera:

str = "welcome to likegeeks website"

print(str.find("likegeeks",12))

Como comenzamos desde el carácter 12, no hay una palabra llamada likegeeks desde esa posición, por lo que devolverá -1.

Obtener subcadenas

Ya obtuvimos el índice de la cadena que estamos buscando, ahora queremos imprimir esa coincidencia.

Puedes imprimir la cadena por índice de la siguiente manera:

str = "first second third"

print(str[:2])

print(str[2:])

print(str[3:5])

print(str[-1])

La primera línea print imprime desde el primer carácter hasta el segundo, mientras que la segunda imprime desde el segundo carácter hasta el final. Observa la posición de los dos puntos. El conteo comienza desde cero.

Si utilizas un número negativo, el recuento comenzará hacia atrás, como la cuarta línea de print que imprime el último carácter de la cadena.

Reemplazar cadenas

Puedes reemplazar una cadena utilizando el método replace de la siguiente forma:

str = "This website is about programming"

str2 = str.replace("This", "That")

print(str2)

Si tiene muchas ocurrencias y deseas reemplazar solo la primera, puede especificar eso:

str = "This website is about programming I like this website"

str2 = str.replace("website", "page",1)

print(str2)

Solo la primera palabra fue reemplazada.

Strip de cadenas

Puedes recortar los espacios en blanco de una cadena usando el método strip la siguiente forma::

str = "   This website is about programming    "

print(str.strip())

Puedes quitar solo los de la derecha o izquierda utilizando los métodos rstrip () o lstrip () respectivamente.

Cambiar entre Caracteres en mayúscula y minúsculas

Puedes cambiar entre mayúsculas y minúsculas los caracteres si necesitas compararlos.

str="Welcome to likegeeks"

print(str.upper())

print(str.lower())

Convertir cadenas en números

Tenemos la función str () que convierte el valor a una cadena, pero esta no es la única función de conversión en la programación en Python.

Existen int (), float (), long () y otras funciones de conversión que puede usar.

La función int () convierte la entrada a un entero, mientras que la función float () convierte la entrada en float.

str="10"

str2="20"

print(str+str2)

print(int(str)+int(str2))

La primera línea de print simplemente concatena los dos números sin sumar, mientras que la segunda línea de print suma los dos valores e imprime el total.

Contar Cadenas

Puede utilizar las funciones min (), max () y len () para calcular el valor mínimo o máximo de los caracteres o la longitud total de estos.

str="welcome to likegeeks website"

print(min(str))

print(max(str))

print(len(str))

Iteraciones sobre cadenas

Puedes iterar sobre las cadenas y manipular cada carácter individualmente de la siguiente forma:

str="welcome to likegeeks website"

for i in range(len(str)):

    print(str[i])

La función len () cuenta la longitud de los objetos.

Codificar cadenas

Si estás utilizando Python 3, todas las cadenas se almacenan como cadenas Unicode de forma predeterminada, pero si está utilizando Python 2 puede que necesites codificar tus cadenas de esta manera:

str="welcome to likegeeks website"

str.encode('utf-8')

 

Manipulando números

Los números en la programación en Python se definen así:

a=15

Puedes definir enteros y floats de la misma manera.

Si tienes un número float puedes redondearlo, utilizando la función int () como se muestra a continuación:

a=15.5

print(int(a))

Redondear números

Puedes utilizar la función round () para redondear números:

a=15.5652645

print(round(a,2))

Simplemente especifica cuántos números deben redondearse a la función round ().

Precisión de los Números Definida por el Usuario

Es posible que debas trabajar con números flotantes que sean de precisión arbitraria.

Puedes usar el módulo decimal que maneja una precisión en los números definida por el usuario.

Para importar el módulo debes escribir lo siguiente:

from decimal import *

a=Decimal(5.5)

Generar números aleatorios

El número generado está entre 0.0 y 1.0.

import random

print(random.random())

El número generado está entre 0.0 y 1.0.

Puedes generar un número aleatorio a partir de tus elecciones de esta manera:

import random

numbers=[1,2,3,4,5,6,7]

print(random.choices(numbers))

[sta_anchor id=”dates”]

Manipulando Fechas y Horas

El lenguaje de programación Python proporciona un módulo llamado datetime que ayuda a manejar fechas y horas.

import datetime

cur_date = datetime.datetime.now()

print(cur_date)

print(cur_date.year)

print(cur_date.day)

print(cur_date.weekday())

print(cur_date.month)

print(cur_date.time())

Puedes extraer el valor que necesitas a partir de una fecha, como en los ejemplos anteriores.

Además, puedes obtener la diferencia entre dos horas o dos fechas:

import datetime

time1 = datetime.datetime.now()

time2 = datetime.datetime.now()

timediff = time2 - time1

print(timediff.microseconds())

La variable timediff es un objeto de tipo timedelta, sin embargo, puede crear este tipo de objetos utilizando esta sintaxis:

time1 = datetime.datetime.now()

time2 = datetime.timedelta(days=3)

time3=time1+time2

print(time3.date())

Formatear Fecha y hora

El método strftime () toma una especificación de formato y formatea la fecha u hora según ese formato.

La siguiente tabla especifica algunas de las opciones de formato que puedes usar:

%a           Imprime el nombre abreviado del día de la semana.

%A         Imprime el día de la semana.

% w         Imprime el día de la semana como un número.

%d           Imprime el día del mes como un número con relleno de ceros.

%b           Imprime el mes como nombre abreviado de configuración regional.

%B           Imprime el mes como nombre completo de la configuración regional.

%m         Imprime el mes como un número sin relleno.

% y           Imprime el año como un número de dos dígitos con relleno de ceros.

% Y         Imprime el año como un número de cuatro dígitos con relleno de ceros.

% H         Imprime la hora (reloj de 24 horas) como un número con relleno de ceros.

%I           Imprime la hora (reloj de 12 horas) como un número con relleno de ceros.

%p           Imprime AM o PM.

%M         Imprime los minutos como un número con relleno de ceros.

% S           Imprime los segundos como un número con relleno de ceros.

import datetime

date1 = datetime.datetime.now()

print(date1.strftime('%d. %B %Y %I:%M%p'))

Crear fecha desde una cadena

Puede utilizar la función strptime () para crear una fecha a partir de una cadena:

date1=datetime.datetime.strptime(“2015-11-21”, “%Y-%m-%d”)

Además, puedes crearla de esta manera:

date1= datetime.datetime(year=2015, month=11, day=21)

 

Tratar con el sistema de archivos

Tratar con archivos es muy fácil usando la programación en Python, lo creas o no, este es el lenguaje más fácil que puedes usar para lidiar con archivos. Puedes decir que Python es el lenguaje más fácil para realizar muchas cosas.

Copiar archivos

Si my_file.txt es un enlace simbólico , el código anterior creará copied_file.txt como un archivo separado.

import shutil

copied_path = shutil.copy('my_file.txt', 'copied_file.txt')

Si my_file.txt es un enlace simbólico , el código anterior creará copied_file.txt como un archivo separado.

Puedes crear una copia de un enlace simbólico en su lugar de esta manera:

copied_path = shutil.copy('my_file.txt', 'copied_file.txt', follow_symlinks=False)

Mover archivos

Puedes mover archivos de una ubicación a otra utilizando los siguiente:

import shutil

shutil.move('file1.txt', 'file3.txt')

También es posible cambiar el nombre de un archivo mediante la función rename del módulo os:

import os

os.rename('file1.txt', 'file3.txt')

Leer y escribir archivos de texto

Puedes utilizar la función open para abrir archivos y luego utilizar los métodos de read o write para leer o escribir en los archivos.

fd = open('file1.txt')

content = fd.read()

print(content)

Primero, abrimos el archivo para leer usando la función open, luego comenzamos a leer el contenido del archivo utilizando la función read, finalmente, colocamos el contenido capturado en una variable.

Puedes especificar cuántos bytes deseas leer en la función read ():

fd.read(20)

Si el archivo no es demasiado grande, puedes leer todo el contenido en una lista, luego iterar sobre esa lista para imprimir el resultado.

content = fd.readlines()

print(content[0])

Puedes escribir en un archivo especificando el modo a la función open. Esta tiene dos modos de escritura, el modo write y el modo de append, este último agrega las cadenas al final del archivo.

Este es el modo write el cual sobrescribirá el contenido del archivo anterior.

fd = open('file1.txt','w')

content = fd.write('YOUR CONTENT GOES HERE')

Y este es el modo append:

fd = open('file1.txt','a')

content = fd.write('YOUR CONTENT GOES HERE')

Crear directorios

Se puede crear un nuevo directorio utilizando la función mkdir del módulo os de la siguiente manera:

import os

os.mkdir('./NewFolder)

Este arrojará un error si el directorio existe. No te preocupes, hablaremos sobre el manejo de excepciones en futuras publicaciones para que puedas evitar tales errores.

Obtener acceso, Modificación y Fecha de Creación

Puede usar getmtime (), getatime () y getctime () para obtener la fecha de modificación, la fecha de acceso y la fecha de creación, respectivamente.

La fecha devuelta está formateada como una marca de tiempo de Unix, podemos convertirlo a un formato legible de la siguiente forma:

import os

import datetime

tim=os.path.getctime('./file1.txt')

print(datetime.datetime.fromtimestamp(tim))

Iteración sobre archivos

Puedes utilizar la función listdir () del módulo os para obtener los archivos:

import os

files= os.listdir('.')

print(files)

Además, puedes utilizar el módulo glob para hacer lo mismo:

import glob

files=glob.glob('*')

print(files)

Puedes escribir cualquier extensión para el archivo globbing, como * .doc para obtener todos los documentos de Word solamente.

Serialización de objetos Python

Este proceso se utiliza para serializar los objetos de Python a una secuencia de bytes para su reutilización posterior.

Puedes hacer eso utilizando el módulo pickle:

import pickle

fd = open('myfile.pk ', 'wb')

pickle.dump(mydata,fd)

Puede deserializar estos datos usando la función load ():

import pickle

fd = open('myfile.pk ', 'rb')

mydata = pickle.load(fd)

Comprimir archivos

La biblioteca estándar de Python te permite trabajar con diferentes tipos de archivos comprimidos como tar, zip, gzip, bzip2.

Para trabajar con un archivo zip, puedes utilizar el módulo zipfile:

import zipfile

my_zip = zipfile.ZipFile('zipped_file.zip', mode='r')

print(file.namelist())

Puedes crear un archivo zip desde tus archivos de esta manera:

import zipfile

file=zipfile.ZipFile('files.zip','w')

file.write('file1.txt')

file.close()

Extraer el archivo zip usando el método extractall () también es posible:

import zipfile

file=zipfile.ZipFile('files.zip','r')

file.extractall()

file.close()

Además, puedes anexar archivos al archivo zip existente usando el modo append:

import zipfile

file=zipfile.ZipFile('files.zip','a')

file.write('file2.txt')

file.close()

Entonces puedes leer y escribir en los archivos de la misma manera.

import gzip

import bz2

gz_file=gzip.GzipFile('files.gz','r')

bz_file=bz2.BZ2File('fiels.bz2','r')

Entonces puedes leer y escribir en los archivos de la misma manera.

Para tratar con archivos rar utiliza el paquete unrar. Primero, instala el paquete:

pip install unrar

Luego puedes usarlo de la misma manera que los anteriores.

import unrar.rarfile

m=unrar.rarfile.RarFile('file.rar')

m.namelist()

m.extractall()

Parse CSV Files

Existe un paquete muy útil llamado pandas. Este paquete puede analizar archivos CSV y Excel, y extraer datos fácilmente.

Primero, instala el paquete:

pip install pandas

Luego podrás utilizarlo en tus módulos como se muestra a continuación:

import pandas

data=pandas.read_csv('file.csv)

Pandas trata la primera columna como una etiqueta para cada fila de manera predeterminada. Puedes pasar el parámetro index_col para especificar el índice de columna si no es la primera columna.

Si no hay etiquetas de fila en tu documento, debe utilizar el parámetro index_col = False.

Para escribir en un archivo CSV, puede utilizar el método to_ csv ().

data.to_csv('file.csv)

Analizar Archivos Excel

Puedes utilizar el método read_excel () del módulo pandas para analizar archivos de Excel.

data = pd.read_excel('file.xls', sheetname='Sheet1')

Si tienes varias hojas, puede cargarlas así:

data = pd.ExcelFile('file.xls')

Puedes escribir en archivos de Excel de la siguiente forma:

data.to_excel('file.xls', sheet='Sheet1')

 

Redes y Conectividad

El lenguaje Python tiene una clase socket que proporciona una forma de acceder a la red a un nivel bajo, tiene que admitir muchos protocolos de red.

import socket

host = '192.168.1.5'

port = 5050

m_sock = socket.create_connection ((host, port))

Este código establece una conexión a un host en la IP 192.168.1.5 en el puerto 5050.

Una vez que se ha abierto un socket, este puede enviar y recibir datos.

m_sock.sendall(b'Hello World')

Fíjate que utilicé el carácter b antes de la cadena porque los datos deben ser una cadena de bytes.

Si tienes un mensaje más grande iterar sobre el mensaje de la siguiente forma:

msg = b'Longer Message Goes Here'

mesglen = len(msg)

total = 0

while total < msglen:

    sent = m_sock.send(msg[total:])

    total = total + sent

Para recibir datos, debes indicar a los métodos cuántos bytes leer a la vez.

data_in = m_sock.recv(2000)

Esto funciona porque sabes con certeza que el mensaje que se envía tiene menos de 2000 bytes de longitud.

Si el mensaje es grande, debes iterar una y otra vez hasta que recopile todos los fragmentos separados..

buffer = bytearray(b' ' * 2000)

m_sock.recv_into(buffer)

Aquí definimos un buffer vacío, luego comenzamos a escribir el mensaje en el buffer.

Leer un correo electrónico desde el servidor de correo POP

Ya hemos discutido acerca del servidor de correo de Linux y sus características, ahora, ¿cómo podemos acceder utilizando la programación en Python?

El módulo poplib te permite comunicarte con un servidor POP.

import getpass,poplib

pop_serv = poplib.POP3('192.168.1.5')

pop_serv.user("myuser")

pop_serv.pass_(getpass.getpass())

El módulo getpass pregunta al usuario final las contraseñas de forma segura.

Si necesitas una conexión segura, utiliza la clase POP3_SSL.

Para obtener la lista de mensajes y el conteo de mensajes, puedes hacerlo de la siguiente manera:

msg_list = pop_serv.list()              # to list the messages

msg_count = pop_serv.msg_count()        # to get message count

No olvides cerrar las conexiones abiertas después de que termine de trabajar con el servidor POP.

pop_serv.quit()

Leer un Correo Electrónico del Servidor de Correo IMAP

Puedes trabajar con un servidor de correo IMAP utilizando el módulo imaplib.

import imaplib, getpass

my_imap = imaplib.IMAP4('imap.server.com')

my_imap.login("myuser", getpass.getpass())

Si estás utilizando SSL en su servidor IMAP, deberías usar la clase IMAP4_SSL.

Para obtener la lista de correos electrónicos, debe hacer una búsqueda como la que se muestra a continuación:

data = my_imap.search(None, 'ALL')

Luego puedes iterar sobre los índices del correo electrónico devueltos en la variable de datos y buscar el mensaje

msg = my_imap.fetch(email_id, '(RFC822)')

Finalmente, no te olvides de cerrar la conexión:

my_imap.close()

my_imap.logout()

Enviando un correo electrónico

Los correos electrónicos se envían utilizando el protocolo SMTP. El smtplib en Python se utiliza para manejar esto.

import smtplib, getpass

my_smtp = smtplib.SMTP(smtp.server.com')

my_smtp.login("myuser", getpass.getpass())

Si estás utilizando SSL en tu Servidor SMTP, debe usar la clase SMTP_SSL en su lugar.

Una vez que se abre la conexión, puede enviar el mensaje de la siguiente manera:

from_addr = '[email protected]'

to_addr = '[email protected]'

msg = 'From: [email protected]\r\nTo: [email protected]\r\n\r\nHello, this is a test message'

my_smtp.sendmail(from_addr, to_addr, msg)

Web Crawling

Para conectarte con un servidor web, debes utilizar el submódulo urllib.request .

import urllib.request

my_web = urllib.request.urlopen('https://www.google.com')

print(my_web.read())

Solicitud Post en una página web

Si necesita enviar un formulario web, debe enviar una solicitud POST a la página web y eso es lo que haremos.

import urllib.request

my_data = b'Your Data Goes Here'

my_req = urllib.request.Request('http://localhost', data=my_data,method='POST')

my_frm = urllib.request.urlopen(my_req)

print(my_frm.status)

Tenga en cuenta que podemos usar mecanize o urllib2, hay muchas maneras de lograr esto.

Crear un mini servidor

La clase socket admite la escucha de conexiones entrantes.

import socket

host = ''

port = 3535

my_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

my_server.bind((host, port))

my_server.listen(1)

Ahora puedes aceptar conexiones entrantes:

addr = my_server.accept()

print('Connected ... ', addr)

data = conn.recv(1024)

Además, no olvides cerrar la conexión después de que hayas terminado

conn.close()

 

Hilos en la Programación en Python

Ejecutar múltiples procesos en paralelo, lo que se denomina subprocesamiento o hilos es muy útil, especialmente cuando necesitas ejecutar un proceso en un hilo diferente y mantener tu hilo actual desacoplado para evitar las detenciones del proceso.

El lenguaje Python incluye un módulo llamado threading que contiene una clase Thread.

import threading

def print_message():

    print('The message got printed from a different thread')

my_thread = threading.Thread(target=print_message)

my_thread.start()

Si la función tarda mucho tiempo en finalizar, puedes verificar si todavía se está ejecutando o no utilizando el método is_alive ().

A veces tus hilos necesitan acceder a los recursos globales de forma segura. Puedes hacer eso usando bloqueos.

import threading

num = 1

my_lock = threading.Lock()

def my_func():

    global num, my_lock

    my_lock.acquire()

    sum = num + 1

    print(sum)

    my_lock.release()

my_thread = threading.Thread(target=my_func)

my_thread.start()

 

Usar Raspberry PI

Con Raspberry PI puedes crear tu propia tecnología. Es una computadora de una sola placa con un precio barato.

Puedes utilizar el módulo de Python RPi.GPIO para trabajar con Raspberry PI.

Primero, instala el paquete en tu Raspberry PI de esta manera:

$ sudo apt-get install python-dev python-rpi.gpio

Ahora puedes utilizarlo en tus scripts. Puedes escribir salida en el bus GPIO de la Raspberry Pi de esta forma:

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)

GPIO.setup(1, GPIO.OUT, initial=GPIO.LOW)

GPIO.output(1, GPIO.HIGH)

Lectura del GPIO de la Raspberry Pi

Puede usar el módulo RPi.GPIO de Python para leer los datos desde el GPIO de esta manera:

import RPi.GPIO

RPi.GPIO.setup(1, GPIO.IN)

if RPi.GPIO.input(1):

    print('Input was HIGH')

else:

    print('Input was LOW')

En realidad, hemos cubierto poco de la programación en Python, aún hay mucho más por descubrir.

Te prometo que haré todo lo posible en las próximas publicaciones de Python para cubrir los aspectos básicos del lenguaje de programación Python, y luego podremos comenzar a construir herramientas geniales.

Espero que disfrutes la publicación. Vuelve pronto.

Gracias.

Mokhtar Ebrahim
Fundadora de LikeGeeks. Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

4 thoughts on “Conceptos básicos de programación en Python con ejemplos

  1. Hola:
    Este apartado es imposible de leer en español, ademas los codigos aparecen como HTLM crudo. En el resto de tu capitulos dedivados a Python no tengo este problema.

Deja una respuesta

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