Sunteți pe pagina 1din 116

Funciones de la librería estándar de Python: cómo... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Funciones de la librería estándar de


Python: cómo utilizarlas - Blog
Carrera Linux
3-4 minutos

Además de las funciones len(), print(), e input() (funciones


incorporadas), también disponemos de lo que llamamos
funciones de la libería estándar de Python. Estas funciones
están organizadas en módulos según su propósito. En
palabras simples, un módulo es un programa de Python que
incorpora una serie de funciones. Al incluir un módulo dentro
de nuestro propio programa podremos acceder a las
funciones incluídas en el mismo. En este post veremos cómo
lograrlo.

A diferencia de len(), print(), input() y otras funciones


incorporadas, las funciones de la librería estándar existen
solamente dentro del módulo correspondiente. Para ver la
lista de funciones incorporadas podemos recurrir al comando
dir(__builtins__). Más adelante en este artículo
veremos cómo ver la lista de los módulos instalados y las
funciones incluídas en los mismos.

1 de 4 4/7/19 10:26 a. m.
Funciones de la librería estándar de Python: cómo... about:reader?url=https://blog.carreralinux.com.a...

Para ver la lista de módulos instalados actualmente,


abriremos el IDLE y escribiremos

para acceder a la utilidad de ayuda de Python. Una vez allí,


tendremos que ingresar la palabra

y presionar Enter. Una vez que se despliegue la lista,


podemos ingresar el nombre de un módulo en particular para
ver la ayuda disponible sobre el mismo. Esto incluirá una
descripción general del módulo y la lista de funciones
incluídas, entre otras cosas. Por ejemplo, si nos interesa
conocer el módulo random más en detalles, podemos escribir

y volver a presionar Enter (siempre desde la utilidad de


ayuda).

Veamos la Fig. 1 para ilustrar este punto:

Figura 1 – Acceder a las funciones de la librería estándar de


Python

Para salir de la utilidad de ayuda usaremos el comando quit y


presionaremos Enter.

Acceder a las funciones

2 de 4 4/7/19 10:26 a. m.
Funciones de la librería estándar de Python: cómo... about:reader?url=https://blog.carreralinux.com.a...

Antes de poder utilizar las funciones de un módulo, debemos


importarlo a nuestro programa. Para hacer eso, utilizaremos
la declaración import seguida del nombre del o los módulos
que se desen importar. Por ejemplo, para poder acceder a las
funciones de los módulos random y os deberemos incluir la
siguiente línea al comienzo de nuestro programa:

Luego podemos utilizar las funciones incluídas en ambos


módulos escribiendo el nombre del mismo seguido por un
punto y la función deseada. Es importante aclarar que
después de escribir el punto aparecerá la lista de funciones si
estamos utilizando el IDLE. Por ejemplo, para generar un
número entero aleatorio entre 1 y 20 y asignarlo a la variable
llamada enteroAleatorio, como vemos en la Fig. 2:

Figura 2 – Uso de las funciones de la librería estándar de


Python

Una forma alternativa de importar un módulo es la siguiente:

Este último método permite llamar a las funciones


directamente sin incluír el nombre del módulo, por ejemplo:

enteroAleatorio = randint(1, 20)

Sin embargo, por lo general se prefiere el tradicional

3 de 4 4/7/19 10:26 a. m.
Funciones de la librería estándar de Python: cómo... about:reader?url=https://blog.carreralinux.com.a...

import random

ya que se puede visualizar mejor en cuál módulo está incluída


la función.

En el próximo post compartiremos más ejemplos. ¡Hasta


entonces!

4 de 4 4/7/19 10:26 a. m.
Listas en Python: las estructuras de datos más uti... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Listas en Python: las estructuras de


datos más utilizadas - Blog Carrera
Linux
3-4 minutos

En una serie de posts anteriores describimos varios tipos de


datos en Python. Las cadenas de texto (strings), los números
enteros, los de punto flotante, y los valores booleanos son
algunos ejemplos. En esta oportunidad (y en el próximo post)
hablaremos sobre las listas en Python, que pueden
considerarse como un tipo de dato en sí. Veremos que son
muy utilizadas por su gran versatilidad y utilidad.

Listas en Python

Para empezar, podemos definir las listas en Python como un


valor que contiene una secuencia ordenada de valores
separados por comas y encerrados entre corchetes. Por
ejemplo, la variable jugadores que aparece a continuación
contiene una lista de strings:

jugadores = ['Batalla', 'Driussi', 'Alario', 'Mora', 'Auzqui',


'Rojas', 'Ponzio']

1 de 4 4/7/19 10:26 a. m.
Listas en Python: las estructuras de datos más uti... about:reader?url=https://blog.carreralinux.com.a...

De la misma manera que sucede para los strings, las listas en


Python admiten el uso de la función len() para conocer la
cantidad de elementos que la componen. Utilizando la lista
jugadores como ejemplo,

devolverá el valor 7.

Aunque generalmente una lista contendrá valores del mismo


tipo, es importante aclarar que no es estrictamente necesario
que así sea. Es decir, Python permite que una misma lista
contenga strings, enteros, booleanos, etc.

Operaciones con listas

Para acceder a un elemento específico, utilizamos el nombre


de la lista seguida por el índice del mismo. En particular, al
primer elemento le corresponde el índice 0 (cero) mientras
que para acceder al último podemos utilizar el índice que
corresponda (si conocemos la cantidad de elementos que
componen la lista) o el índice -1 en cualquier ocasión.
Veamos el ejemplo en la Fig. 1:

Figura 1 – Listas en Python

Una vez creada una lista, podemos modificar alguno de sus

2 de 4 4/7/19 10:26 a. m.
Listas en Python: las estructuras de datos más uti... about:reader?url=https://blog.carreralinux.com.a...

elementos asignándole un nuevo valor. Para ilustrar, podemos


cambiar el valor de jugadores[3] de la siguiente manera:

Para crear otra lista que contenga una serie de valores de la


anterior, podemos utilizar una slice (rebanada). Para hacerlo,
indicaremos entre corchetes el índice del primer elemento que
deseamos copiar seguido por dos puntos y del índice final. El
elemento correspondiente a este último no se incluirá en la
nueva lista. Si queremos incluir desde el primer elemento,
podemos omitirlo y por defecto Python entenderá que se trata
del 0. Si por el contrario deseamos incluir el último elemento
de la lista, no es preciso que lo indiquemos.

Veamos los siguientes ejemplos para ilustrar los puntos


anteriores. Los resultados aparecen en la Fig. 2:

jugadores1=jugadores[1:4]

jugadores2=jugadores[3:7]

jugadores3=jugadores[:4] # Esta nueva lista incluye los ítems


en las posiciones 0, 1, 2, y 3 de la lista jugadores

jugadores4=jugadores[2:] # Esta lista incluirá los ítems


ubicados desde la posición 2 hasta el último de la lista
jugadores

3 de 4 4/7/19 10:26 a. m.
Listas en Python: las estructuras de datos más uti... about:reader?url=https://blog.carreralinux.com.a...

Figura 2 – Ejemplos de slices con listas en Python

En el próximo post continuaremos compartiendo detalles


sobre las listas en Python. ¡No se olviden de suscribirse al
blog para no perderse detalle!

4 de 4 4/7/19 10:26 a. m.
Formato de strings en Python - Blog Carrera Linux about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Formato de strings en Python - Blog


Carrera Linux
3 minutos

Una de las primeras funciones que aprendimos a utilizar en


Python fue print(). En primer lugar, recordemos que la misma
nos permite mostrar un mensaje por pantalla. Dicho mensaje
puede consistir en una cadena de texto o en una serie de
variables tipo string concatenadas. Para facilitar esta
operación y obtener código que pueda leerse más fácilmente,
en este post y en el siguiente explicaremos el concepto de
formato de strings en Python.

Formato de strings

Para empezar, consideremos el siguiente ejemplo:

nombre = 'Sergio'

edad = 39

profesion = 'administrador de sistemas'

Para mostrar el mensaje Mi nombre es Sergio. Tengo 39


años y soy administrador de sistemas podríamos hacer lo

1 de 3 4/7/19 10:26 a. m.
Formato de strings en Python - Blog Carrera Linux about:reader?url=https://blog.carreralinux.com.a...

siguiente:

