47
Nociones básicas de Python ~ 1 ~ NOCIONES BASICAS DE Miguel Iván Bobadilla

Nociones Básicas de Python

  • Upload
    uasd

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Nociones básicas de Python

~ 1 ~

NOCIONES BASICAS DE

Miguel Iván Bobadilla

Nociones básicas de Python

~ 2 ~

Indice

Introducción ................................................... 4

Sintaxis de Python .......................................... 6

Datos ................................................................... 6

Tipos de datos básicos ........................................ 7

Asignando valores, variables y constantes ......... 8

Salida de datos .................................................... 9

Comentarios ...................................................... 10

Entrada de datos ............................................... 10

Conversión de tipo de datos ............................. 12

Operadores aritméticos básicos ....................... 13

Posición numérica de caracteres en una cadena

.......................................................................... 15

Colección de tipos de datos .............................. 16

Funcion len () .................................................... 17

Función index .................................................... 18

Función range () ................................................ 18

Editando las listas ............................................. 19

append () ........................................................... 19

insert () .............................................................. 20

remove() ........................................................... 20

Nociones básicas de Python

~ 3 ~

Operador + ........................................................ 21

Operaciones lógicas .......................................... 21

is ........................................................................ 23

and .................................................................... 26

or ....................................................................... 26

not ..................................................................... 26

Operadores de pertenencia .............................. 27

in ....................................................................... 27

not in ................................................................. 27

Sentencias condicionales .................................. 28

Estructura de control ........................................ 31

while .................................................................. 32

for ...................................................................... 35

Excepciones ....................................................... 37

continue ............................................................ 39

break ................................................................. 40

pass ................................................................... 41

Funciones .......................................................... 42

Parámetros de una función .............................. 43

Ejercicios ...................................................... 45

Nociones básicas de Python

~ 4 ~

Introducción

Python es un lenguaje de programación

interpretado legible y limpio, fácil de aprender

debido a la sencillez de su sintaxis. Es apto para

aprender programación debido a que al tener una

codificación simple facilita el aprendizaje y la

depuración de código ya que no posee codificación

compleja.

Python posee la ventaja de que podemos

ahorrar mucho tiempo en desarrollo ya que las

líneas de códigos son pocas a diferencia de otros

lenguajes. Su simplicidad evita errores de códigos

comunes y a una depuración rápida.

A pesar de que Python nos limita para

proyectos complejos, para proyectos simples y

rápidos es una buena opción, además de que si se

busca aprender a programar este es una cátedra

para todo principiante.

Aclaro que este libro está más orientado a

las funciones básicas, no abundaremos funciones

complejas ya que este libro está más orientado a

principiantes o personas que quieran aprender a

programar.

Nociones básicas de Python

~ 5 ~

Para descargar Python lo puedes encontrar

en el siguiente enlace:

https://www.python.org/downloads/

Luego lo instalas. Al finalizar vas a inicio,

todos los programas y seleccionas Python. Te

saldrán varias opciones, la que usaremos para

ejecutar codigo es IDLE (Python GUI) que

llamaremos Python Sell. La otra opción Python

(Command line) es para ejecutar líneas de

comando en Python, no lo usaremos debido a que

solo nos orientaremos a lo básico.

IDLE (Python GUI)

PYTHON (command line)

Nociones básicas de Python

~ 6 ~

Sintaxis de Python

Datos

Python nos ofrece un modo sencillo de

producir entrada y salida de datos gracias a su

forma dinámica, esto quiere decir que no hay que

especificar su tipo a la hora de declarar variables

ya que lo detecta de forma automática.

Tenemos que tener en cuenta una regla

básica, cuando el valor a introducir es una cadena

de texto este debe ir entre comillas, para que

python pueda distinguir los textos de los valores

que no son textos.

En el siguiente ejemplo tenemos el mismo

valor pero uno es texto y el otro no. Hay que tener

esto muy presente para evitar errores posteriores

en el código.

Nota: También podemos utilizar comillas simples

(´…´) para indicar cadena de texto.

Nociones básicas de Python

~ 7 ~

Otra regla básica es que las palabras

reservadas siempre irán en minúscula. Tener

cuidado con las mayúscula y minúscula ya que

Python es sensible a ello.

Tipos de datos básicos

Aunque en Python la escritura de código es