print('Mi nombre es ' + nombre + '. Tengo ' + str(edad) + '


años y soy ' + profesion)

Aunque en este ejemplo solamente utilizamos 3 variables,


podemos ver que la concatenación de strings puede llegar a
ser un tanto engorrosa.

Para solucionar este inconveniente, Python provee la


posibilidad de realizar la sustitución y el formato de strings
con la función format() de la siguiente manera:

print('Mi nombre es {0}. Tengo {1} años y soy


{2}'.format(nombre, edad, profesion))

print('Mi nombre es {}. Tengo {} años y soy {}'.format(nombre,


edad, profesion))

En el primer caso, se utilizan {0}, {1}, y {2} para representar


(en ese orden) los argumentos que se le pasan a la función
format(). A partir de Python 3.1, no es estrictamente
necesario incluir el número dentro de las llaves y se puede
utilizar simplemente {}. Por suerte, Python es lo
suficientemente «inteligente» como para reconocer que en el
lugar donde encuentre el primer par de llaves {} debe colocar
el primer argumento que se le pasó a format(), y así
sucesivamente.

En la Fig. 1 podemos ver el resultado de los ejemplos

2 de 3 4/7/19 10:26 a. m.
Formato de strings en Python - Blog Carrera Linux about:reader?url=https://blog.carreralinux.com.a...

anteriores:

Figura 1 – Formato de strings utilizando distintas alternativas

Como podemos ver, el mensaje final es idéntico en los tres


casos. Por último, la pregunta natural que sigue es, ¿qué
opción utilizaremos? La respuesta es simple: la que nos sea
más cómoda, aunque yo creo que la última es más fácil de
leer.

Espero que este post les haya resultado útil. Para aprender
más sobre el tema no se pierdan el próximo.

3 de 3 4/7/19 10:26 a. m.
Compilación de programas en Linux - Blog Carrer... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Compilación de programas en Linux


- Blog Carrera Linux
3 minutos

La compilación es un proceso por el cual transformamos un


archivo que está en código fuente en un archivo binario
ejecutable. Para hacer este trabajo llamamos al compilador
del sistema operativo, tal como lo mostramos en una ocasión
anterior. En este post explicaremos en más detalle en qué
consiste la compilación de programas en Linux.

Compilación de programas en Linux paso a paso

Compilación de programas

1 de 3 4/7/19 10:27 a. m.
Compilación de programas en Linux - Blog Carrer... about:reader?url=https://blog.carreralinux.com.a...

Para empezar, abramos nuestro editor de texto preferido y


escribamos el siguiente código C. Llamaremos al archivo
uno.c, y luego lo transformaremos en binario ejecutable.

main()

#include <stdio.h>

printf ("Hola a todos desde Argentina\n");

A continuación, ejecutamos el siguiente comando:

Lo que hacemos al ejecutar el comando anterior es


transformar al archivo uno.c en otro llamado simplemente
uno. Este archivo es binario y también ejecutable. Por eso, si
lo queremos ejecutar deberemos escribir en la línea de
comandos:

tras lo cual se mostrará el siguiente mensaje por pantalla:

Hola a todos desde Argentina

Es importante aclarar que cuando los programadores


desarrollan aplicaciones no tienen un solo archivo sino
muchos, ellos utilizan el comando llamado configure. Esta
orden chequea que todas las bibliotecas que los
programadores usaron para generar el binario estén
instaladas previamente en el sistema. De ser así, entonces
se genera un archivo llamado Makefile, el cual indicará al
compilador qué es lo que tiene que compilar primero. Si las

2 de 3 4/7/19 10:27 a. m.
Compilación de programas en Linux - Blog Carrer... about:reader?url=https://blog.carreralinux.com.a...

bibliotecas no están presentes en el sistema, configure nos


informará cuál(es) para que las instalemos antes de continuar.
Al finalizar, lo único que nos queda es copiar los ejecutables
al sistema operativo para que los podamos llamar con simples
comandos.

Los programadores dejan dentro del paquete un archivo


llamado “README” o “INSTALL” donde nos brindan todos los
detalles acerca de los pasos a seguir para compilar los
programas.

Paso a paso

En resumen, estos son los pasos a seguir para compilar un


programa e instalarlo en nuestro sistema:

Paso 1 – Compilar el programa y generar el archio Makefile:

Paso 2 – Leer el archivo Makefile y generar los binarios:

Paso 3 – Copiar los binarios recién generados al sistema:

Para más detalles, podemos consultar este excelente post (en


inglés). ¡Nos leemos en breve!

3 de 3 4/7/19 10:27 a. m.
Manipular strings con Python: más ejemplos - Blo... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Manipular strings con Python: más


ejemplos - Blog Carrera Linux
3 minutos

Este post puede considerarse como una continuación de


Métodos de strings en Python mediante ejemplos. En esta
ocasión explicaremos cómo agregar padding a una cadena de
texto. También mostraremos la forma de remover espacios
vacíos u otros caracteres, e incluso cómo reemplazarlos con
otros. En resumen, podemos decir que continuaremos
aprendiendo a manipular strings con Python. ¡Comencemos!

Manipular strings con Python

Para empezar, veamos cómo agregar padding a un string. En


otras palabras, esto se trata de agregar una serie de
caracteres al principio o al final de una cadena hasta
completar una cierta cantidad de caracteres. También es
posible centrar una cadena de texto agregando caracteres al
comienzo y al final de la misma. Para lograr este objetivo
utilizaremos las funciones rjust, ljust, y center, lo que vemos
ilustrado en los siguientes ejemplos y en la Fig. 1 a
continuación. A cada una de estas funciones les pasamos dos

1 de 3 4/7/19 10:27 a. m.
Manipular strings con Python: más ejemplos - Blo... about:reader?url=https://blog.carreralinux.com.a...

argumentos:

La longitud final de la cadena de texto (20 en este caso)

El caracter que deseamos utilizar para el padding

saludo = 'Hola amigos'

saludo.ljust(20, '*')

len(saludo.ljust(20, '*'))

saludo.rjust(20, '-')

len(saludo.rjust(20, '-'))

saludo.center(20, '-')

len(saludo.center(20, '-'))

Figura 1 – Manipular strings con Python: agregar padding

Por otro lado, si deseamos eliminar los caracteres que se


encuentren al principio o al final de una cadena, utilizaremos
la función strip. Si no le pasamos ningún argumento, se
removerán los espacios vacíos. Caso contrario, se eliminarán

2 de 3 4/7/19 10:27 a. m.
Manipular strings con Python: más ejemplos - Blo... about:reader?url=https://blog.carreralinux.com.a...

los caracteres que indiquemos. Otra función relacionada es


replace, la que nos permite especificar caracteres que serán
reemplazados por otros que nosotros deseemos. Los
siguientes ejemplos servirán para ilustrar estos conceptos:

otroSaludo = ' Feliz jueves '

otroSaludo.strip()

'Feliz jueves'

otroSaludo.lstrip()

'Feliz jueves '

otroSaludo.rstrip()

' Feliz jueves'

otroSaludo.replace(' ', '=')

'==========Feliz=jueves=='

Figura 2 – Manipular strings con Python: uso de strip y


replace

Si solamente deseamos borrar caracteres al principio de la


cadena o al final (pero no en ambos), podemos utilizar las
funciones lstrip o rstrip, respectivamente.

3 de 3 4/7/19 10:27 a. m.
Uso de diccionarios en Python: ejemplo - Blog Ca... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Uso de diccionarios en Python:


ejemplo - Blog Carrera Linux
3 minutos

Luego de nuestros posts anteriores sobre el tema, en esta


ocasión ilustraremos el uso de diccionarios en Python
mediante un ejemplo. En concreto, contaremos la cantidad de
veces que aparece una palabra dada dentro de una cadena
de texto cualquiera. Utilizaremos el texto completo del Martín
Fierro, capítulo 1, como ilustración, que podemos descargar
desde aquí.

Uso de diccionarios en Python

Para empezar, repasemos en qué consistirá nuestro ejemplo.


Utilizaremos un diccionario vacío al que iremos agregando
elementos. Cada uno estará formado por las palabras del
texto como claves y como valores la cantidad de veces que
cada palabra se encuentra en el mismo. Usaremos la función
setdefault para crear nuevas claves (palabras) a medida
que se encuentren y establecer su valor inicial. Finalmente,
importaremos el módulo pprint que contiene una función con
el mismo nombre, para presentar los resultados del conteo.

1 de 3 4/7/19 10:28 a. m.
Uso de diccionarios en Python: ejemplo - Blog Ca... about:reader?url=https://blog.carreralinux.com.a...

El código Python es el siguiente. La función split nos


devolverá una lista formada por las palabras de
primerCapitulo. Previamente, upper convertirá la cadena a
mayúsculas para no hacer diferencia con palabras escritas en
minúscula. Por último, hemos excluido el texto por cuestiones
de brevedad. Al realizar el ejemplo, deberemos incluirlo donde
se indica.

import pprint

primerCapitulo = '''

COLOCAR EL TEXTO AQUÍ

'''

conteo = {}

for palabra in primerCapitulo.upper().split():

conteo.setdefault(palabra, 0)

conteo[palabra] = conteo[palabra] + 1

pprint.pprint(conteo)

Resultados del ejemplo

Al ejecutar el código que aparece arriba, deberíamos obtener


un resultado similar al mostrado en la Fig. 1:

2 de 3 4/7/19 10:28 a. m.
Uso de diccionarios en Python: ejemplo - Blog Ca... about:reader?url=https://blog.carreralinux.com.a...

Figura 1 – Uso de diccionarios en Python

Al observar el resultado que aparece en la Fig. 1 seguramente


pensaremos que sería ideal disponer de una manera de
ordenar las palabras según el número de ocurrencias. Ese
será precisamente el enfoque de nuestro próximo post. Por el
momento, podemos ver en la práctica un uso de diccionarios
en Python. Con menores modificaciones podemos contar la
cantidad de veces que aparece un determinado caracter.
Inclusive podemos contar la cantidad de palabras por oración.
¿Se animan a investigar cómo?

¡No olviden suscribirse al blog para conocer la respuesta


pronto!

3 de 3 4/7/19 10:28 a. m.
Llaves en diccionarios: get y setdefault - Blog Car... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Llaves en diccionarios: get y


setdefault - Blog Carrera Linux
2-3 minutos

En el post anterior presentamos el uso de los diccionarios en


Python. Recordemos que cada elemento de los mismos
consiste en un par clave-valor. Las claves (o llaves) deben ser
únicas y se utilizan para acceder al valor correspondiente. Sin
embargo, si se intenta utilizar una llave que no existe, Python
devolverá un error del tipo KeyError. Para evitar esto,
podemos utilizar las funciones get y setdefault para
trabajar con las llaves en diccionarios. Veamos cómo a
continuación.

Llaves en diccionarios

La funcióngettoma dos argumentos: el primero es la llave a


buscar (si existe, devolverá el valor asociado) y el segundo el
valor a devolver si dicha llave no se encuentra. Por otro
lado, setdefault creará la llave si no existe, junto con el
valor correspondiente. Caso contrario, no provocará ningún
cambio. Ilustremos estos distintos casos a continuación, en el
que utilizamos un diccionario donde las claves representan

1 de 3 4/7/19 10:29 a. m.
Llaves en diccionarios: get y setdefault - Blog Car... about:reader?url=https://blog.carreralinux.com.a...

personas y los valores las fechas de cumpleaños de cada


una:

cumplesAmigos = { 'Mafalda': '19/05', 'Susanita': '11/12',


'Felipe': '5/02' }

cumplesAmigos.get('Mafalda', ' no existe en la lista') #


Ejemplo 1

cumplesAmigos.get('Manolito', ' no existe en la lista') #


Ejemplo 2

cumplesAmigos.setdefault('Manolito', '10/07') # Ejemplo 3

cumplesAmigos.setdefault('Felipe', '2/07') # Ejemplo 4

cumplesAmigos.get('Manolito', ' no existe en la lista') #


Ejemplo 5

cumplesAmigos.get('Felipe', ' no existe en la lista') # Ejemplo


6

Ahora analicemos los ejemplos numerados del 1 al 6 en la


Fig. 1:

Figura 1 – Uso de las funciones get y setdefault para trabajar

2 de 3 4/7/19 10:29 a. m.
Llaves en diccionarios: get y setdefault - Blog Car... about:reader?url=https://blog.carreralinux.com.a...

con las llaves en diccionarios

1. Debido a que la clave ‘Mafalda’ existe en el diccionario, se


devuelve el valor asociado.

2. La clave no existe, por lo que el resultado es el valor


alternativo (también conocido como fallback en la
documentación).

3. Se crea la clave y el valor correspondiente.

4. La llave existe, entonces el valor no es modificado.

5. La misma clave solicitada en #2 ahora sí está presente, por lo


que se devuelve el valor correspondiente.

6. La clave existe y el valor es el original a pesar de haber


intentado modificarlo con setdefault.

Espero que este post les haya resultado útil. ¡Nos leemos en
breve!

3 de 3 4/7/19 10:29 a. m.
Diccionarios en Python: otra estructura de datos -... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Diccionarios en Python: otra


estructura de datos - Blog Carrera
Linux
3 minutos

Después de haber repasado las listas, ahora es el turno de


introducir una nueva estructura de datos: los diccionarios en
Python.

Además de las listas y los diccionarios, otra estructura de


datos muy utilizada en Python son las tuplas. Al igual que las
listas, se trata de secuencias ordenadas de elementos, pero
se diferencian de estas últimas porque son inmutables.
Además, se expresan dentro de paréntesis () en vez de
corchetes [].

Los diccionarios en Python

Un diccionario es una estructura de datos que consiste en


pares llave-valor. En un diccionario dado, las llaves (más
comúnmente llamadas claves) deben ser únicas. Es decir, no
debe haber dos claves iguales en un diccionario. Los pares
clave-valor que forman un diccionario en Python se encierran

1 de 3 4/7/19 10:29 a. m.
Diccionarios en Python: otra estructura de datos -... about:reader?url=https://blog.carreralinux.com.a...

dentro de llaves {}. Cada par clave-valor constituye un


elemento del diccionario.

Por ejemplo, creemos un diccionario llamado miPerro con los


siguientes elementos:

miPerro = {'tamaño': 'grande', 'color': 'blanco', 'edad': 5}

Claves: tamaño, color, edad

Valores: grande, blanco, 5

A diferencia de las listas o las tuplas, los elementos en un


diccionario no siguen un orden. Por eso, si dos diccionarios
tienen los mismos pares llave-valor, Python los considerará
iguales.

Accediendo a las claves, valores, y elementos


por separado

Para acceder a las claves, los valores, y los elementos de un


diccionario de manera individual utilizaremos las funciones
keys(), values(), e items(). A continuación podemos utilizar la
función list() para convertir estos datos en listas o tuplas. De
esa manera podremos procesarlos mediante un bucle
accediendo a cada elemento mediante su índice.
Desafortunadamente, esto no es posible en los diccionarios
debido a que no soportan indexación.

list(miPerro.keys()) devuelve una lista con las claves


del diccionario.

2 de 3 4/7/19 10:29 a. m.
Diccionarios en Python: otra estructura de datos -... about:reader?url=https://blog.carreralinux.com.a...

list(miPerro.values()) devuelve una lista con los


valores del diccionario.

list(miPerro.items()) devuelve una tupla con los pares


clave-valor del diccionario.

En la Fig. 1 podemos ver el resultado de los ejemplos


mencionados anteriormente:

Figura 1 – Diccionarios en Python

Como vemos en la Fig. 1, recién pudimos acceder a un


elemento resultante de miPerro.values() al convertir el
resultado a una lista. Otra forma de acceder a los valores de
un diccionario es referenciar el elemento en el que se
encuentra mediante la clave respectiva.

¡No se pierdan el próximo post con más detalles y ejemplos


sobre los diccionarios en Python!

3 de 3 4/7/19 10:29 a. m.
Expresiones regulares en Python: uso de tuberías ... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Expresiones regulares en Python:


uso de tuberías - Blog Carrera Linux
3 minutos

Hace algunos días mostramos ejemplos de expresiones


regulares en Python. A través de las funciones provistas por
el módulo re, disponemos de herramientas muy potentes para
el proceso de texto. En esta ocasión compartiremos el
concepto de tuberías, y mostraremos cómo especificar varias
expresiones regulares al mismo tiempo. De esa manera, la
presencia de una cadena de texto que cumpla cualquiera de
ellas hará que obtengamos un match object. ¡Comencemos!

Tuberías en las expresiones regulares en


Python

Para empezar, recordemos que hasta ahora solamente


hemos definido una única expresión regular en cada caso. En
una oportunidad se trató de una dirección de correo
electrónico y en otra de un número telefónico. ¿Pero qué
sucede si deseamos especificar dos o más expresiones
regulares, y verificar la presencia de texto que cumpla
cualquiera de ellas? En tal caso deberemos crear una

1 de 3 4/7/19 10:30 a. m.
Expresiones regulares en Python: uso de tuberías ... about:reader?url=https://blog.carreralinux.com.a...

expresión regular como de costumbre pero encerrando la lista


de posibles alternativas entre paréntesis (formando lo que se
llama un grupo) y separándolas mediante una tubería.

Por ejemplo, para detectar la presencia de las palabras


Batman, Superman, Aquaman, o Spiderman, haremos uso de
las siguientes expresiones:

import re

superHeroes = re.compile(r'(Bat|Super|Aqua|Spider)man')

mo = superHeroes.search('Mi súper héroe favorito es el


Batman de Chris Bale')

mo.group()

mo.group(1)

Como explicamos en el post anterior, el método group() del


match object devolverá la parte de la cadena de texto donde
se halló la coincidencia. Por otra parte, group(1) nos mostrará
el string del grupo que participó en la coincidencia. En la Fig.
1 podemos ver el resultado del ejemplo anterior:

Figura 1 – Uso de grupos y tuberías en las expresiones


regulares en Python

Resumen

2 de 3 4/7/19 10:30 a. m.
Expresiones regulares en Python: uso de tuberías ... about:reader?url=https://blog.carreralinux.com.a...

Finalmente, para buscar una coincidencia entre varias


posibles deberemos seguir estos pasos:

1. Importar el módulo re.

2. Compilar la expresión regular deseada indicando los strings


alternativos separados por |.

3. Utilizar la función search() con la cadena que se desea


examinar como argumento a fin de crear un match object.

4. Llamar el método group() para regresar la concidencia. En


este último paso, es conveniente utilizar un if para confirmar
la existencia de un matching object primero:

if mo:

mo.group()

mo.group(1)

Espero que este post les haya resultado útil. ¡Hasta el


próximo!

3 de 3 4/7/19 10:30 a. m.
Módulo re en Python: expresiones regulares - Blo... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Módulo re en Python: expresiones


regulares - Blog Carrera Linux
3-4 minutos

En un post anterior, mostramos mediante un ejemplo la


utilidad de las expresiones regulares. En esa
ocasión, comparamos las líneas de código necesarias para
manipular texto con y sin expresiones regulares. Para
continuar, ahora repasaremos algunas de las funciones
contenidas deltro del módulo re en Python. De esa manera,
dispondremos de más herramientas a la hora de buscar
patrones dentro de una cadena de texto dada.

El módulo re en Python

A causa de que las expresiones regulares a menudo utilizan


caracteres de escape (como por ejemplo la barra invertida \),
es necesario indicar que las mismas no se interpreten como
tales sino como parte de la expresión regular propiamente
dicha. La forma más simple de hacerlo es comenzar la
cadena con una letra r para indicar que la misma debe
tomarse literalmente. En Python, esto se denomina un raw
string.

1 de 5 4/7/19 10:31 a. m.
Módulo re en Python: expresiones regulares - Blo... about:reader?url=https://blog.carreralinux.com.a...

El ejemplo más simple de una raw string es r'\n'. Como


resultado, Python «verá» dos caracteres: '\' y 'n'. Por otra
parte, si escribiéramos '\n' (sin la r al principio), Python lo
interpretaría como un solo caracter (el salto de línea).

Las funciones

A continuación, veamos algunas de las funciones que


usaremos más a menudo:

1) re.compile(patrón) permite compilar una expresión regular


(dada por patrón) en un objeto. El mismo puede usarse
posteriormente por las funciones match() y search() como
veremos enseguida.

2) Una vez que una expresión regular ha sido compilada en


un objeto, el mismo acepta las funciones

objeto.search(cadena), la cual busca dentro de cadena la


presencia de un string que satisfaga la expresión regular, y

objeto.match(cadena) que intentará realizar la misma


operación pero al comienzo de cadena, o a partir de la
posición y la longitud que se indique.

3) El resultado de la función search se almacena en una


variable (que en este caso llamamos mo) del tipo match
object. Si la búsqueda dio resultado, la función group()
devolverá el string que cumplió la expresión regular.

Veamos dos ejemplos para ilustrar:

2 de 5 4/7/19 10:31 a. m.
Módulo re en Python: expresiones regulares - Blo... about:reader?url=https://blog.carreralinux.com.a...

import re

En la Fig. 1 vemos el resultado de utilizar dos cadenas de


texto diferentes para buscar una ocurrencia del patrón
especificado:

3 de 5 4/7/19 10:31 a. m.
Módulo re en Python: expresiones regulares - Blo... about:reader?url=https://blog.carreralinux.com.a...

Figura 1 – El módulo re en Python: uso de las funciones


compile y search

En el primer ejemplo, 1534234512 cumple con la expresión


regular especificada (8 dígitos seguidos, cada uno
representado por \d). En el segundo, el string
Quince34234512 no cumple con el patrón buscado y por eso
el match object no expone ningún resultado.

Ejemplo final

Finalmente, veamos el uso de la función match. Al utilizarla


en lugar de search y correr el mismo script anterior,
obtenemos el siguiente resultado:

4 de 5 4/7/19 10:31 a. m.
Módulo re en Python: expresiones regulares - Blo... about:reader?url=https://blog.carreralinux.com.a...

Figura 2 – El módulo re en Python: uso de la función match

Prestemos atención que en el segundo ejemplo tuvimos que


especificar la posición de la cadena donde se debía comenzar
la búsqueda.

Espero que este post les haya resultado útil. ¡Nos


reencontramos en el próximo!

5 de 5 4/7/19 10:31 a. m.
Conteo y orden con Python: diccionarios al rescate... about:reader?url=https://blog.carreralinux.com.a...

blog.carreralinux.com.ar

Conteo y orden con Python:


diccionarios al rescate - Blog
Carrera Linux
3-4 minutos

En un post anterior presentamos los diccionarios en Python.


Luego mostramos cómo utilizarlos para contar la cantidad de
ocurrencias de cada palabra en un texto. A fin de reforzar el
tema, en esta oportunidad veremos dos ejemplos más sobre
el conteo y orden con Python. Los mismos consistirán en 1)
ordenar la lista de palabras según el número de ocurrencias, y
2) contar la cantidad de palabras por oración.

Conteo y orden con Python

Para empezar, modificaremos el ejemplo del post anterior de


la siguiente manera:

import pprint

import collections

primerCapitulo = '''

COLOCAR EL TEXTO AQUÍ

1 de 4 4/7/19 10:31 a. m.
Conteo y orden con Python: diccionarios al rescate... about:reader?url=https://blog.carreralinux.com.a...

'''

conteo = {}

for palabra in primerCapitulo.upper().split():

conteo.setdefault(palabra, 0)

conteo[palabra] = conteo[palabra] + 1

conteoEnOrden = collections.Counter(conteo)

pprint.pprint(conteoEnOrden.most_common())

Como podemos ver, importamos el módulo collections para


luego modificar el diccionario conteo mediante el contenedor
Counter. Este último es una especie de diccionario que
posee una función llamada most_common(). Esta función
devuelve una lista de tuplas ordenadas en la que cada una
está formada por un par clave / valor del diccionario.

Los contenedores son en sí un tipo de datos en Python, por lo


que merecen un post especial para ser cubiertos en mayor
detalle.

En la Fig. 1 podemos ver el resultado:

2 de 4 4/7/19 10:31 a. m.
Conteo y orden con Python: diccionarios al rescate... about:reader?url=https://blog.carreralinux.com.a...

Figura 1 – Primer ejemplo de conteo y orden con Python

Conteo de palabras por oración en un texto

Finalmente, procedamos a contar la cantidad de palabras por


oración en el texto que guardamos dentro de la variable
loremIpsum:

loremIpsum = 'Lorem ipsum dolor sit amet, eos vidisse


invenire intellegebat ex, in has dolorem facilisi recusabo. Ad
eum melius labores rationibus. Ea corpora maiestatis pri, ius
simul exerci eu. Per virtute intellegam ex, sea id salutatus
mediocritatem, duo at possit aliquip adipisci. An nec quod
falli contentiones, falli partem adipiscing quo an. Unum
salutandi cum no, affert delenit qualisque vis cu, cu velit
scripta deterruisset pri.'

# Crear lista con las oraciones presentes en el texto

# Para eso, usamos la función split() indicando el '. '

# como separador. El espacio a continuación del punto

# impide que los espacios al comienzo de una oración

# se consideren como una palabra.

listaOraciones = loremIpsum.split('. ')

# Mostrar cada oración y la cantidad de palabras presentes

# en la misma. Utilizamos split(' ') para separar por espacios.

for oracion in listaOraciones:

3 de 4 4/7/19 10:31 a. m.
Conteo y orden con Python: diccionarios al rescate... about:reader?url=https://blog.carreralinux.com.a...

print(oracion, str(len(oracion.split(' '))))

Los comentarios dentro del código explican cada paso del


mismo. En la Fig. 2 podemos ver el resultado de ejecutarlo:

Figura 2 – Segundo ejemplo de conteo y orden en Python

Espero que este post les haya resultado útil. ¡Nos leemos en
breve!

4 de 4 4/7/19 10:31 a. m.
python - Crear un diccionario anidado de un dicc... about:reader?url=https://code.i-harness.com/es/q...

code.i-harness.com

python - Crear un diccionario


anidado de un diccionario aplanado
3-4 minutos

dictionary recursion nested netcdf (6)

output = {}

for k, v in source.items():

current = output

pieces = k.split('_')

for piece in pieces[:-1]:


if not piece in current:

current[piece] = {}

1 de 4 4/7/19 10:35 a. m.
python - Crear un diccionario anidado de un dicc... about:reader?url=https://code.i-harness.com/es/q...

current = current[piece]

current[pieces[-1]] = v

Tengo un diccionario aplanado que quiero convertir en uno


anidado, de la forma

flat = {'X_a_one': 10,


'X_a_two': 20,
'X_b_one': 10,
'X_b_two': 20,
'Y_a_one': 10,
'Y_a_two': 20,
'Y_b_one': 10,
'Y_b_two': 20}

Quiero convertirlo a la forma

nested = {'X': {'a': {'one': 10,


'two': 20},
'b': {'one': 10,
'two': 20}},
'Y': {'a': {'one': 10,
'two': 20},
'b': {'one': 10,
'two': 20}}}

La estructura del diccionario plano es tal que no debería


haber ningún problema con las ambigüedades. Quiero que

2 de 4 4/7/19 10:35 a. m.
python - Crear un diccionario anidado de un dicc... about:reader?url=https://code.i-harness.com/es/q...

funcione para diccionarios de profundidad arbitraria, pero el


rendimiento no es realmente un problema. He visto muchos
métodos para aplanar un diccionario anidado, pero
básicamente ninguno para anidar un diccionario aplanado.
Los valores almacenados en el diccionario son escalares o
cadenas, nunca iterables.

Hasta ahora tengo algo que puede tomar la entrada

test_dict = {'X_a_one': '10',


'X_b_one': '10',
'X_c_one': '10'}

a la salida

test_out = {'X': {'a_one': '10',


'b_one': '10',
'c_one': '10'}}

usando el código

def nest_once(inp_dict):
out = {}
if isinstance(inp_dict, dict):
for key, val in inp_dict.items():
if '_' in key:
head, tail = key.split('_', 1)

if head not in out.keys():


out[head] = {tail: val}
else:

3 de 4 4/7/19 10:35 a. m.
python - Crear un diccionario anidado de un dicc... about:reader?url=https://code.i-harness.com/es/q...

out[head].update({tail:
val})
else:
out[key] = val
return out

test_out = nest_once(test_dict)

Pero estoy teniendo problemas para descubrir cómo convertir


esto en algo que recursivamente crea todos los niveles del
diccionario.

¡Cualquier ayuda sería apreciada!

(En cuanto a por qué quiero hacer esto: tengo un archivo cuya
estructura es equivalente a un dict anidado, y quiero
almacenar el contenido de este archivo en el diccionario de
atributos de un archivo NetCDF y recuperarlo más tarde. Sin
embargo, NetCDF solo te permite pongo diccionarios planos
como los atributos, así que quiero unflatten el diccionario que
guardé previamente en el archivo NetCDF.)