dinámica, por lo tanto no es necesario especificar

el tipo de variable en las declaraciones, en ciertas

ocasiones especiales los tendremos que usar.

Tipo Función

Int Variable para números enteros.

Float Variable para números decimales.

Chr Variable para un caracter alfanumérico.

Str Variable para cadenas alfanuméricas.

Bool Variable condicional (falso o verdadero)

En caso de que quisiéramos conocer el tipo

de dato de una variable utilizaremos la sentencia

Type (). Dentro del paréntesis colocamos el valor y

hacemos enter. “x” representara el valor, variable

o cualquier dato que queramos procesar.

Type (x)

Ejemplos:

Nociones básicas de Python

~ 8 ~

Hagamos un ejemplo con los valores del

primer ejemplo sobre la entrada de datos.

Si nos fijamos el primer valor sin las

comillas lo detectó como entero y el segundo valor

como cadena, por eso es importante tener en

cuenta esta regla de entrada.

Asignando valores, variables y constantes

La ventaja de Python ser dinámico es que

ahorramos mucho tiempo en el desarrollo del

código, por eso no hay que estar declarando el

tipo de datos cada vez que realizamos una

declaración. Para declarar variables y constantes

solo colocamos el nombre de la variable o

constante, una igualdad y luego su valor.

Nociones básicas de Python

~ 9 ~

Variable = x

Python asigna los valores a cada variable y

lo almacena en memoria, con estas variables

podemos realizar operaciones posteriores.

Hagamos el siguiente ejemplo, a esas mismas

variables identifiquemos su tipo.

Como observamos detecta su tipo de forma

automática.

Salida de datos

Para producir una salida de datos solo

tenemos que utilizar la sentencia Print ().

Print (x)

Nociones básicas de Python

~ 10 ~

También podemos usar Print para mostrar

letreros.

Comentarios

Siempre en la programación es

recomendable utilizar comentarios para que el

código este mas organizado, esto nos ayuda a

realizar una buena depuración de errores.

También para recordar que hace una rutina o para

que compañeros (si se trabaja en grupo) puedan

entender la función del código.

# x

Entrada de datos

Para recibir entrada de datos utilizamos la

sentencia Input ().

Nociones básicas de Python

~ 11 ~

Variable = imput (texto)

También podemos escribir el código de la

siguiente manera si queremos que la entrada se reciba

debajo del texto.

Print (texto)

Variable = input ()

Hagamos un simple ejemplo con entradas y

salidas. Primero ejecutemos el Python Sell y

seleccionamos File, luego New File.

Se ejecutara otra ventana (esta ventana es el

editor de Python), aquí escribimos el siguiente código.

Nota: Luego del letrero podemos hacer que

aparezca el valor de la variable con solo colocar

una coma después de la cadena de texto.

Nociones básicas de Python

~ 12 ~

Seleccionamos File y luego en Save. Guardamos

el archivo con el nombre que desee. Luego

presionamos la tecla F5 y se ejecutara el Python Shell.

Debería aparecer algo similar a esto:

Conversión de tipo de datos

En algunos casos habrá operaciones donde

dos o más variables tendrán que interactuar y en

ello se puede dar que una variable deba cambiar

de tipo, como por ejemplo un problema donde

tengamos que tomar un número de una cadena de

texto o viceversa convertir un número en cadena

de texto. También si queremos convertir en

decimales a entero o viceversa.

Tipo (x)

Nociones básicas de Python

~ 13 ~

Operadores aritméticos básicos

Operador Operación

+ Suma

- Resta

* Multiplicación

/ División coma flotante

// División sin coma flotante

% Sobrante de una división

** Potencia

Nociones básicas de Python

~ 14 ~

Problema: Desarrolle un programa que reciba dos

números de entrada y que realice las operaciones

de la tabla de arriba.

Solución:

Nociones básicas de Python

~ 15 ~

Resultado:

Posición numérica de caracteres en una

cadena

Python cuenta la cantidad de caracteres en

una cadena iniciando desde cero. Esto nos ayuda a

identificar la posición de un carácter en dichas

cadenas.

Cadena [x], siendo “x” un número entero.

Nota: Python cuenta los espacios.

Como podemos observar en el anterior

ejemplo si contamos desde 0 hasta llegar a 5 nos