4 de 4 4/7/19 10:35 a. m.
Programando con Python / Python Core: Diccionarios http://pycartagena.pbworks.com/w/page/3668468...

Programando con Python Get a free wiki | Try our free business product log in help

Wiki Pages & Files Search this workspace

If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

VIEW EDIT

Python Core: Diccionarios To join this workspace, request access.

Already have an account? Log in!


last edited by Wilderman Ceren 8 years ago Page history

Los diccionarios son algo completamente distinto. No son del todo secuencias,sino mas bien se conocen Navigator

como mappings (asignadores).  Abstracción: Funciones


Mappings son colecciones de otros objetos que se almacenan por llaves en vez de su posición (índice).
ch01
Basicamente se mapean llaves con sus respectivos valores asociados en pares tipo "key:value".
ch02

Operaciones: ch03

ch04
Miembros:
operador k in D comprueba si el objeto k es una de las claves del diccionario D retornando true o false. Contenido-Temático

Ejercicios
Pages Files options
Indexando:
>>> D = {'food': 'Spam', 'quantity': 4, 'color': 'pink'}
SideBar

Podemos indexar ese diccionario por clave para buscar y cambiar el valor de la llave asociada.
Notese que el item dentro del corchete es una clave, no su posición relativa como ocurre en la lista. Excepciones
Septima Sesión
Sábado 2 de Abril de 2011
Arrojar el valor clave de 'food':
>>> D['food']
'Spam'
Recent Activity
Sumarle 1 al valor de "quantity"
FrontPage
>>> D['quantity'] += 1 edited by juanpedro
>>> D
{'food': 'Spam', 'color': 'pink', 'quantity': 5} FrontPage
edited by juanpedro

Error: llave no presente:


FrontPage
>>> D['flavor']
edited by juanpedro
Traceback (most recent call last):
File "<stdin>", line 1, in <module> FrontPage
KeyError: 'flavor' edited by dshadou@gmail.com

Inicializar un diccionario e ir llenandolo: FrontPage


>>> D = {} edited by dshadou@gmail.com

>>> D['name'] = 'Bob'


FrontPage
>>> D['job'] = 'dev'
edited by dshadou@gmail.com
>>> D['age'] = 40
FrontPage
>>> D edited by dshadou@gmail.com
{'age': 40, 'job': 'dev', 'name': 'Bob'}
More activity...
>>> print(D['name'])
Bob
>>> D['name']
'Bob'

Eliminar una llave de la forma del D[k]


>>> del D['age']
>>> D
{'job': 'dev', 'name': 'Bob'}

Anidamiento:

1 de 4 4/7/19 12:41 p. m.
Programando con Python / Python Core: Diccionarios http://pycartagena.pbworks.com/w/page/3668468...

Supongamos algo mas complejo donde necesitemos guardar el nombre y apellido, junto con los
diferentes trabajos a través del anidado ( nesting).

>>> rec = {'nombre': {'1ero': 'Wilderman', 'apel': 'Ceren'},


... 'job': ['desarrollador', 'management'],
... 'age': 34.6}

>>> rec
{'nombre': {'1ero': 'Wilderman', 'apel': 'Ceren'}, 'job': ['desarrollador',
'management'], 'age': 34.6}

"nombre" es un diccionario anidado:


>>> rec['nombre']
{'1ero': 'Wilderman', 'apel': 'Ceren'}

Indice del diccionario anidado:


>>> rec['nombre']['apel']
'Ceren'

"Job" es una lista anidada:


>>> rec['job']
['desarrollador', 'management']

>>> rec['job'][-1]
'management'

>>> rec['job'].append('webmaster')
>>> rec
{'nombre': {'1ero': 'Wilderman', 'apel': 'Ceren'}, 'job': ['desarrollador',
'management', 'webmaster'], 'age': 34.6}

Liberar la estructura de diccionario:


rec = 0

Importante: Recolección de basura (garbage collection) en Python:


Limpia la memoria sin usar del programa en ejecucion. El espacio es reclamado inmediatamente tan
pronto la ultima referencia del objeto es removida.

Métodos  no-mutantes:
Siendo D un objeto diccionario:
D.copy( )
D.has_key(k)
D.items( )
D.keys( )
D.values( )
D.iteritems( )
D.iterkeys( )
D.itervalues( )
D.get(k[, x])

Métodos mutantes:
D.clear( )
D.update(D1)
D.setdefault(k[, x])
D.pop(k[, x])
D.popitem( )

Ordenando Keys: Búcles/Ciclos for

Diccionarios solo se acceden a través de keys.

2 de 4 4/7/19 12:41 p. m.
Programando con Python / Python Core: Diccionarios http://pycartagena.pbworks.com/w/page/3668468...

Diccionarios no son secuencias, no mantienen el orden izquierda-derecha.

>>> D = {'a':1, 'b':2, 'c':3}


>>> D
{'a': 1, 'c': 3, 'b': 2}

¿Que hacer para imponer un orden en los items de un diccionario?

>>> Ks = list(D.keys())
>>> Ks
['a', 'c', 'b']

Ordenando lista de keys:


>>> Ks.sort()
>>> Ks
['a', 'b', 'c']

>>> for key in Ks:


... print(key, '=>', D[key])
...
('a', '=>', 1)
('b', '=>', 2)
('c', '=>', 3)

Ordenar usando método sorted (un solo paso):

>>> D
{'a': 1, 'c': 3, 'b': 2}

>>> for key in sorted(D):


... print(key, '=>', D[key])
...
('a', '=>', 1)
('b', '=>', 2)
('c', '=>', 3)

El ciclo for es una operación de secuencia, primo de while:


>>> for c in 'spam':
... print(c.upper())
...
S
P
A
M

El ciclo while es un tool mas general para ordenación:


>>> x = 4
>>> while x > 0:
... print('spam!' * x)
... x -= 1
...
spam!spam!spam!spam!
spam!spam!spam!
spam!spam!
spam!

Iteración y Optimización:
Protocolo de Iteración: Secuencia fisicamente almacenada en la memoria. Aplica para las expresiones de
comprensión de lista:

3 de 4 4/7/19 12:41 p. m.
Programando con Python / Python Core: Diccionarios http://pycartagena.pbworks.com/w/page/3668468...

>>> squares = [x ** 2 for x in [1, 2, 3, 4, 5]]


>>> squares
[1, 4, 9, 16, 25]

Equivalente usando for loop:

>>> squares = []
>>> for x in [1, 2, 3, 4, 5]:
... squares.append(x ** 2)
...
>>> squares
[1, 4, 9, 16, 25]

Importante: La comprensión de lista similar a las funciones map y filter, correrá más rapido que un ciclo
for hoy dia.

Para cuando falten keys: if Tests

>>> D
{'a': 1, 'c': 3, 'b': 2}

>>> D['e'] = 99
>>> D
{'a': 1, 'c': 3, 'b': 2, 'e': 99}

>>> D['f']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'f'

Verificación mas eficiente:


>>> 'f' in D
False

Verificación condicional (if):


>>> if not 'f' in D:
... print('missing')
...
missing

Verificación con método get (indice condicional con un valor x por defecto):
>>> value = D.get('f',0)
>>> value
0

Verificación de valor x defecto en una linea:


>>> value = D['f'] if 'f' in D else 0
>>> value
0

Comments (0)

You don't have permission to comment on this page.

Printable version

PBworks / Help About this workspace


Terms of use / Privacy policy / GDPR Contact the owner / RSS feed / This workspace is public

4 de 4 4/7/19 12:41 p. m.
Python – Iterar sobre diccionario anidado about:reader?url=https://codeday.me/es/qa/2019...

codeday.me

Python – Iterar sobre diccionario


anidado
1-2 minutos

¿Existe una manera fácil de iterar sobre un diccionario


anidado, que puede consistir en otros objetos como listas,
tuplas y luego nuevamente diccionarios para que la iteración
cubra todos los elementos de estos otros objetos?

Por ejemplo, si escribo una clave de un objeto de diccionario


anidado, obtendré todo en el intérprete de Python.

[editar] aquí hay un diccionario de ejemplo:

{
'key_1': 'value_1',
'key_2': {'key_21': [(2100, 2101), (2110,
2111)],
'key_22': ['l1', 'l2'],
'key_23': {'key_231': 'v'},
'key_24': {'key_241': 502,
'key_242': [(5, 0), (7, 0)],
'key_243': {'key_2431': [0, 0],
'key_2432': 504,

1 de 2 4/7/19 12:42 p. m.
Python – Iterar sobre diccionario anidado about:reader?url=https://codeday.me/es/qa/2019...

'key_2433': [(11451, 0),


(11452, 0)]
},
'key_244': {'key_2441':
{'key_24411': {'key_244111': 'v_24411',
'key_244112':
[(5549, 0)]
},

'key_24412':'v_24412'
},
'key_2441': ['ll1', 'll2']
}
},
}
}

Lo siento por ser ilegible, pero hice lo mejor que pude.

2 de 2 4/7/19 12:42 p. m.
Seis comandos mágicos de Jupyter Notebooks - A... about:reader?url=https://www.analyticslane.com...

analyticslane.com

Seis comandos mágicos de Jupyter


Notebooks - Analytics Lane
Daniel Rodríguez
4-6 minutos

Los Jupyter Notebooks son una herramienta web con la que


se puede ejecutar código de forma interactiva, almacenar los
resultados y documentar el proceso. Actualmente es muy
popular para explicar las técnicas y los procedimientos
empleados en tareas de análisis de datos. Una de las
características más poderosas de Jupyter Notebooks son los
comandos mágicos. Los que son accesos directos a
funciones con las que es posible realizar ciertas tareas
habituales de una forma más cómoda y rápida. En esta
entrada se van a mostrar seis de los comandos mágicos de
Jupyter Notebooks más interesantes.

Medir el tiempo de ejecución

Uno de los problemas más habituales es saber cuanto tiempo


tarda en ejecutarse un código. El tiempo de una celda se
puede obtener mediante un complemento de Jupyter. Pero si
únicamente se desea conocer el tiempo de una función es

1 de 6 5/7/19 6:11 p. m.
Seis comandos mágicos de Jupyter Notebooks - A... about:reader?url=https://www.analyticslane.com...

mejor utilizar los comandos mágicos %time o %timeit.


Ambos permiten medir el tiempo de ejecución de la
instrucción escrita inmediatamente después en la misma
línea. Por un lado, el comando %time mide el tiempo de CPU
(dividido en usuario, sistema y total) y el de reloj. Por otro
lado, %timeit utiliza el módulo timeit de Python para
medir el tiempo medio de ejecución. El funcionamiento de
estos comandos se puede ver en el siguiente ejemplo.

1. %time task()

2.

3. # CPU times: user 15.7 ms, sys: 4.83 ms, total: 20.5 ms

4. # Wall time: 18.3 ms

5.

6. %timeit task()

7.

8. # 10.1 ms ± 159 µs per loop (mean ± std. dev. of 7 runs, 100


loops each)

La principal diferencia entre ambos es que %time ejecuta el


comando una sola vez mientras que %timeit lo hace varias
para calcular la media. Por lo que la segunda opción es más
lenta pero más fiable.

Existe una versión alternativa de estos comandos con dos


símbolos de tanto por ciento. En tal caso miden el tiempo de
las líneas situadas inmediatamente después del comando.

2 de 6 5/7/19 6:11 p. m.
Seis comandos mágicos de Jupyter Notebooks - A... about:reader?url=https://www.analyticslane.com...

1. %%time

2. task()

3. task()

4.

5. # CPU times: user 20.7 ms, sys: 1.19 ms, total: 21.9 ms

6. # Wall time: 20.6 ms

7.

8. %%timeit

9. task()

10. task()

11.

12. # 20.5 ms ± 243 µs per loop (mean ± std. dev. of 7 runs, 100
loops each)

Mostrar los gráficos en los Notebooks

Uno de los comandos mágicos más utilizado es


%matplotlib, por lo que es habitual encontrarlo en muchos
Notebooks. La utilización de este comando garantiza que
Jupyter Notebooks muestre los gráficos.

Carga automática de referencia

Al importar una referencia en un Notebook esta se cargará en


memoria. Si posteriormente a la importación se modifica el

3 de 6 5/7/19 6:11 p. m.
Seis comandos mágicos de Jupyter Notebooks - A... about:reader?url=https://www.analyticslane.com...

archivo los cambios introducidos no tendrán efecto hasta que


se reincide el núcleo. Este comportamiento en la mayoría de
los casos no es un problema, salvo que se esté desarrollando
una librería y se deseen probar los cambios. Para solucionar
este problema se puede utilizar el comando mágico
%load_ext autoreload. Al utilizar este comando las
referencias se actualizarán automáticamente cada vez que se
modifique el archivo.

Acceso a la terminal del sistema

La terminal del sistema operativo es una herramienta con las


que se pueden hacer muchas tareas. Por lo que puede ser
interesante acceder a la misma desde un Notebooks. Para
ello se puede utilizar el comando mágico %system seguido
del comando del comando de la terminal. Por ejemplo, se
puede consultar la versión de Python instalada

Listado de variables

En Jupyter Notebooks se puede utilizar un complemento para


consultar el listado de variables. Esta información también se
puede conseguir con un comando mágico: %who_ls. Al
ejecutarlo se mostrará la lista de variables existentes en el
entorno.

1. a = 1

2. b = 2

4 de 6 5/7/19 6:11 p. m.
Seis comandos mágicos de Jupyter Notebooks - A... about:reader?url=https://www.analyticslane.com...

3. c = a + b

4.

5. %who_ls

['NamespaceMagics',
'a',
'autopep8',
'b',
'c',
'get_ipython',
'getsizeof',
'json',
'np',
'var_dic_list']

Configuración de los Jupyter Notebooks

Finalmente, también existe un comando mágico de Jupyter


Notebooks para configurar las opciones del entorno IPython:
%config. Para cambiar una opción, simplemente es
necesario llamar a este comando seguido de la opción a
configurar. Por ejemplo, este comando se utilizó por ejemplo
para configurar el uso de la resolución HDPi en las pantallas.

Conclusiones

En esta entrada se han visto seis comandos mágicos de


Jupyter Notebooks con los que facilita el trabajo con esta

5 de 6 5/7/19 6:11 p. m.
Seis comandos mágicos de Jupyter Notebooks - A... about:reader?url=https://www.analyticslane.com...

herramienta. El listado completo de los comandos se puede


consultar en la documentación. ¿Qué comando os parecen
más interesantes? Podéis dejar la respuesta en los
comentarios de la entrada.

Imágenes: Pixabay (Pexels)

No te olvides valorar esta entrada

Sin votos

Por favor espera...

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las


publicaciones de Analytics Lane.

Contenido relacionado

6 de 6 5/7/19 6:11 p. m.
Creación de gráficos interactivos en Jupyter Not... about:reader?url=https://www.analyticslane.com...

analyticslane.com

Creación de gráficos interactivos en


Jupyter Notebook con Python -
Analytics Lane
Daniel Rodríguez
4-5 minutos

septiembre 17, 2018 Por Deja un comentario

Para la exploración de datos los gráficos interactivos es una


solución que facilita la tarea. Poder comprobar cómo cambian
los resultados al modificar uno o varios parámetros facilitan la
comprensión del efecto de estos. A continuación, se explicará
cómo crear gráficos interactivos en Jupyter Notebook con
Python.

Introducción

En muchas ocasiones es interesante poder comprobar


gráficamente cómo cambian los resultados al modificar
parámetros. En Jupyter Notebook una forma trivial de
conseguir esto es volver a ejecutar la celda cambiando los
parámetros. Otra forma más interesante de conseguir esto es
mediante la creación de gráficos interactivos. Estos gráficos

1 de 7 5/7/19 6:11 p. m.
Creación de gráficos interactivos en Jupyter Not... about:reader?url=https://www.analyticslane.com...

permiten la creación de pantallas dinámicas basadas en la


evaluación de funciones.

Gráficos interactivos en Jupyter Notebook

Para la creación de un gráfico interactivos se ha de crear un


Notebook en el que se ha de incluir las siguientes líneas:

1. %matplotlib inline

2. import numpy as np

3. import matplotlib.pyplot as plt

Una vez realizado esto se ha de crear una función que genere


el gráfico deseada. A modo de ejemplo se va a simular una
distribución normal y representar el histograma. La idea es
comprobar cómo evoluciona la forma de la distribución a
medida que aumenta el tamaño de la muestra. Para ello se
puede definir una función como la siguiente:

1. from scipy.stats import norm

2.

3. def plot_function(size = 100, bins = 10, loc=0, scale=1,


color='red'):

4. data = norm.rvs(size=size, loc=loc, scale=scale)

5. binwidth = (max(data) - min(data))/ bins

6. plt.hist(data,

7. bins=np.arange(min(data), max(data) + binwidth, binwidth),

2 de 7 5/7/19 6:11 p. m.
Creación de gráficos interactivos en Jupyter Not... about:reader?url=https://www.analyticslane.com...

8. color=color)

9. plt.show()

Al llamar a esta función se simula una distribución normal con


los parámetros indicados. Posteriormente calcula el ancho de
los bins del histograma y lo representa. Al ejecutar esta
función aparece un gráfico como la siguiente.

Ahora, se puede importar la función interact de


ipywidgets para crear un gráfico interactivo. A esta función
se le ha de pasar como parámetro la que se ha definido para
generar el gráfico. Esta generará un gráfico con un control
para para cada una de las entradas de la función que se
pueden utilizar para cambiar los valores. Por ejemplo, al
ejecutar el siguiente código en una celda se obtiene la
siguiente figura.

3 de 7 5/7/19 6:11 p. m.
Creación de gráficos interactivos en Jupyter Not... about:reader?url=https://www.analyticslane.com...

1. from ipywidgets import interact

2. interact(plot_function)

3. None

Limitar los parámetros de los controles

En el ejemplo anterior se puede ver que es posible


seleccionar valores en los controles que no son válidos. Por
ejemplo, un tamaño de la muestra negativo o un nombre de

4 de 7 5/7/19 6:11 p. m.
Creación de gráficos interactivos en Jupyter Not... about:reader?url=https://www.analyticslane.com...

color no disponible. Para evitar esto se le puede indicar los


valores permitidos y el paso en las barras de desplazamiento
para cada uno de los parámetros. En el caso de los valores
numéricos se ha de indicar una tulpa con el valor mínimo, el
máximo y, en caso de que el paso entre valores no sea de 1,
el valor del paso. Por otro lado, cuando el valor es categórico
se ha de utilizar una lista con los valores permitidos. En el
ejemplo anterior se puede modificar para evitar los problemas
indicados anteriormente.

1. interact(plot_function,

2. size = (1, 1000, 10),

3. bins = (1, 100, 1),

4. loc = (-100, 100, 1),

5. scale = (1, 100, 1),

6. color=['red', 'yellow', 'blue'])

7. None

Obteniéndose un nuevo gráfico interactivo en el Notebook en


el que se puede apreciar unas barras de desplazamiento
modificadas. Además, la selección del color se esta limitada
únicamente a los tres valores indicados.

5 de 7 5/7/19 6:11 p. m.
Creación de gráficos interactivos en Jupyter Not... about:reader?url=https://www.analyticslane.com...

En el caso de que una variable sea binaria se puede indicar a


interact con la opción True. Así aparecerá una casilla de
selección en lugar de una barra de desplazamiento.

Conclusiones

En esta entrada se ha visto cómo crear de gráficos


interactivos en Jupyter Notebook con Python. La utilización de
esta herramienta permite explorar los resultados de una forma
visual más ágil. Permitiendo que incluso usuarios sin
conocimiento de Python puedan realizar la exploración.

Imágenes: Pixabay

No te olvides valorar esta entrada

6 de 7 5/7/19 6:11 p. m.
Creación de gráficos interactivos en Jupyter Not... about:reader?url=https://www.analyticslane.com...

Sin votos

Por favor espera...

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las


publicaciones de Analytics Lane.

Contenido relacionado

Interacciones del lector

7 de 7 5/7/19 6:11 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

ligdigonzalez.com

Librerías de Machine Learning con


Python - Ligdi González
12-15 minutos

Python se está volviendo popular día a día y ha comenzado a


reemplazar muchos idiomas populares en la industria. La
razón principal de la popularidad se debe a las siguientes
razones:

Es simple. Python se está convirtiendo en el idioma de


elección entre los nuevos programadores gracias a su sintaxis
y gran comunidad.

Es poderoso. El hecho de que algo sea simple no significa


que no sea capaz, Python es también uno de los idiomas más
populares entre los científicos de datos y programadores web.
Suele ser la opción para los desarrolladores que necesitan
aplicar técnicas estadísticas o análisis de datos en su trabajo,
o para los científicos de datos cuyas tareas deben integrarse
con aplicaciones web o entornos de producción. En particular
Python realmente brilla en el campo de Machine Learning o
Aprendizaje Automático, su combinación de bibliotecas y
flexibilidad hace que Python sea especialmente adecuado
para desarrollar modelos sofisticados y motores de predicción

1 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

que se conectan directamente a los sistemas de producción.

Muchas bibliotecas de Machine Learning. Hay toneladas


de bibliotecas de aprendizaje automático ya escritas para
Python, puedes elegir una de los cientos de bibliotecas en
función de su caso de uso, habilidad y necesidad de
personalización. Este último punto es justamente uno de los
activos de Python. Los algoritmos que potencia Machine
Learning son bastante complejos e incluyen muchas
matemáticas, por lo que escribirlos tu mismo sería una tarea
muy difícil. Afortunadamente para nosotros, hay muchas
personas inteligentes y dedicadas que han hecho este arduo
trabajo para que podamos centrarnos en la aplicación que
tenemos entre manos.

Para que tengas claro, las bibliotecas son conjuntos de


rutinas y funciones escritas en un idioma determinado, un
conjunto robusto de bibliotecas puede facilitar que los
desarrolladores realicen tareas complejas sin reescribir
muchas líneas de código.

2 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

A continuación, te presento las bibliotecas o librerías más


utilizadas:

Librerías básicas para la ciencia de los datos

Estas son las bibliotecas básicas que transforman Python de


un lenguaje de programación de propósito general en una
poderosa y robusta herramienta para el análisis y la
visualización de datos, estas son las bases sobre la que se
basan las herramientas más especializadas.

Pandas

Pandas es una librería de Python diseñado para trabajar con


datos “etiquetados” y “relacionales” de manera simple e
intuitivos, está diseñado para una manipulación, agregación y
visualización de datos rápida y fácil. Pandas agrega
estructura de datos y herramientas que están diseñadas para
el análisis de datos prácticos en finanzas, estadísticas e
ingeniería. Pandas funciona bien con datos incompletos,
desordenados y no etiquetados, s decir, el tipo de datos que
es probable que encuentre en el mundo real, y proporciona
herramientas para configurar, fusionar, remodelar y dividir
conjuntos de datos. Con esta librería se puede agregar y
eliminar columnas fácilmente desde el DataFrame, convertir
estructuras de datos en objetos y manejar datos faltantes
(NaN).

Numpy

3 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

Numpy se refiere a Numerical Python y es una librería


fundamental para la informática científica en Python ya que
proporciona la vectorización de operaciones matemáticas en
el tipo de matrices, mejorando el rendimiento y, en
consecuencia, acelera la ejecución.

Esta orientada en administrar y tratar los datos como


matrices, su propósito es proporcionar la capacidad de hacer
operaciones complejas de matriz que son requeridas por
redes neuronales y estadísticas complejas de manera fácil.

En resumen, Numpy presenta objetos para matrices y


matrices multidimensionales, así como rutinas que permiten a
los desarrolladores realizar funciones matemáticas y
estadísticas avanzadas en esas matrices con el menor
número de código posible.

Numpy es una librería de administración de datos que


normalmente está emparejado con TensroFlow, SciPy,
matplotlib y muchas otras librerías de Python orientadas hacia
Machine Learning y la ciencia de datos.

SciPy

SciPy es una librería de software para ingeniería y ciencia,


SciPy incluye funciones para algebra lineal, optimización,
integración y estadísticas. Proporciona rutinas numéricas
eficientes como integración numérica, optimización y muchas
otras a través de sus submódulos específicos. La
funcionalidad principal de esta librería se basa en NumPy y
sus matrices, se basa en NumPy al agregar una colección de

4 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

algoritmos y comandos de alto nivel para manipular y


visualizar datos.

Librerías básicas para plotting y visualizaciones

El mejor y más sofisticado análisis no tiene sentido si no


puedes comunicarlo a otras personas. Estas librerías
permiten crear fácilmente gráficos, tablas y mapas
visualmente más atractivos y sofisticados, sin importar qué
tipo de análisis esté tratando de hacer.

Matplotlib