toparemos que la posición de la cadena en 5 es

“m”.

Nociones básicas de Python

~ 16 ~

H o l a m U N d o

0 1 2 3 4 5 6 7 8 9

Colección de tipos de datos

Para almacenar cualquier tipo de

elementos de datos se utilizan las tuplas y las

listas. Las tuplas se identifican encerrándolas en

“()” y son inmutables. Las listas se identifican

encerrándolas en “[]” y pueden ser editadas.

Variable = (x,y,z)

Variable = [x,y,z]

Si queremos saber si una variable es una

lista o una tupla utilizaremos la ya conocida

sentencia type ().

Nociones básicas de Python

~ 17 ~

También si deseamos podemos insertar

tuplas dentro de listas y viceversa.

Si queremos saber la posición de un

elemento en una lista o tupla utilizamos la

siguiente sintaxis. Recuerde que Python inicia

desde 0 a contar.

Variable [posición]

Funcion len ()

La función len () se utiliza para contar la

cantidad de datos o elementos en una lista o tupla.

Hagamos un ejemplo con el ejemplo de los enteros

y decimales.

len (variable)

Nociones básicas de Python

~ 18 ~

También la función len () nos permite

contar cadenas de texto. Recuerden que Python

cuenta los espacios en blanco.

Función index

Se utiliza para buscar la posición de un

elemento en una lista o tupla.

Variable.index (x)

Función range ()

Se utiliza para crear una sucesión de

números enteros que serán inmutables.

range (x)

Nociones básicas de Python

~ 19 ~

Colocándole la palabra reservada list antes

de range podemos crear una lista.

list ( rang (x) )

Editando las listas

En ciertas ocasiones tendremos que editar

los elementos de una lista, para ello utilizamos los

métodos append, insert y remove. Recuerde que

esto no funciona en las tuplas ya que son

inmutables.

append ()

Se utiliza para agregar un nuevo valor al

final de una lista.

variable.append (x)

Nociones básicas de Python

~ 20 ~

insert ()

Se utiliza para agregar un nuevo valor a una

lista en una posición indicada.

Variable.insert (posición, x)

remove()

Se utiliza para eliminar un elemento de la

lista.

Variable.remove(x)

En caso de que solo quiera editar un

elemento de la lista ya sea para reemplazarlo o

corregirlo se utiliza la siguiente sintaxis.

Variable [posición] = x

Como puede observar la posición 1 estaba

la palabra Mario y se reemplazo por Luisa.

Nociones básicas de Python

~ 21 ~

Operador +

No solo es un operador aritmético de suma,

también puede utilizarse para agregar datos a una

lista.

Variable + = [x]

Operaciones lógicas

Nociones básicas de Python

~ 22 ~

Problema: Desarrolle una aplicación que reciba

dos números de entrada y realice operaciones

lógicas con ellos.

Solución:

Python también nos permite realizar

cadenas de operaciones.

Nociones básicas de Python

~ 23 ~

Aunque Python es un lenguaje dinámico

este no compara valores con tipos diferentes. Para

poder resolver este problema solo debemos

convertir el tipo de una de las variables.

Como vemos en el ejemplo anterior a pesar

de que el valor es similar son de tipos diferentes,

por eso muestra que era falso. El de la izquierda es

una cadena de texto y el de la derecha es un

entero, así que procedemos a convertir uno de los

dos, en este caso convertiremos la cadena de texto

a entero.

is

Es un operador booleano que devuelve

verdadero si la referencia del objeto que está a su

izquierda se refiere al mismo objeto que está a su

derecha.

Nociones básicas de Python

~ 24 ~

Variable is x o x is variable

También se puede utilizar la sentencia is

para verificar contenidos en listas y tuplas.

En este ejemplo en la variable “a” le

asignamos los valores de la lista de enteros, luego

verificamos si los valores de la variable “a” son los

mismos de la variable “enteros”. Como

observamos es verdadero. Hagamos un ejemplo

distinto.

Nociones básicas de Python

~ 25 ~

Aquí observamos que la variable

“decimales” no contiene los valores de la variable

“a” ya que la variable “a” tiene los valores de la

variable “enteros” por lo tanto es falso.

En el siguiente ejemplo muestra como no

se debe realizar la operación is.

¿Por qué muestra falso si son similares?,

porque aunque su contenido sea el mismo a y b

son dos objetos diferentes, por lo tanto hay que

asignarle los contenidos a una de las dos variables

para que la operación pueda realizarse

correctamente.

Nociones básicas de Python

~ 26 ~

and (a y b)

or (a o b)

not (a no b)

Nociones básicas de Python

~ 27 ~

Operadores de pertenencia

Los operadores de pertenencia nos ayudan

a realizar verificaciones de datos dentro de una

lista o tupla.

in

Es un operador booleando que devuelve

verdadero si el valor de la izquierda está contenido

en el valor de la derecha.

X in variable

Nota: Tener cuidado con las mayúsculas y

minúsculas en los valores, ya que Python es

sensible a ellas y puede causar errores si no

encuentra coincidencia.

not in

Es un operador booleando que devuelve

verdadero si el valor de la izquierda no está

contenido en el valor de la derecha. Es lo contrario

de in.

Nociones básicas de Python

~ 28 ~

X not in variable

También podemos realizar búsqueda de

pertenencia de trozos de palabras en cadenas.

Sentencias condicionales

Sentencia Significado

If Si

el if De lo contrario si

Else De lo contrario

: Entonces

Para crear condiciones en Python debemos

utilizar la siguiente sintaxis.

if condición :

has x

else:

has x

Nociones básicas de Python

~ 29 ~

En un lenguaje humano esto significa “si se

cumple dicha condición entonces haz la siguiente

operación de lo contrario realiza la siguiente

operación.”

En el ejemplo anterior la condición se

expresa de forma booleana, es decir, que mientras

la condición sea verdadera realizará una operación

pero si es falsa devuelve un argumento distinto.

Pero existen casos en la que deben realizarse

diferentes operaciones o devolver diferentes

argumentos, pero no podemos utilizar la sentencia

if dos o más veces, devolverá un error al menos

que se utilice en rutinas distintas, para ello se

utiliza la sentencia elif.

if condición:

Haz x

elif condición:

Haz x

Nota: No hay límite para los elif que puedes

utilizar.

Nociones básicas de Python

~ 30 ~

Esto significa “Si se cumple tal condición

entonces haz lo siguiente, pero si se cumple esta

otra condición entonces realiza la siguiente

operación”. Si deseamos podemos agregar un else

para sí ninguna de las condiciones se cumple.

Problema: Desarrolle una aplicación que calcule el

descuento de un 25% del valor de la compra que

tendrá un cliente siempre y cuando su compra sea

mayor o igual 2,000.00.

Solución:

Podemos realizar operaciones lógicas con

las sentencias condicionales.

Nociones básicas de Python

~ 31 ~

Problema: Desarrolle una aplicación que indique si

un niño pertenece a uno de los siguientes grupos.

Grupo Colores

A De 0 a 5 años

B De 6 a 12 años

C De 13 a 16 años

Solución:

Estructura de control

Las estructuras de control son métodos que

utilizamos para realizar repeticiones o ciclos de

rutinas en la que tenemos que realizar x

cantidades de veces una operación o argumento.

Nociones básicas de Python

~ 32 ~

while

La sentencia while se utiliza para repetir

una rutina mientras una condición o argumento

sea dada.

while argumento:

Haz X

“Mientras se cumpla el argumento dado haz lo

siguiente”.

Hagamos un ejemplo multiplicando un

valor x por 0 hasta 9.

Como podemos observar b será la cantidad

de veces que se realizara el ciclo. Mientras b sea

menor que 10 se realizara dicha operación hasta

que b sea menor que 10. Para que este algoritmo

funcione y no nos dé un bucle infinito (que la

rutina nunca termine) hay que realizar una

operación de conteo, así que incrustamos la

ecuación b=b+1, cada vez que se realiza la

Nociones básicas de Python

~ 33 ~

operación b cambiara su valor y cuando b llegue a

valer 9 termina ya que al llegar al valor 10 no

continuara la operación.

Nota: También podemos realizar conteos

utilizando la siguiente ecuación x + = 1.

Hagamos un ejemplo más simple con el

siguiente problema: Desarrollar una aplicación que

hasta que no reciba el número 2 de entrada no

termine de pedir entrada.

El ejemplo anterior el algoritmo dice