Es una librería estándar de Python para crear diagramas y


gráficos en 2D, es de muy bajo nivel, lo que significa que
requiere más comandos para generar gráficos y figuras
agradables que con algunas librerías más avanzadas, sin

5 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

embargo, la otra cara de eso es la flexibilidad, con suficientes


comandos, puede hacer casi cualquier tipo de gráficos que
desee con matplotlib.

Seaborn

Es un librería de visualización popular que se base en


matplotlib y depende mucho de eso. Lo primero que notarás
sobre Seaborn es que sus estilos predeterminados son
mucho más sofisticados que los de matplotlib. Esta es un
librería de nivel superior, por lo que se centra principalmente
en la visualización de modelos estadísticos, haciendo más
fácil generar ciertos tipos de tramas, incluidos mapas de calor
y series de tiempo.

Bokeh

Otra gran librería de visualización es Bokeh, que está dirigida


a visualizaciones interactivas, a diferencia de la biblioteca
anterior, esta es independiente de matplotlib. El enfoque
principal de Bokeh es hacer diagramas interactivos y con
zoom en navegadores web modernos que usan widgets
JavaScript. Otra buene característica de Bokeh es que viene
con tres niveles de interfaz, desde abstracciones de alto nivel
que le permiten generar rápidamente trazados complejos,
hasta una vista de bajo nivel que ofrece la máxima flexibilidad
para los desarrolladores de aplicaciones.

6 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

Librerías para Machine Learning

Machine Learning se encuentra en la intersección de la


Inteligencia Artificial y el análisis estadístico. Al entrenar
computadoras con conjuntos de datos del mundo real,
podemos crear algoritmos que hacen predicciones más
precisas y sofisticadas, ya sea que estemos hablando de
obtener mejores direcciones para conducir o construir
computadores que puedan identificar hitos simplemente
observando imágenes. Las siguientes librerías dan a Python
la capacidad de abordar una serie de tareas de Machine
Learning o Aprendizaje Automático, desde la realización de
regresiones básicas hasta el entrenamiento de redes
neuronales complejas.

Scikit-learn

La librería de scikit-learn es definitivamente una de las más


populares de Machine Learning, tiene una gran cantidad de

7 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

características para la minería de datos y el análisis de datos,


por lo que es una excelente opción tanto para investigadores
como para desarrolladores. Está construido sobre las
populares librerías Numpy, SciPy y matplotlib, por lo que
tendrá una sensación familiar para las muchas personas que
ya usan estas librerías, aunque, en comparación con muchas
de las otras librerías mencionadas a continuación, este es un
nivel un poco más bajo y tiende a actuar como la base para
muchas otras implementaciones de Machine Learning.

Scikit-learn expone una interfaz concisa y consistente para los


algoritmos comunes de Machine Learning, por lo que es
sencillo llevar a los sistemas de producción. La librería
combina código de calidad y buena documentación, facilidad
de uso y alto rendimiento, y es un estándar de la industria de
facto para Machine Learning con Python.

Por otro lado sus herramientas están bien documentadas y


sus colaboradores incluyen muchos expertos en Machine
Learning, además, es una librería muy curada, lo que significa
que los desarrolladores no tendrán que elegir entre diferentes
versiones del mismo algoritmo.

Theano

Theano es una librería de Machine Learning que le permite


definir, optimizar y evaluar expresiones matemáticas que
involucran multidimensionales, lo que puede ser un punto de
frustración para algunos desarolladores en otras librerías. Lo
que distingue a Theano es que aprevecha la GPU (unidad de

8 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

procesamiento gráfico) de la computadora para realizar


cálculos intensivos de datos hasta 100 veces más rápido que
la CPU sola. La velocidad de Theano lo hace especialmente
valioso para Machine Learning y otras tareas
computacionalemnte complejas. Al igual que scikit-learn,
Theano también se integra estrechamente con NumPy. Una
de sus mejores características es una gran documentación y
muchísimos tutoriales.

Keras

Keras es una de las mejores librerías de Machine Learning.


Es una librería de código abierto para construir redes
neuronales en un alto nivel de la interfaz y está escrita en
Python. Es minimalista y directo con alto nivel de
extensibilidad, precisamente el enfoque minimalista en el
diseño apunta a la experimentación rápida y fácil a través de
la construcción de sistemas compactos.

Keras es realmente fácil de empezar y continúa con la


creación rápida de prototipos, es altamente modular y
extensible. A pesar de su facilidad, simplicidad y orientación
de alto nivel, Keras sigue siendo lo suficientemente profundo
y poderoso como para ser un modelo serio.

La idea general de Keras, se basa en capas, y todo lo demás


se construye a su alrededor, los datos se preparan en
tensores, la primera capa es responsable de la entrada de los
tensores, la última capa es responsable de la salida y el
modelo se construye en el medio.

9 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

TensorFlow

Si estás trabajando o estás interesado en Machine Learning,


es posible que hayas oído hablar de esta famosa librería de
código abierto conocida como TensorFlow. Fue desarrollado
por Google Brain y por consiguiente, casi todas las
aplicaciones de Google usan TensorFlow para Machine
Learning, si estás usando fotos de Google o búsqueda de voz
de Google, indirectamente estás utilizando los modelos
creados con TensorFlow.

Es una librería de redes neuronales de alto nivel que ayuda a


programar las arquitecturas de red al tiempo que evita los
detalles de bajo nivel. La atención se centra más en lo que le
permite expresar su cálculo como un gráfico de flujo de datos,
que es mucho más adecuado para resolver problemas
complejos. Está escrito principalmente en C++, que incluye
los enlaces de Python, por lo que no tiene que preocuparse
por sacrificar el rendimiento.

La principal ventaja de TensorFlow es el paralelismo, significa


que los gráficos computacionales se ejecutan en paralelo, por
lo que tienes el control total sobre la ejecución y puedes
programar diferentes operaciones en diferentes procesadores
como CPU, GPU, entre otros.

10 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

Librerías para la minería de datos y el


procesamiento del idioma natural

Para muchas empresas, los datos que necesitan no son algo


que pueda recopilarse pasivamente, sino que deben extraerse
de documentos o páginas web. Las siguientes herramientas
están diseñadas para una variedad de tareas realacionadas,
desde extraer información valiosa de sitios web hasta
convertir el lenguaje natural en datos que puede usar.

Scrapy

Scrapy no es un lenguaje matemático, no realiza análisis de


datos, no hace nada que crees que te gustaría hacer en
Machine Learning, sin embargo, hace una cosa realmente
bien, y es rastrear la web.

La web es una gran fuente de datos no extrucutrados,


estructurados y visuales, por lo que Scrapy es una librería con
un nombre apropiado para crear spider bots para rastrear
sistemáticamente la web y extraer datos estructurados como
precios, información de contacto y URL, originalmente

11 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

diseñado para raspado web, Scrapy también puede extraer


datos de las API.

NLTK

El nombre de este conjunto de librerías es sinónimo de


Nautral Language Toolkit y, como su nombre lo indica, se
utiliza para tareas comunes de procesamiento de lenguaje
natural simbólico y estadístico. Las funciones básicas de
NLTK le permiten etiquetas texto, identificar entidades con
nombre y mostrar árboles de análisis, que son como
diagramas de oraciones que revelan partes del habla y
dependencias. A partir de ahí, puede hacer cosas más
complicadas, como el análisis de sentimientos y el resumen
automático.

Estas son las bibliotecas que muchos científicos e ingenieros

12 de 13 6/7/19 12:14 p. m.
Librerías de Machine Learning con Python - Ligdi... about:reader?url=http://ligdigonzalez.com/libreri...

de datos consideran como las mejores de la lista y vale la


pena mirarlas y al menos familiarizarse con ellas. Por
supuesto, esta no es la lista definitiva y hay muchas otras
bibliotecas y marcos que también son dignos y merecen la
atención adecuada para tareas particulares.

13 de 13 6/7/19 12:14 p. m.
Python Desktop News Notifier in 20 lines - Geeks... about:reader?url=https://www.geeksforgeeks.org...

geeksforgeeks.org

Python Desktop News Notifier in 20


lines - GeeksforGeeks
3-4 minutes

To get started with the Desktop News Notifier, we require two


libraries: feedparser and notify2.
Give following command to to install feedparser:

sudo pip3 install feedparser

For installing notify2 in your terminal:

sudo pip3 install notify2

Feedparser wil parse the feed that we will get from the URL. We
will use notify2 for the desktop notification purpose. Other than
these two libararies, we will use OS and time lib. Once you are
done with the installation import both libraries in the program.
Here, in this example i have parsed the news from the BBC UK,
you can use any news feedparser URL. Let’s have a look at the
program:

import feedparser

import notify2

import os

import time

1 de 4 7/7/19 9:03 a. m.
Python Desktop News Notifier in 20 lines - Geeks... about:reader?url=https://www.geeksforgeeks.org...

def parseFeed():

    ICON_PATH = os.getcwd() + "/icon.ico"

    notify2.init('News Notify')

    for newsitem in f['items']: 

        n =
notify2.Notification(newsitem['title'], 

                                 newsitem['summary'], 

                                 icon=ICON_PATH 

                                 )

    n.set_urgency(notify2.URGENCY_NORMAL)

    n.show()

    n.set_timeout(15000)

    time.sleep(1200)

if _name_ = '_main_':

    parseFeed()

Screenshot of the news notification popup

2 de 4 7/7/19 9:03 a. m.
Python Desktop News Notifier in 20 lines - Geeks... about:reader?url=https://www.geeksforgeeks.org...

Step by step Explanation of Code:

1. f = feedparser.parse("http://feeds.bbci.co.uk
/news/rss.xml")

Here feedparser will parse the news data from the feed URL. The
parsed data will be in the form of dictionary.

2. ICON_PATH = os.getcwd() + "/icon.ico"

If you want to set any icon in the notification then here we are
setting the Icon path. This is optional.

3. notify2.init('News Notify')

Here we are initializing the notify2 using the init method of notify2.
Initialize the D-Bus connection. Must be called before you send
any notifications, or retrieve server info or capabilities.

4. for newsitem in f['items']:


n =
notify2.Notification(newsitem['title'],

newsitem['summary'],
icon=ICON_PATH
)

Looping from the parsed data to get the relevant information like
news title, short summary and setting the notification icon using the
Notification method of the notify2 lib.

5. n.set_urgency(notify2.URGENCY_NORMAL)

3 de 4 7/7/19 9:03 a. m.
Python Desktop News Notifier in 20 lines - Geeks... about:reader?url=https://www.geeksforgeeks.org...

Set the urgency level to one of URGENCY_LOW,


URGENCY_NORMAL or URGENCY_CRITICAL

6. n.show()

This method will show the notification on the Desktop

7. n.set_timeout(15000)

Setting the time to keep the notification on the desktop (in


milliseconds). I have set here as 15 seconds.

8. time.sleep(1200)

This will usually display the news notification every 20 mins. You
can set the time as per your requirement. You can find the full
source code that is hosted on GitHub

This article is contributed by Srce Cde. If you like GeeksforGeeks


and would like to contribute, you can also write an article using
contribute.geeksforgeeks.org or mail your article to
contribute@geeksforgeeks.org. See your article appearing on the
GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want


to share more information about the topic discussed above.

4 de 4 7/7/19 9:03 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

instructables.com

How to Make Your First Simple


Software Using Python
By Ranga1995rangaFollow
11-13 minutos

Hi, welcome to this Instructables.Here I am going to tell how to


make your own software. Yes if you have an idea... but do
know to implement or interested in creating new things then it
is for you......

Prerequisite: Should have basic knowledge of Python.... LOL


Nothing like that,

"There is nothing difficult in this world if you try"

with simple interest to make things you can move on to start


your program. Even me at the beginning had a no Idea of
python.

Moreover as a Electrical at first I was afraid of Coding. Slowly I


changed my mentality.

If you are a beginner at programming, start with python makes


a fast curve to learn and as the output is very fast you get very
excited to learn.

1 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

Here below video, you may see what you are going to get as
output ...

OK without wasting much time we can move on to the subject.

Here in this instructable I am only going to share how to


make a simple GUI with python also how to make it into a
Software with "exe" and not much with python coding .....
you may refer youtube or udemy to learn Python course.

you may install python from here : https://www.python.org


/downloads/

Step 1: Intro to GUI

First, we need to begin a GUI. Nothing but a Graphical User


Interface for all your codes.

That is you might have run the program on the command line
and got the output in the same. But to make your code
interacting with the user you need an Interface to
communicate.

Creating GUI with python is very easy... Lets start

There are many modules in the python which you can import
and code your GUI. Tkinter is the built-in GUI for the python, It
comes installed with your python software. Also, you may also
try PyQT, Kivy(best for cross-platform ie same code in python
can be used to create apk, exe or MAC software)
https://kivy.org/#home

2 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

Here in this Instructables, I am going to use the Tkinter. The


simple thing in python is that you can import other python files
to your, same way you need to import the Tkinter python, as
similar to #include in C.

from Tkinter import *


import Tkinter
import tkMessageBox
top = Tk()
L1 = Label(top, text="HI")
L1.pack( side = LEFT)
E1 = Entry(top, bd =5)
E1.pack(side = RIGHT)
B=Button(top, text ="Hello",)
B.pack()

top.mainloop()

Explanations:

here Tk()refers to the class in the

Tkinter module we are saving initializing to top,

Label is the method(function as in other languages) to print a


text in,

Entry method to create a blank entry and

Button is to create button , As simple as that ....isn't it

pack is key to package everything it the layout.... finally main


loop keeps everything visible until you close the GUI

3 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

Step 2: Building Our Own Calculator

Now we have seen a simple GUI with the buttons, So why to


wait, lets start building a simple calculator with buttons.

Note:

There can be n number of ways of creating the code, here I


only illustrate the code which is easier for me

Sub Step 1: Creating GUI

Before going to the code we can create a GUI for our


calculator application.

Here I am going to use only one button and 4-row entry for
easy understanding.

thus simple copy paste of every label, entry and button we


created of the previous step ... Don't panic by the length of
the code...! haha

from Tkinter import *


import Tkinter
import tkMessageBox

top = Tkinter.Tk()
L1 = Label(top, text="My
calculator",).grid(row=0,column=1)
L2 = Label(top, text="Number
1",).grid(row=1,column=0)
L3 = Label(top, text="Number
2",).grid(row=2,column=0)

4 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

L4 = Label(top,
text="Operator",).grid(row=3,column=0)
L4 = Label(top,
text="Answer",).grid(row=4,column=0)
E1 = Entry(top, bd =5)
E1.grid(row=1,column=1)
E2 = Entry(top, bd =5)
E2.grid(row=2,column=1)
E3 = Entry(top, bd =5)
E3.grid(row=3,column=1)
E4 = Entry(top, bd =5)
E4.grid(row=4,column=1)
B=Button(top, text
="Submit",).grid(row=5,column=1,)

top.mainloop()

Sub Step 2: Main Code

Here in our case what has to happen... just after entering 2


numbers and specifying the operation in between them, the
answer has to be printed or displayed in the answer entry.

1.Submit button command:

We need to give to give the command to the button to call a


method that is what is designed. Lets see...

B=Button(top, text ="Submit",command=


processing).grid(row=5,column=1)

def proces():

5 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

number1=Entry.get(E1)
number2=Entry.get(E2)
operator=Entry.get(E3)

Here I have called the Method (function ) process, so after


pressing the button program goes and knocks the door of the
function process in simpler terms.

and get here means get the value the user has entered. Also, I
stored in the 3 variables namely as number1, number2,
operator

Just to make it meaningful I have kept process you may keep


the name of the method as per your wish.

Step 3: Process

In this step, we need to process the input received from the


user,

But by default, the value received is a string.

So how to convert it to an integer to perform calculation...?

So nothing to worry it is python and not C or C++ to squeeze


your brain.

Simply enter the variable in int(variable)

number1= int(number1)
number2=int(number2)

Still, there is another problem... how to get the value of the


operator (like +,-*/) to operate ???

6 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

Just make if statement for each and inside do the calculations.

number1=int(number1)
number2=int(number2)
if operator =="+":
answer=number1+number2
if operator =="-":
answer=number1-number2
if operator=="*":
answer=number1*number2
if operator=="/":
answer=number1/number2

String in python is denoted by " " thats here in the if we are


checking the string operator recived from the user to the string
+,-,*/ etc, and storing the result in the answer variable.

Now at last we need to send the output to the answer entry,

this is done by the insert code.

Entry.insert(E4,0,answer)

thus finally our code looks like :

from Tkinter import *


import Tkinter
import tkMessageBox
def proces():
number1=Entry.get(E1)
number2=Entry.get(E2)
operator=Entry.get(E3)

7 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

number1=int(number1)
number2=int(number2)
if operator =="+":
answer=number1+number2
if operator =="-":
answer=number1-number2
if operator=="*":
answer=number1*number2
if operator=="/":
answer=number1/number2
Entry.insert(E4,0,answer)
print(answer)

top = Tkinter.Tk()
L1 = Label(top, text="My
calculator",).grid(row=0,column=1)
L2 = Label(top, text="Number
1",).grid(row=1,column=0)
L3 = Label(top, text="Number
2",).grid(row=2,column=0)
L4 = Label(top,
text="Operator",).grid(row=3,column=0)
L4 = Label(top,
text="Answer",).grid(row=4,column=0)
E1 = Entry(top, bd =5)
E1.grid(row=1,column=1)
E2 = Entry(top, bd =5)
E2.grid(row=2,column=1)

8 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

E3 = Entry(top, bd =5)
E3.grid(row=3,column=1)
E4 = Entry(top, bd =5)
E4.grid(row=4,column=1)
B=Button(top, text ="Submit",command =
proces).grid(row=5,column=1,)

top.mainloop()

WOW, you have successfully created the code of the


calculator........!! Its time to celebrate..

Step 4: Additional Contents (Part 1-Dialogue


Box Exception Handling )

Heading Sounds like something Technical ....? Definitely


not I will tell you the story why,.....

Consider you made this calculator and showing it to a friend.

He/she is a notorious person instead of typing the integer


he types letters in the numbers entry and kids you ... what
to do...? python produces the errors and stops right
away....

Here comes the process of the pythons exception handling,


also in many software and web pages produces alert or
warning messages

Exception Handling in python

The exception handling is as simple has saying try and if any

9 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

error show warning

Type the value of the in letters the console says Value error
thus for it we can do the warning

Let us see how to do in our code:

def proces():
try:
number1=Entry.get(E1)
number2=Entry.get(E2)
operator=Entry.get(E3)
number1=int(number1)
number2=int(number2)
if operator =="+":
answer=number1+number2
if operator =="-":
answer=number1-number2
if operator=="*":
answer=number1*number2
if operator=="/":
answer=number1/number2
Entry.insert(E4,0,answer)
print(answer)
except ValueError:

tkMessageBox.showwarning("Warning","Please
enter the value in integer")

Here we have made simple warning dialogue box and here as

10 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

before tkMessageBox.showwarning is the custom warning for


Tkinter and in the bracket Warning denotes the heading of the
dialogue box and the next shows the message.

Step 5: Additional Contents (Part 2-Creating


EXE )

Considering the fact that you have created your python code,
and completely working after debugging errors... but there is a
final problem, If you want to share your python code to others,
they must be having the python installed this is not possible.
Also If you wish not to disclose your code creating EXE is the
best way.

thus to create the executable (exe) version or Apk (for Android


) must be made this can be made by freezing your code.

There are many such options to freeze your code one I would
suggest is by using Pyinstaller.

step1:

http://www.pyinstaller.org/ Install from here and follow their


steps if you cant understand ,watch you tube tutorials to install
the pyinstaller software.

Step 2:

Then go to the folder where the code is present and press


SHIFT +right click in mouse button and click open in command
prompt or power shell depending on your OS version.

11 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

python pyinstaller.py --noconsole


yourscript.py

pyinstaller.exe --onefile --windowed --name


myapps --icon=yourico.ico yourscript.py

Thus you can also add your ico for your exe and bundle it up
within one file with the second command.

Step 6: Conclusion

Thus Its up to your interest to create the final software,...


Thanks for reading I will upload the final code and the exe in
my GitHub link >> https://github.com/ranga95/instructables-
calculato...

Also, I have created 2 software

1.Blender Batch Renderer

Short Explanation:

Blender is the animation software which we are using to do


animation kinds of stuff... if interested please
vist>>http://engineerthoughts.com/anim.html also our youtube.

It really takes sooo long to render output, there is no option in


the blender to pause and render between, thus I made a
software for it... It is little easy..... not very difficult for me to
code at the beginning without any help..finally was able to
make it. (it taught me nothing is difficult if you try).

2.Electronic Drum Beats Arduino to computer connection

12 de 13 7/7/19 9:07 a. m.
How to Make Your First Simple Software Using P... about:reader?url=https://www.instructables.com/...

Short Explanation:

It is a software which could read the piezo sensor from the


Arduino and python software would play the music
accordingly. ( This was made for my friend who asked it very
long ....)

This Instructable is just an intro to create the software from the


python as from I understanding,.... sorry If I was wrong in any
part, as a beginner correct me in comments.

I will also add further in my Website :


www.engineerthoughts.com

Soon I will make a tutorial for my software.

Feel free to ask any doubts in the comments section. I will be


happy If you are benefited by this tutorial

Thank God and everyone

be happy, God is with you... all the best

With love

(N.Aranganathan)

Share

Recommendations

13 de 13 7/7/19 9:07 a. m.
Count of lines required to write the given String -... about:reader?url=https://www.geeksforgeeks.org...

geeksforgeeks.org

Count of lines required to write the


given String - GeeksforGeeks
Sanjit_PrasadCheck out this Author's contributed articles.
2 minutos

The task is to find the number of lines it’ll take to write the
string str on a paper and the width of the last line upto which it
is occupied.
Note: Width of a line is 10 units.

Input: str = “bbbcccdddaa”,


width[] = {4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1}
Output: (2, 8)
“bbbcccddd” will cover first line (9 * 1 = 9 units)
As ‘a’ has a width of 4 which cannot fit the remaining 1 unit in
the first line.
It’ll have to be written in the second line.
So, next line will contain “aa” covering 4 * 2 = 8 units.
We need 1 full line and one line with width 8 units.

Input: str = “abcdefghijklmnopqrstuvwxyz”,


width[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

1 de 2 7/7/19 9:09 a. m.
Count of lines required to write the given String -... about:reader?url=https://www.geeksforgeeks.org...

1, 1, 1, 1, 1}
Output: (3, 6)
All the characters have the same width of 1. To write all 26
characters,
We need 2 full lines and one line with width 6 units.

Approach: We will write each character in the string str one


by one. As we write a character, we immediately update (lines,
width) that keeps track of how many lines we have used till
now and what is the length of the used space in the last line.
If the width[char] in str fits our current line, we will add it.
Otherwise, we will start with a new line

2 de 2 7/7/19 9:09 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

opensource.com

Get modular with Python functions


01 Jul 2019 Seth Kenlon (Red Hat) Feed 23up 5 comments
11-14 minutos

Are you confused by fancy programming terms like functions,


classes, methods, libraries, and modules? Do you struggle
with the scope of variables? Whether you're a self-taught
programmer or a formally trained code monkey, the modularity
of code can be confusing. But classes and libraries encourage
modular code, and modular code can mean building up a
collection of multipurpose code blocks that you can use across
many projects to reduce your coding workload. In other words,
if you follow along with this article's study of Python functions,
you'll find ways to work smarter, and working smarter means
working less.

This article assumes enough Python familiarity to write and


run a simple script. If you haven't used Python, read my intro
to Python article first.

Functions

Functions are an important step toward modularity because


they are formalized methods of repetition. If there is a task that

1 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

needs to be done again and again in your program, you can


group the code into a function and call the function as often as
you need it. This way, you only have to write the code once,
but you can use it as often as you like.

Here is an example of a simple function:

#!/usr/bin/env python3

import time

def Timer():

print("Time is " + str(time.time() ) )

Create a folder called mymodularity and save the function


code as timestamp.py.

In addition to this function, create a file called __init__.py in


the mymodularity directory. You can do this in a file manager
or a Bash shell:

$ touch mymodularity/__init__.py

You have now created your own Python library (a "module," in


Python lingo) in your Python package called mymodularity.
It's not a very useful module, because all it does is import the
time module and print a timestamp, but it's a start.

2 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

To use your function, treat it just like any other Python module.
Here's a small application that tests the accuracy of Python's
sleep() function, using your mymodularity package for
support. Save this file as sleeptest.py outside the
mymodularity directory (if you put this into mymodularity,
then it becomes a module in your package, and you don't want
that).

#!/usr/bin/env python3

import time

from mymodularity import timestamp

print("Testing Python sleep()...")

# modularity

timestamp.Timer()

time.sleep(3)

timestamp.Timer()

In this simple script, you are calling your timestamp module

3 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

from your mymodularity package (twice). When you import a


module from a package, the usual syntax is to import the
module you want from the package and then use the module
name + a dot + the name of the function you want to call (e.g.,
timestamp.Timer()).

You're calling your Timer() function twice, so if your


timestamp module were more complicated than this simple
example, you'd be saving yourself quite a lot of repeated code.

Save the file and run it:

$ python3 ./sleeptest.py

Testing Python sleep()...

Time is 1560711266.1526039

Time is 1560711269.1557732

According to your test, the sleep function in Python is pretty


accurate: after three seconds of sleep, the timestamp was
successfully and correctly incremented by three, with a little
variance in microseconds.

The structure of a Python library might seem confusing, but it's


not magic. Python is programmed to treat a folder full of
Python code accompanied by an __init__.py file as a
package, and it's programmed to look for available modules in
its current directory first. This is why the statement from
mymodularity import timestamp works: Python looks in the

4 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

current directory for a folder called mymodularity, then looks


for a timestamp file ending in .py.

What you have done in this example is functionally the same


as this less modular version:

#!/usr/bin/env python3

import time

from mymodularity import timestamp

print("Testing Python sleep()...")

# no modularity

print("Time is " + str(time.time() ) )

time.sleep(3)

print("Time is " + str(time.time() ) )

For a simple example like this, there's not really a reason you
wouldn't write your sleep test that way, but the best part about
writing your own module is that your code is generic so you

5 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

can reuse it for other projects.

You can make the code more generic by passing information


into the function when you call it. For instance, suppose you
want to use your module to test not the computer's sleep
function, but a user's sleep function. Change your timestamp
code so it accepts an incoming variable called msg, which will
be a string of text controlling how the timestamp is presented
each time it is called:

#!/usr/bin/env python3

import time

# updated code

def Timer(msg):

print(str(msg) + str(time.time() ) )

Now your function is more abstract than before. It still prints a


timestamp, but what it prints for the user is undefined. That
means you need to define it when calling the function.

The msg parameter your Timer function accepts is arbitrarily


named. You could call the parameter m or message or text or
anything that makes sense to you. The important thing is that

6 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

when the timestamp.Timer function is called, it accepts some


text as its input, places whatever it receives into a variable,
and uses the variable to accomplish its task.

Here's a new application to test the user's ability to sense the


passage of time correctly:

#!/usr/bin/env python3

from mymodularity import timestamp

print("Press the RETURN key. Count to 3, and


press RETURN again.")

input()

timestamp.Timer("Started timer at ")

print("Count to 3...")

input()

7 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

timestamp.Timer("You slept until ")

Save your new application as response.py and run it:

$ python3 ./response.py

Press the RETURN key. Count to 3, and press


RETURN again.

Started timer at 1560714482.3772075

Count to 3...

You slept until 1560714484.1628013

Functions and required parameters

The new version of your timestamp module now requires a


msg parameter. That's significant because your first
application is broken because it doesn't pass a string to the
timestamp.Timer function:

$ python3 ./sleeptest.py

Testing Python sleep()...

Traceback (most recent call last):

8 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

  File "./sleeptest.py", line 8, in <module>

    timestamp.Timer()

TypeError: Timer() missing 1 required


positional argument: 'msg'

Can you fix your sleeptest.py application so it runs correctly


with the updated version of your module?

Variables and functions

By design, functions limit the scope of variables. In other


words, if a variable is created within a function, that variable is
available to only that function. If you try to use a variable that
appears in a function outside the function, an error occurs.

Here's a modification of the response.py application, with an


attempt to print the msg variable from the timestamp.Timer()
function:

#!/usr/bin/env python3

from mymodularity import timestamp

print("Press the RETURN key. Count to 3, and

9 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

press RETURN again.")

input()

timestamp.Timer("Started timer at ")

print("Count to 3...")

input()

timestamp.Timer("You slept for ")

print(msg)

Try running it to see the error:

$ python3 ./response.py

Press the RETURN key. Count to 3, and press


RETURN again.

Started timer at 1560719527.7862902

10 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

Count to 3...

You slept for 1560719528.135406

Traceback (most recent call last):

  File "./response.py", line 15, in <module>

    print(msg)

NameError: name 'msg' is not defined

The application returns a NameError message because msg


is not defined. This might seem confusing because you wrote
code that defined msg, but you have greater insight into your
code than Python does. Code that calls a function, whether
the function appears within the same file or if it's packaged up
as a module, doesn't know what happens inside the function.
A function independently performs its calculations and returns
what it has been programmed to return. Any variables
involved are local only: they exist only within the function and
only as long as it takes the function to accomplish its purpose.

Return statements

If your application needs information contained only in a

11 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

function, use a return statement to have the function provide


meaningful data after it runs.

They say time is money, so modify your timestamp function to


allow for an imaginary charging system:

#!/usr/bin/env python3

import time

def Timer(msg):

print(str(msg) + str(time.time() ) )

    charge = .02

return charge

The timestamp module now charges two cents for each call,
but most importantly, it returns the amount charged each time
it is called.

Here's a demonstration of how a return statement can be


used:

#!/usr/bin/env python3

12 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

from mymodularity import timestamp

print("Press RETURN for the time (costs 2


cents).")

print("Press Q RETURN to quit.")

total = 0

while True:

    kbd = input()

    if kbd.lower() == "q":

        print("You owe $" + str(total) )

        exit()

    else:

        charge = timestamp.Timer("Time is ")

13 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

        total = total+charge

In this sample code, the variable charge is assigned as the


endpoint for the timestamp.Timer() function, so it receives
whatever the function returns. In this case, the function returns
a number, so a new variable called total is used to keep track
of how many changes have been made. When the application
receives the signal to quit, it prints the total charges:

$ python3 ./charge.py

Press RETURN for the time (costs 2 cents).

Press Q RETURN to quit.

Time is 1560722430.345412

Time is 1560722430.933996

Time is 1560722434.6027434

Time is 1560722438.612629

14 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

Time is 1560722439.3649364

You owe $0.1

Inline functions

Functions don't have to be created in separate files. If you're


just writing a short script specific to one task, it may make
more sense to just write your functions in the same file. The
only difference is that you don't have to import your own
module, but otherwise the function works the same way.
Here's the latest iteration of the time test application as one
file:

#!/usr/bin/env python3

import time

total = 0

def Timer(msg):

15 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

print(str(msg) + str(time.time() ) )

    charge = .02

return charge

print("Press RETURN for the time (costs 2


cents).")

print("Press Q RETURN to quit.")

while True:

    kbd = input()

if kbd.lower() == "q":

print("You owe $" + str(total) )

        exit()

else:

        charge = Timer("Time is ")

16 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

        total = total+charge

It has no external dependencies (the time module is included


in the Python distribution), and produces the same results as
the modular version. The advantage is that everything is
located in one file, and the disadvantage is that you cannot
use the Timer() function in some other script you are writing
unless you copy and paste it manually.

Global variables

A variable created outside a function has nothing limiting its


scope, so it is considered a global variable.

An example of a global variable is the total variable in the


charge.py example used to track current charges. The
running total is created outside any function, so it is bound to
the application rather than to a specific function.

A function within the application has access to your global


variable, but to get the variable into your imported module, you
must send it there the same way you send your msg variable.

Global variables are convenient because they seem to be


available whenever and wherever you need them, but it can
be difficult to keep track of their scope and to know which
ones are still hanging around in system memory long after
they're no longer needed (although Python generally has very
good garbage collection).

17 de 18 7/7/19 9:14 a. m.
Get modular with Python functions about:reader?url=https://opensource.com/article/...

Global variables are important, though, because not all


variables can be local to a function or class. That's easy now
that you know how to send variables to functions and get
values back.

Wrapping up functions

You've learned a lot about functions, so start putting them into


your scripts—if not as separate modules, then as blocks of
code you don't have to write multiple times within one script. In
the next article in this series, I'll get into Python classes.

18 de 18 7/7/19 9:14 a. m.
Finding Mean, Median, Mode in Python without l... about:reader?url=https://www.geeksforgeeks.org/...

geeksforgeeks.org

Finding Mean, Median, Mode in


Python without libraries -
GeeksforGeeks
RishabhAgrawal6
4-5 minutes

perm_identityUser Actions

In this article, we will learn how to calculate Mean, Median


and Mode with Python without using external libraries.

1. Mean : The mean is the average of all numbers and is


sometimes called the arithmetic mean. This code calculates
Mean or Average of a list containing numbers:
n_num = [1, 2, 3, 4, 5]

n = len(n_num)

get_sum = sum(n_num)

mean = get_sum / n

print("Mean / Average is: " + str(mean))

Output:

Mean / Average is: 3.0

1 de 5 7/7/19 9:15 a. m.
Finding Mean, Median, Mode in Python without l... about:reader?url=https://www.geeksforgeeks.org/...

We define a list of numbers and calculate the length of the list.


We then use sum() function to get sum of all the elements in a
list. We finally divide the total sum by the number of elements
in the list and we print the result to get the mean/average of a
list.

2. Median : The median is the middle number in a group of


numbers. This code calculates Median of a list containing
numbers:
n_num = [1, 2, 3, 4, 5]

n = len(n_num)

n_num.sort()

if n % 2 == 0:

    median1 = n_num[n//2]

median2 = n_num[n//2 - 1]

    median = (median1 + median2)/2

else:

    median = n_num[n//2]

print("Median is: " + str(median))

We define a list of numbers and calculate the length of the list.


To find a median, we first sort the list in Ascending order using
sort() function.
Now we check if the number is even or odd by checking their
remainders. If the number is even, we find 2 middle elements
in a list and get their average to print it out. But if the number

2 de 5 7/7/19 9:15 a. m.
Finding Mean, Median, Mode in Python without l... about:reader?url=https://www.geeksforgeeks.org/...

is odd, we find the middle element in a list and print it out.

3. Mode : The mode is the number that occurs most often within
a set of numbers. This code calculates Mode of a list
containing numbers:
from collections import Counter

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

n = len(n_num)

data = Counter(n_num)

get_mode = dict(data)

mode = [k for k, v in get_mode.items() if v ==


max(list(data.values()))]

if len(mode) == n:

get_mode = "No mode found"

else:

get_mode = "Mode is / are: " + ',


'.join(map(str, mode))

print(get_mode)

We will import Counter from collections library which is a built-


in module in Python 2 and 3. This module will help us count
duplicate elements in a list.
We define a list of numbers and calculate the length of the list.
We then call Counter (a dict subclass) which helps to count
hashable objects, and we then convert it to dict object. We

3 de 5 7/7/19 9:15 a. m.
Finding Mean, Median, Mode in Python without l... about:reader?url=https://www.geeksforgeeks.org/...

then initialize a list with a For Loop to compare all the dict
values (Number of elements) to the max of all dict values
(count of most occurring element) and it returns all the
elements equal to max count. If the elements returned are
equal to the number of total elements in a list then we print out
‘No mode’, else we print out the modes returned.

Conclusion
We have successfully calculated mean, median and mode of a
dataset but you might be thinking ‘Will I be using these
algorithms every time I want to get mean, median and mode of
a dataset?’
The answer is you can but you certainly won’t. This was just to
show you how the algorithm works behind the scenes when
finding out any of these.
For any projects, this can be achieved by simply importing an
inbuilt library ‘statistics’ in Python 3 and using the inbuilt
functions mean(), median() and mode(). Also, there are other
external libraries which can help you achieve the same results
in just 1 line of code as the code is pre-written in those
libraries.

4 de 5 7/7/19 9:15 a. m.
Finding Mean, Median, Mode in Python without l... about:reader?url=https://www.geeksforgeeks.org/...

A core developer who has worked on various projects in


HTML, CSS, Js, Scratch, Vbnet, VBA, C, Python He has done
Dig Marketing & ranked 2nd on Google in SERP

If you like GeeksforGeeks and would like to contribute, you


can also write an article using contribute.geeksforgeeks.org or
mail your article to contribute@geeksforgeeks.org. See your
article appearing on the GeeksforGeeks main page and help
other Geeks.

Please Improve this article if you find anything incorrect by


clicking on the "Improve Article" button below.

Writing code in comment? Please use ide.geeksforgeeks.org,


generate link and share the link here.

5 de 5 7/7/19 9:15 a. m.

S-ar putea să vă placă și