“mientras el numero sea diferente de 2 realizar la

siguiente operación”. Cuando el número es igual a

dos la rutina se detiene ya que no hay operación a

realizar.

Podemos utilizar la sentencia while en

listas y tuplas.

Problema: en un conjunto x de nombres tenemos

a José, María, Pedro y Juan. Desarrolle una

aplicación que cuente la cantidad de nombres que

Nociones básicas de Python

~ 34 ~

existen en este conjunto y la posición de cada

nombre.

Solución:

Nota: Luego de una sentencia Python

automáticamente la siguiente línea de código deja

un espacio para indicar que esa instrucción le

pertenece a la sentencia. Para crear una

instrucción fuera de la sentencia comience sin el

espacio para evitar futuros errores.

En el ejemplo anterior vemos que para

realizar un conteo necesitamos saber la cantidad

de posiciones que existen en el conjunto, por eso

utilizamos el método len para contar los valores

dentro de la variable nombre. Pero hay un

problema, Python cuenta desde cero por lo tanto

no podemos asignarle la variable cuenta como

posición exacta, ya que si empezamos desde 1 el

primer valor Python lo omitirá así que creamos

una variable llamada posición que empiece desde

Nociones básicas de Python

~ 35 ~

1 y se la asignamos a cada valor mientras el while

cumpla la condición.

for

Tiene la misma función que la sentencia

while. Se utiliza para repetir una instrucción o

rutina una cierta cantidad de veces según el valor

que le asignemos.

for i in variable:

Haz x

Nota: la letra “i” podemos sustituirla por cualquier

otra letra, no es una palabra reservada.

Lo que hizo el for fue tomar la posición de

cada elemento en la lista y realizó ciclos

imprimiendo cada elemento mientras recorría la

lista.

1 4 6 8

Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4

Nociones básicas de Python

~ 36 ~

Escribiendo la función range después de in

podemos asignar la cantidad de ciclos que

queremos que se efectúen.

Problema: Desarrolle una aplicación que reciba x

cantidad de números y luego lo sume todos.

Solución:

Problema: Desarrolle una aplicación que

identifique la cantidad de vocales, consonantes,

números y caracteres de una oración. (Esta es bien

difícil)

Solución:

Nociones básicas de Python

~ 37 ~

Excepciones

Las excepciones nos permiten tener un

código más legible, además de detener el

programa cuando ocurra algún error, ya que en

muchas ocasiones falla o presenta errores críticos

que nos deshabilitan el programa.

Nociones básicas de Python

~ 38 ~

Try:

….bloque_try

Except exception as variable:

…bloque_except

Except exception as variable:

…bloque_except

Nota: En lugar de variable tenemos la opción de

sustituirla con algún mensaje de texto.

Hagamos un ejemplo con un programa que

calcule la velocidad de un vehículo.

Nociones básicas de Python

~ 39 ~

En este ejemplo siempre y cuando los

valores introducidos sean números o no presente

ningún tipo de error de procesamiento se

ejecutará el primer bloque, en caso contrario se

ejecutará el segundo bloque y mostrara un

mensaje de error controlado sin preocuparnos de

que el sistema colapse

continue

Se utiliza regularmente en instrucciones o

rutinas de ciclos para indicar dónde termina un

proceso para continuar el ciclo siguiente. Con esta

sentencia de control se ignora todo lo que este

debajo de continue y regresa al ciclo.

¿Recuerda el ejemplo para explicar la

sentencia range?, pues usaremos el mismo

ejemplo. Este algoritmo lo que hace es que recibe

5 números, ahora le agregaremos una operación

para que sume y de cómo resultado el total de los

Nociones básicas de Python

~ 40 ~

números ingresados, pero si son números

negativos que lo ignore.

Si el programa recibe un numero negativo

no efectuara la operación, como puede observar

dentro de la sentencia condicional esta el continue

y debajo de esta la operación, por lo tanto si se

cumple la condición de que el numero es negativo

entonces se ejecutara el continue y se ignora la

operación que está debajo y continua el ciclo.

break

Parecido al continue pero con la diferencia

de que este detiene el ciclo hasta ese punto.

Usaremos el mismo ejemplo anterior, solo

que le agregaremos la instrucción de que si la

suma llega o pasa de 100 se detenga.

Nociones básicas de Python

~ 41 ~

pass

Es una sentencia que no hace

absolutamente nada, se utiliza normalmente para

tener pendiente para ingresar líneas de códigos

posteriormente en ese bloque o para si en

momento de desarrollo eliminamos algo

colocamos pass como forma de marcar que allí

había líneas de código. Hay muchas forma de

utilizar esta sentencia, generalmente para fase de

desarrollo ya que como no hace nada no interfiere

en el proceso de ejecutado.

Nociones básicas de Python

~ 42 ~

Como vemos en el ejemplo anterior debajo

de la sentencia condicional tenemos un pass, pero

al ejecutar el programa no ocurre nada cuando se

cumple la condición.

Funciones

Las funciones son un grupo de

instrucciones que se ejecutan a través de una

llamada. Las funciones nos permiten ahorrar líneas

de códigos ya que podemos ejecutar bloques ya

escritos sin tener que repetirlos de nuevo, es decir

reciclar o reutilizar código.

Python nos permite asignarle el resultado

de una función a una variable, la cual nos permite

realizar operaciones diversas donde sea necesario

reutilizar estos valores.

Para crear una función usamos def y luego

el nombre que le asignaremos a la función.

def nombre ():

bloque

Para llamar a la función solo escribimos el

nombre de la siguiente manera:

Nombre ()

Nociones básicas de Python

~ 43 ~

En el ejemplo anterior si ejecutamos el

programa no hará nada, ¿Por qué?, porque

necesita ser llamada para ejecutarse, así que

escribimos la llamada.

Parámetros de una función

Un parámetro es un valor que la función

espera recibir cuando es llamada para realizar

operaciones con dicho valor o valores.

Hagamos un ejemplo donde una función

reciba un número para realizar su tabla de

multiplicar.

Nociones básicas de Python

~ 44 ~

Como vemos en el ejemplo anterior al

llamar la función “multiplicar” tomara el valor que

le especificamos para realizar la operación dada en

la función.

.

Nociones básicas de Python

~ 45 ~

Ejercicios

1. Desarrolle una aplicación que reciba de

entrada dos números, los multiplique y luego

el resultado lo divida entre el primer número.

2. Desarrolle una aplicación que realice dos

operaciones para calcular la velocidad de un

vehículo sabiendo que la velocidad es igual a la

distancia entre el tiempo. Luego sume los dos

resultados.

3. Desarrolle un programa que recibe 10 edades y

que indique si es mayor de edad o no,

sabiendo que mayor de edad es mayor o igual

a 18.

4. Desarrolle un programa que lea la siguiente

oración: “Mañana es un buen día para

programar”. Calcule cuantas vocales existen.

5. Desarrolle una aplicación que reciba los

nombres de 10 donantes y su tipo de sangre.

Determine si una persona es apta para donar

siempre y cuando sea A+.

6. Desarrolle una aplicación que reciba de

entrada los ingresos y gastos de una compañía

y muestre ganancia neta, sabiendo que

ganancia meta es igual ingresos menos gastos.

Nociones básicas de Python

~ 46 ~

7. Desarrolle una aplicación que reciba de

entrada 20 números, luego cuente los positivos

y los negativos.

8. Desarrolle una aplicación que reciba la compra

de un cliente, si la compra excede de 1,500.00

entonces recibirá un descuento de 25% por el

valor de su compra.

9. Desarrolle un programa que reciba dos

números y lo sume, luego repita el proceso

hasta que la suma de dos números sea mayor o

igual a 200.

10. Desarrolle un programa que reciba 4

calificaciones de un estudiante y calcule el

promedio de ellas, si la calificación es mayor a

70 entonces aprobó la materia de lo contrario

reprobó la materia.

11. Desarrolle un programa que reciba una

cantidad de estudiantes x con sus calificaciones

finales y respectivas aulas o secciones, luego

realizar un promedio de las calificaciones en

base a secciones. Determine cual sección

posee el mejor promedio de calificaciones

entre todas, sabiendo que las secciones son A,

B, C.

Nociones básicas de Python

~ 47 ~

Miguel Iván Bobadilla

Puerto Plata, Republica Dominicana

www.facebook.com/miguelivanbobadilla

[email protected]

Más libros del mismo autor:

http://huellasdeunamentelibre.jimdo.com/libros/