0% encontró este documento útil (0 votos)
14 vistas

Python Tarea

Cargado por

donovan tobar
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas

Python Tarea

Cargado por

donovan tobar
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 69

Python Mayo 2024

PYTHONICO
GUIA BASICA DE PYTHON

Universidad de El Salvador
Facultad de Ingenieria y Arquitectura
Sistemas Digitales

Presenta: Br. Mark Donovan Tobar Rodriguez


Carnet TR19005
Introducción
Python es un lenguaje de alto nivel con una sintaxis clara y sencilla, ideal para
desarrollo web, scripting, big data y machine learning. El objetivo de esta guia de
python es ofrecer contenido practico y de calidad para aprender a programar
desde cero un nivel experto (good) con tutoriales, ejercicios y recursos para
programadores ya sea principiante o avanzado.

En Pythonico, encontrarás recursos organizados por nivel para facilitar el


aprendizaje. . Recomendamos usar Python 3.x, ya que Python 2.x no se mantiene
actualmente.

Nuestra guía “Pythonico" te enseñará lo básico del lenguaje con todo lujo de
detalles durante todo el curso.

02
Modulos

Introduccion a Python Control de flujo


01 Variables 02 Sentencia if
Tipos de datos basicos Bucle while
Operadores for en Python

Tipos de datos Funciones


03 List 04 Espacios de
Tuple nombres, modulos y
Range paquetes
Set Programacion
Dict orientada a objetos
Str

03
Módulo 1
Características básicas del lenguaje
Introduccion a Python
Caracteristicas del lenguaje

Python es un lenguaje de programación de alto nivel cuya máxima es la legibilidad


del código. Las principales características de Python son las siguientes:

Es multiparadigma, ya que soporta la programación imperativa, programación


orientada a objetos y funcional.
Es multiplataforma: Se puede encontrar un intérprete de Python para los
principales sistemas operativos: Windows, Linux y Mac OS. Además, se puede
reutilizar el mismo código en cada una de las plataformas.
Es dinámicamente tipado: Es decir, el tipo de las variables se decide en tiempo
de ejecución.
Es fuertemente tipado: No se puede usar una variable en un contexto fuera de
su tipo. Si se quisiera, habría que hacer una conversión de tipos.
Es interpretado: El código no se compila a lenguaje máquina.

El intérprete de Python

Cuando instalas Python correctamente ocurren dos cosas: se añade el comando


python (o python3, en caso de que instales la versión 3.x de Python) al path y se
instala el intérprete de Python correspondiente.

04
¿Cómo saber qué versión de Python tengo instalada?

Si ya has instalado Python, abre una consola o terminal y ejecuta el comando


python3. Este comando lanzará el intérprete de Python correspondiente. Debes
ver algo similar a esta imagen:

Si prestas atencion, en la primera línea podemos ver la versión del intérprete de


Python que tenemos instalado en nuestro ordenador. En este caso es la versión
3.7.4.

En el intérprete de Python podemos escribir expresiones e instrucciones que este


interpretará y ejecutará.

Puedes probar, por ejemplo, a escribir 2 + 3. El resultado debe ser el siguiente:

05
Tambien puedes probar ejecutar la instrucción print('¡Hola mundo!'):

Para salir del intérprete basta con ejecutar la instrucción quit().

No obstante, aunque esta forma de escribir código puede ser útil para aprender y
en casos muy puntuales, no es la habitual a la hora de escribir un programa o
script en Python.

Primer programa en Python

Normalmente, los programas en Python se escriben en archivos con la extensión


.py. Estos archivos se pasan al intérprete de Python para que los interprete y
ejecute.

Vamos a verlo con un ejemplo. Crea con un editor de texto un fichero llamado
suma.py con el siguiente contenido:

A continuación abre un terminal, sitúate en el directorio en el que creaste el


archivo suma.py y ejecuta lo siguiente:

En el terminal verás que aparece el número 5 como resultado de ejecutar el


programa anterior. ¿Qué ha ocurrido aquí? Básicamente que el intérprete de
Python ha leído y ejecutado las líneas de código que se ha escrito en el fichero
suma.py.

06
Operadores, expresiones y sentencias
en Python
Operador
Un operador es un carácter o conjunto de caracteres que actúa sobre una, dos o
más variables y/o literales para llevar a cabo una operación con un resultado
determinado.
Ejemplos de operadores comunes son los operadores aritméticos + (suma), -
(resta) o * (producto), aunque en Python existen otros operadores.

Expresión
Una expresión es una unidad de código que devuelve un valor y está formada por
una combinación de operandos (variables y literales) y operadores. Los siguientes
son ejemplos de expresiones (cada línea es una expresión diferente):

Sentencia
Por su parte, una sentencia o declaración es una instrucción que define una
acción. Una sentencia puede estar formada por una o varias expresiones, aunque
no siempre es así.

En definitiva, las sentencias son las instrucciones que componen nuestro


programa y determinan su comportamiento.

Ejemplos de sentencias son la asignación = o las instrucciones if, if ... else ..., for o
while entre otras.

07
Sentencias de más de una línea

Normalmente, las sentencias ocupan una sola línea. Por ejemplo:

Sin embargo, aquellas sentencias que son muy largas pueden ocupar más de una
línea.

Para dividir una sentencia en varias líneas se utiliza el carácter \. Por ejemplo:

Además de la separación explícita (la que se realiza con el carácter \), en Python la
continuación de línea es implícita siempre y cuando la expresión vaya dentro de
los caracteres (), [] y {}. Por ejemplo, podemos inicializar una lista del siguiente
modo:

No debe haber preocupaciones si no se sabe lo que es una lista o no se entiende lo


que hace el ejemplo anterior. Lo importante es que se comprenda que lo anterior
es una sentencia multi-línea ya que está comprendida entre los caracteres [].

08
Palabras reservadas de Python
Python tiene una serie de palabras clave reservadas, por tanto, no pueden usarse
como nombres de variables, funciones, etc.

Estas palabras clave se utilizan para definir la sintaxis y estructura del lenguaje
Python.

La lista de palabras reservadas es la siguiente:

and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for,
from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return,
True, try, yield, while y with

Constantes en Python
A diferencia de otros lenguajes, en Python no existen las constantes.

Entendemos como constante una variable que una vez asignado un valor, este no
se puede modificar. Es decir, que a la variable no se le puede asignar ningún otro
valor una vez asignado el primero.

Se puede simular este comportamiento, siempre desde el punto de vista del


programador y atendiendo a convenciones propias, pero no podemos cambiar la
naturaleza mutable de las variables.

No obstante, sí que es cierto que el propio Python define una serie de valores
constantes en su propio namespace. Los más importantes son:

False: El valor false del tipo bool.


True: El valor true del tipo bool.
None: El valor del tipo NoneType. Generalmente None se utiliza para
representar la ausencia de valor de una variable.

09
Variables
Variables en Python
Una variable es una forma de identificar, de forma sencilla, un dato que se
encuentra almacenado en la memoria del ordenador.

Por ejemplo, supongamos que queremos mostrar el resultado de sumar 1 + 2. Para


mostrar el resultado, debemos indicarle al programa dónde se encuentra dicho
dato en memoria y, para ello, hacemos uso de una variable:

Asignar un valor a una variable en Python


Tal y como se ha visto en el ejemplo anterior, para asignar un valor (un dato) a una
variable se utiliza el operador de asignación =.

En la operación de asignación se ven involucradas tres partes:


El operador de asignación =
Un identificador o nombre de variable, a la izquierda del operador
Un literal, una expresión, una llamada a una función o una combinación de
todos ellos a la derecha del operador de asignación

Ejemplo:
# Asigna a la variable <a> el valor 1
a=1

# Asigna a la variable <a> el resultado de la expresión 3 * 4


a=3*4

# Asigna a la variable <a> la cadena de caracteres 'Pythonico'


a = 'Pythonico'

10
Si intentamos usar una variable que no ha sido definida/inicializada previamente,
el intérprete nos mostrará un error:

Un tipo de dato define una serie de características sobre esos datos y las variables
que los contienen como, por ejemplo, las operaciones que se pueden realizar con
ellos. En Python, los tipos de datos son los numéricos (enteros, reales y
complejos), los boolenaos (True, False) y las cadenas de caracteres.

A diferencia de otros lenguajes, en Python no es necesario indicar el tipo de dato


cuando se define una variable. Además, en cualquier momento, una variable que
es de un tipo puede convertirse en una variable de otro tipo cualquiera:

Se dice que Python (el intérprete) infiere el tipo de dato al que pertenece una
variable en tiempo de ejecución, es decir, es cuando se ejecuta el programa,
cuando conoce su tipo de dato y qué operaciones pueden llevarse a cabo con él.

11
Modificar el valor de una variable en Python
Para modificar el valor de una variable en Python, basta con asignarle un nuevo
valor en cualquier momento y lugar después de la definición.

Ejemplo:

Como se ve en el ejemplo anterior, se ha modificado el dato de la variable a. En la


línea 1 le ha asignado el valor 1. Más tarde, en la línea 5, se ha actualizado su valor
a 3.

Literales
Un literal no es más que un dato en crudo que se puede asignar directamente a
una variable o formar parte de una expresión.

En el siguiente ejemplo se asigna a la variable a el literal 1:

Existen varios tipos de literales:


Numéricos (Enteros, reales y complejos): 1, 3, 3.14, -1, 3.14j, …
Cadenas de caracteres: 'Hola', 'Me gusta Python', …
Booleanos: True y False
El literal especial None. None significa ausencia de valor y es muy utilizado en
programación.

12
Asignar un valor a múltiples variables
Ahora vamos a descubrir cómo asignar un mismo valor a múltiples variables a la
vez. Si se tiene que definir varias variables con un mismo dato, puedes usar la
siguiente estructura:

Asignar múltiples valores a múltiples variables


También es posible inicializar varias variables con un valor diferente cada una del
siguiente modo:

No obstante, no se aconseja que lo realices así porque el código es menos legible.

13
Tipos de datos basicos

Tipos de datos básicos de Python

Los tipos de datos definen un conjunto de valores que tienen una serie de
características y propiedades determinadas. Establece qué valores puede tomar
una variable y qué operaciones se pueden realizar sobre la misma.

Los tipos de datos básicos de Python son los booleanos, los numéricos (enteros,
punto flotante y complejos) y las cadenas de caracteres.

Python también define otros tipos de datos, entre los que se encuentran:
Secuencias: Los tipos list, tuple y range
Mapas: El tipo dict
Conjuntos: El tipo set
Iteradores
Clases
Instancias
Excepciones

En fin, no tiene que haber preocupaciones con tanto tipo ni tanto concepto
nuevo. Tómatelo con calma que estás aprendiendo. Comencemos por lo fácil
revisando los tipos de datos básicos de Python.

14
Tipos numéricos

Python define tres tipos de datos numéricos básicos: enteros, números de punto
flotante y los números complejos.

Números enteros

El tipo de los números enteros es int. Este tipo de dato comprende el conjunto de
todos los números enteros en Python el conjunto está limitado realmente por la
capacidad de la memoria disponible.

Ejemplo:

Números de punto flotante

Los numeros de punto flotante simularía el conjunto de los números reales.

Ejemplo:

15
Números complejos
El último tipo de dato numérico básico que tiene Python es el de los números
complejos o como su sintaxis es en python “complex” .

Para crear un número complejo, se sigue la siguiente estructura <parte_real>+


<parte_imaginaria>j. Y se puede acceder a la parte real e imaginaria a través de los
atributos real e imag:

Aritmética de los tipos numéricos


Con todos los tipos numéricos se pueden aplicar las operaciones de la aritmética:
suma, resta, producto, división.

En Python está permitido realizar una operación aritmética con números de


distinto tipo. En este caso, el tipo numérico «más pequeño» se convierte al del
tipo «más grande», de manera que el tipo del resultado siempre es el del tipo
mayor. Entendemos que el tipo int es menor que el tipo float que a su vez es
menor que el tipo complex.

Por tanto, es posible, por ejemplo, sumar un int y un float:

16
Tipo booleano

En Python la clase que representa los valores booleanos es bool. Esta clase solo
se puede instanciar con dos valores: True para representar verdadero y False para
representar falso.

Generalmente usados especificamente para estructuras de control.

Tipo cadena de caracteres

Este tipo es conocido como string aunque su clase verdadera es str.

Para crear un string, simplemente tienes que encerrar entre comillas simples '' o
dobles "" una secuencia de caracteres.

Ejemplos:

>>> hola = 'Hola "Pythonico"'


>>> hola_2 = 'Hola \'Pythonico\''
>>> hola_3 = "Hola 'Pythonico'"

>>> print(hola)
Hola "Pythonico"

>>> print(hola_2)
Hola 'Pythonico'

>>> print(hola_3)
Hola 'Pythonico'

17
Otros tipos
Además de los tipos básicos, otros tipos fundamentales de Python son las
secuencias (list y tuple), los conjuntos (set) y los mapas (dict).

Todos ellos son tipos compuestos y se utilizan para agrupar juntos varios valores.
Las listas son secuencias mutables de valores.
Las tuplas secuencias inmutables de valores.
Los conjuntos se utilizan para representar conjuntos únicos de elementos, es
decir, en un conjunto no pueden existir dos objetos iguales.
Los diccionarios son tipos especiales de contenedores en los que se puede
acceder a sus elementos a partir de una clave única.

Conocer el tipo de una variable


Ahora se presentarán dos funciones para practicar con todo lo que se ha visto en
esta guia. Son type() e isinstance():
type() recibe como parámetro un objeto y te devuelve el tipo del mismo.
isinstance() recibe dos parámetros: un objeto y un tipo. Devuelve True si el
objeto es del tipo que se pasa como parámetro y False en caso contrario.

18
Conversión de tipos
Imagina que tienes una variable edad de tipo string cuyo valor es '25'. Se podría
decir que edad, aunque realmente es una cadena de caracteres, contiene un
número. Sin embargo, si intentas sumar 10 a edad, el intérprete te dará un error
porque edad es de tipo str y 10 un tipo numérico.

¿Cómo puedo tratar la variable edad como un número? Convirtiéndola a un tipo


numérico, por ejemplo, al tipo int.

Para ello, Python ofrece las siguientes funciones:

str(): Devuelve la representación en cadena de caracteres del objeto que se


pasa como parámetro.
int(): Devuelve un int a partir de un número o secuencia de caracteres.
float(): Devuelve un float a partir de un número o secuencia de caracteres.
complex(): Devuelve un complex a partir de un número o secuencia de
caracteres.
Si a las funciones anteriores se les pasa como parámetro un valor inválido, el
intérprete mostrará un error.

19
Operadores en Python
Operadores de concatenacion de cadenas de caracteres
Una de las operaciones más básicas cuando se trabaja con cadenas de caracteres es la
concatenación. Esto consiste en unir dos cadenas en una sola, siendo el resultado un
nuevo string.
La forma más simple de concatenar dos cadenas en Python es utilizando el operador
de concatenación +.

Ejemplo:
>>> hola = 'Hola'
>>> python = 'Pythonico'
>>> hola_python = hola + ' ' + python # concatenamos 3 strings
>>> print(hola_python)
Hola Pythonico

Operadores logicos o booleanos

20
Operadores de comparación
Los operadores de comparación se utilizan, como su nombre indica, para comparar dos
o más valores. El resultado de estos operadores siempre es True o False.

21
Operadores aritméticos
Los operadores de comparación se utilizan, como su nombre indica, para comparar dos
o más valores. El resultado de estos operadores siempre es True o False.

22
Operadores de asignación
Además del operador de asignación “=”, existen otros operadores de asignación
compuestos que realizan una operación básica sobre la variable a la que se le asigna el
valor.

23
Operadores de pertenencia
Los operadores de pertenencia se utilizan para comprobar si un valor o variable se
encuentran en una secuencia (list, tuple, dict, set o str).

Todavía no se ha visto estos tipos, pero son operadores muy utilizados.

Ejemplos:

Operadores de identidad
Por último, los operadores de identidad se utilizan para comprobar si dos variables son,
o no, el mismo objeto.

24
Ejemplo:

Operadores de identidad
Al igual que ocurre en las matemáticas, los operadores en Python tienen un orden de
prioridad. Este orden es el siguiente, de menos prioritario a más prioritario: asignación;
operadores booleanos; operadores de comparación, identidad y pertenencia.

Este orden de prioridad se puede alterar con el uso de los parentesis ():

25
Módulo 2
Estructuras de control de flujo
Sentencia if
if - Sentencia basica
En Python, la sentencia if se utiliza para ejecutar un bloque de código si, y solo si,
se cumple una determinada condición. Por tanto, if es usado para la toma de
decisiones.
La estructura básica de esta sentencia if es la siguiente:

Es decir, solo si condición se evalúa a True, se ejecutarán las sentencias que


forman parte de bloque de código.

En caso de que se evalúe a False no se ejecutará ninguna sentencia perteneciente


a bloque de código.

Aquí, condición puede ser un literal, el valor de una variable, el resultado de una
expresión o el valor devuelto por una función.

En el código anterior la variable x toma el valor 17. En la línea 2, la condición de la


sentencia if evalúa si x es menor que 20. Como el valor devuelto por la expresión
es True, se ejecuta el bloque del if, mostrando por pantalla la cadena x es menor
que 20.

26
Otro ejemplo:

En este caso tenemos una lista de valores. El if comprueba si el número 5 se


encuentra entre estos valores. Como la expresión devuelve como resultado False,
porque 5 no está entre los valores, el código anterior simplemente mostrará por
pantalla la cadena fin.

Sentencia if … else
Hay ocasiones en que la sentencia if básica no es suficiente y es necesario
ejecutar un conjunto de instrucciones o sentencias cuando la condición se evalúa
a False.

Para ello se utiliza la estructura if ... else... Esta es estructura es como sigue:

Imagina que estás implementado un programa en el que necesitas realizar la


división de dos números. Si divides un número entre 0, el programa lanzará un
error y terminará. Para evitar esto, podemos añadir una sentencia if ... else... como
en el ejemplo siguiente:

El resultado del script anterior es 5.0. Si ahora actualizamos el valor de y a 0, el


resultado sería este otro:

27
if … elif … else
También es posible que te encuentres situaciones en que una decisión dependa
de más de una condición.
En estos casos se usa una sentencia if compuesta, cuya estructura es como se
indica a continuación:

Ejemplo:

En el ejemplo anterior x toma el valor 28. La primera condición de la sentencia if se


evalúa a False y pasa a la siguiente (a la del bloque elif). En esta ocasión, la
expresión se evalúa a True, mostrándose por pantalla la cadena 28 es mayor que
0.

Sentencias if anidadas
Para terminar, añadir que en cualquiera de los bloques de sentencias anteriores se
puede volver a incluir una sentencia if, o if … else … o if … elif … else …

28
Sentencia While
La sentencia o bucle while en Python es una sentencia de control de flujo que se
utiliza para ejecutar un bloque de instrucciones de forma continuada mientras se
cumpla una condición determinada.

Su estructura es la siguiente:

Es decir, mientras condición se evalúe a True, se ejecutarán las instrucciones y


sentencias de bloque de código.

Veamos un ejemplo:

El resultado del script anterior es el siguiente (la tabla de multiplicar del número 3):

29
Bucle While - Otro Ejemplo
A continuación mostramos un escenario típico de uso de bucle while:
Comprobar si existe un elemento en una secuencia.
Imagina que tienes la siguiente lista de valores [5, 1, 9, 2, 7, 4] y quieres saber
si el número 2 está contenido en dicha lista. La estructura típica de bucle
while para ello es como sigue:

Como se puede observar, en el ejemplo, se utilizan 3 variables de control:

encontrado: Indica si el número 2 ha sido encontrado en la lista.


indice: Contiene el índice del elemento de la lista valores que va a ser
evaluado.
longitud: Indica el número de elementos de la lista valores.

En esta ocasión, la condición de continuación del bucle while es que no se


haya encontrado el número 2 y que el índice del elemento a evaluar sea
menor que la longitud de la lista (es posible acceder a un elemento de una
lista a partir del índice de su posición, comenzando por 0).

Por tanto, el bucle finaliza bien cuando se haya encontrado el elemento, bien
cuando se haya evaluado el último elemento de la lista. Si se ha encontrado
el número 2, se muestra un mensaje indicando el índice en el que está. En
caso contrario, se muestra un mensaje indicando que el número 2 no se
encuentra en la lista.

30
Bucle While - Else
Al igual que sucede con el bucle for, podemos alterar el flujo de ejecución del
bucle while con las sentencias break y continue:
break se utiliza para finalizar y salir el bucle, por ejemplo, si se cumple alguna
condición.
Por su parte, continue salta al siguiente paso de la iteración, ignorando todas
las sentencias que le siguen y que forman parte del bucle.
Veamos el ejemplo de la sección anterior modificado, añadiendo la sentencia
break:

Lo que se hizo ha sido eliminar de la condición de continuación del bucle la


comprobación de la variable encontrado. Además, he añadido la sentencia break
si el número 2 se encuentra en la lista.

Por otro lado, al bucle while le podemos añadir la sentencia opcional else. El
bloque de código del else se ejecutará siempre y cuando la condición de la
sentencia while se evalúe a False y no se haya ejecutado una sentencia break.

Continuando con el ejemplo anterior, lo podemos modificar del siguiente modo:

31
Sentencia for
El bucle for se utiliza para recorrer los elementos de un objeto iterable (lista,
tupla, conjunto, diccionario, …) y ejecutar un bloque de código.

Su sintaxis es la siguiente:

Ejemplo:

32
Bucle for en diccionarios

Un caso es especial de bucle for se da al recorrer los elementos de un


diccionario. Dado que un diccionario está compuesto por pares clave/valor,
hay distintas formas de iterar sobre ellas.

1- Recorrer las claves del diccionario

2- Iterar sobre los valores del diccionario

3- Iterar a la vez sobre la clave y el valor de cada uno de los elementos del
diccionario

33
Bucle for - range
Para estos casos, Python pone a nuestra disposición la clase range. El
constructor de esta clase, range(max), devuelve un iterable cuyos valores
van desde 0 hasta max - 1.

El tipo de datos range se puede invocar con uno, dos e incluso tres
parámetros:

range(max): Un iterable de números enteros consecutivos que empieza


en 0 y acaba en max - 1
range(min, max): Un iterable de números enteros consecutivos que
empieza en min y acaba en max - 1
range(min, max, step): Un iterable de números enteros consecutivos que
empieza en min acaba en max - 1 y los valores se van incrementando de
step en step. Este último caso simula el bucle for con variable de control.

Por ejemplo, para mostrar por pantalla los números pares del 0 al 10
podríamos usar la función range del siguiente modo:

34
Bucle for ... else

Python ofrece una estructura adicional de bucle for cuya estructura es la


siguiente:

Es decir, el código del bloque else se ejecutará siempre y cuando no se haya


ejecutado la sentencia break dentro del bloque del for.
Veamos un ejemplo:

Como en el ejemplo anterior la secuencia numeros contiene al número 3, la


instrucción print nunca se ejecutará.

35
Módulo 3
Tipos de datos complejos
Tipo list
Que es una lista? Cómo acceder a los elementos
de una lista en Python
Las listas en Python son un tipo contenedor,
Para acceder a un elemento de una lista se
compuesto, que se usan para almacenar
utilizan los índices. Un índice es un número
conjuntos de elementos relacionados del
entero que indica la posición de un elemento
mismo tipo o de tipos distintos.
en una lista. El primer elemento de una lista
siempre comienza en el índice 0.
Ejemplo una lista del numero 1 al 10:

Ejemplo: una lista de 4 elementos, tiene indices


0,1,2,3.

Las listas pueden almacenar elementos de


distinto tipo.

Ejemplo de una lista que almacena int, float,


char y str:
Si se intenta acceder a un índice que está fuera
del rango de la lista, el intérprete lanzará la
excepción IndexError. De igual modo, si se
El tipo str tambien es un tipo secuencia, por lo utiliza un índice que no es un número entero,
que puede tomarse como list. se lanzará la excepción TypeError:

Ejemplo:

36
Acceso a los elementos Acceso a un subconjunto de
usando un indice negativo elementos
En Python está permitido usar índices También es posible acceder a un subconjunto
negativos para acceder a los elementos de una de elementos de una lista utilizando rangos en
secuencia. En este caso, el índice -1 hace los índices. Esto es usando el operador [:]:
referencia al último elemento de la secuencia,
el -2 al penúltimo y así, sucesivamente:

for list - recorrer una lista Añadir elementos a una lista


Ya se ha visto que se puede usar el bucle for en
Para añadir un nuevo elemento a una lista se
Python para recorrer los elementos de una
utiliza el método append() y para añadir varios
secuencia. En nuestro caso, para recorrer una
elementos, el método extend():
lista en Python utilizaríamos la siguiente
estructura:

37
Modificar elementos de una
lista
Es posible modificar un elemento de una lista
en Python con el operador de asignación =.
Para ello, lo único que necesitas conocer es el
índice del elemento que quieres modificar o el
rango de índices:

Eliminar un elemento de una lista

En Python se puede eliminar un elemento de


una lista de varias formas.

1- Con la sentencia del se puede eliminar un


elemento a partir de su índice.

2- remove() elimina la primera ocurrencia que


se encuentre del elemento en una lista.

3- pop([i]) obtiene el elemento cuyo índice sea


igual a i y lo elimina de la lista. Si no se
especifica ningún índice, recupera y elimina el
último elemento.

38
Longitud (len) de una lista
Como cualquier tipo secuencia, para conocer la longitud de una lista en Python se
hace uso de la función len(). Esta función devuelve el número de elementos de
una lista:

Cómo saber si un elemento está en una lista


Para saber si un elemento está contenido en una lista, se utiliza el operador de
pertenencia in:

sort list - ordenar listas


El método sort() ordena los elementos de la lista utilizando únicamente el
operador < y modifica la lista actual.

39
Tipo tupla
Qué es una tupla? Acceso a los elementos
usando un índice negativo
Es como una lista previamente enseñadas con
sus mismas caracteristicas con la diferencia Al igual que ocurre con las listas (y todos los
que una vez creadas no se pueden editar. tipos secuenciales), está permitido usar índices
negativos para acceder a los elementos de una
tupla

Cómo acceder a los elementos Longitud (len) de una tupla


de una lista
Como cualquier tipo secuencia, para conocer
la longitud de una tupla en Python se hace uso
Para acceder a un elemento de una tupla se
de la función len(). Esta función devuelve el
utilizan los índices. Un índice es un número
número de elementos de una tupla.
entero que indica la posición de un elemento
en una tupla. El primer elemento de una tupla
siempre comienza en el índice 0.

Se accede de la misma manera que en una lista.


Cómo saber si un elemento
está en una tupla
for tuple – Recorrer una tupla
para saber si un elemento está contenido en
El bucle for en Python es una de las una tupla, se utiliza el operador de pertenencia
estructuras ideales para iterar sobre los in.
elementos de una secuencia.

40
Tipo range
Clase range Ventajas de usar range
range es un tipo de dato que representa una La principal ventaja de usar range sobre list o
secuencia de números inmutable. tuple es que es un iterable que genera los
Para crear un objeto de tipo range, se elementos solo en el momento en que
pueden usar dos constructores : realmente los necesita. Esto implica que usa
range(fin): Crea una secuencia numérica una cantidad de memoria mínima.
que va desde 0 hasta fin - 1.
range(inicio, fin, [paso]): Crea una
secuencia numérica que va desde inicio
hasta fin - 1. Si además se indica el
parámetro paso, la secuencia genera los
números de paso en paso.

Operaciones de la clase range


Al tratarse de un tipo secuencial, range
implementa las operaciones básicas de ese tipo
Recorrer una secuencia a excepción de la concatenación y la repetición:

numerica
range en Python es un tipo que se utiliza para
representar una secuencia inmutable de
números

41
Tipo set
Qué es el tipo set? Cómo acceder a los
La principal característica de este tipo de
elementos de un conjunto
datos es que es una colección cuyos Dado que los conjuntos son colecciones
elementos no guardan ningún orden y que desordenadas, en ellos no se guarda la posición
además son únicos. en la que son insertados los elementos como
ocurre en los tipos list o tuple. Es por ello que
no se puede acceder a los elementos a través
de un índice.
Sin embargo, sí se puede acceder y/o recorrer
todos los elementos de un conjunto usando un
bucle for:

set vs Frozenset
La principal diferencia es que set es mutable,
por lo que después de ser creado, se pueden
añadir y/o eliminar elementos del conjunto. Por
su parte, frozenset es inmutable y su contenido
Añadir elementos a un
no puede ser modificado una vez que ha sido
inicializado. conjunto (set)
Para añadir un elemento a un conjunto se utiliza
el método add(). También existe el método
update(), que puede tomar como argumento
una lista, tupla, string, conjunto o cualquier
objeto de tipo iterable.

42
Eliminar un elemento de un
conjunto
La clase set ofrece cuatro métodos para eliminar elementos de un conjunto. Son: discard(),
remove(), pop() y clear().

discard(elemento) y remove(elemento) eliminan elemento del conjunto. La única diferencia es


que si elemento no existe, discard() no hace nada mientras que remove() lanza la excepción
KeyError.

pop() es un tanto peculiar. Este método devuelve un elemento aleatorio del conjunto y lo
elimina del mismo. Si el conjunto está vacío, lanza la excepción KeyError.

Finalmente, clear() elimina todos los elementos contenidos en el conjunto.

43
Tipo dict
¿Qué es el tipo dict? ¿Como acceder a los
Es como una lista previamente enseñadas con
elementos de un dict?
sus mismas caracteristicas con la diferencia Acceder a un elemento de un diccionario es
que una vez creadas no se pueden editar. una de las principales operaciones por las que
existe este tipo de dato. El acceso a un valor se
Otras características a resaltar de los realiza mediante indexación de la clave. Para
diccionarios: ello, simplemente encierra entre corchetes la
Es un tipo mutable, es decir, su contenido clave del elemento d[clave]. En caso de que la
se puede modificar después de haber sido clave no exista, se lanzará la excepción
creado. KeyError.
Es un tipo ordenado. Preserva el orden en
que se insertan los pares clave: valor

¿Cómo crear un diccionario?


En Python hay varias formas de crear un
diccionario. for dict - Recorrer un dict
La que nosotros veremos es encerrar una Hay varias formas de recorrer los elementos de
secuencia de pares clave: valor separados por un diccionario: recorrer solo las claves, solo los
comas entre llaves valores o recorrer a la vez las claves y los
valores. Puedes ver aquí como usar el bucle for
Ejemplo: para recorrer un diccionario.

>>> d = {1: 'hola', 89: 'Pythonico', 'a': 'b', 'c': 27}

44
Añadir elementos a un dict
Para añadir un nuevo elemento a un diccionario existente, se usa el operador de
asignación =. A la izquierda del operador aparece el objeto diccionario con la
nueva clave entre corchetes [] y a la derecha el valor que se asocia a dicha clave.

Modificar elementos de un diccionario

En el apartado anterior svisto que para actualizar el valor asociado a una clave,
simplemente se asigna un nuevo valor a dicha clave del diccionario..

45
Eliminar un elemento de un dict
En Python existen diversos modos de eliminar un elemento de un diccionario. Son
los siguientes:
pop(clave [, valor por defecto]): Si la clave está en el diccionario, elimina el
elemento y devuelve su valor; si no, devuelve el valor por defecto. Si no se
proporciona el valor por defecto y la clave no está en el diccionario, se lanza la
excepción KeyError.
popitem(): Elimina el último par clave: valor del diccionario y lo devuelve. Si el
diccionario está vacío se lanza la excepción KeyError. (NOTA: En versiones
anteriores a Python 3.7, se elimina/devuelve un par aleatorio, no se garantiza
que sea el último).
del d[clave]: Elimina el par clave: valor. Si no existe la clave, se lanza la
excepción KeyError.
clear(): Borra todos los pares clave: valor del diccionario.

46
Tipo str
Qué es el tipo str? Cómo acceder a los
La clase str en Python se utiliza para caracteres de una cadena
representar texto, más conocido en el mundo
Como el resto de tipos secuencia, podemos
de la programación como string o cadena de
acceder a los caracteres de una cadena a
caracteres.
través de un índice numérico. Un índice es un
número entero que indica la posición de un
carácter en la cadena. Siempre el primer
carácter de la secuencia tiene como índice 0.
Cómo crear una cadena
Ejemplo:
Crear una cadena de texto en Python es muy >>> s = 'Hola Pythonico'
sencillo. Simplemente encierra una secuencia # Primer carácter de la cadena
de caracteres entre comillas simples '' o dobles >>> s[0]
"". 'H'
# Sexto carácter de la cadena
Ejemplo: >>> s[5]
'P'
>>> s = 'Hola Pythonico'
>>> s
'Hola Pythonico' for str – Recorrer los
>>> type(s)
<class 'str'> caracteres de una cadena
>>> s2 = "Me gusta Python" En Python es posible recorrer todos los
>>> s2 caracteres de una cadena usando la sentencia
'Me gusta Python' for. Para ello, lo más fácil es seguir la siguiente
>>> type(s2) plantilla:
<class 'str'>

47
Comprobar si un caracter esta
en una cadena
Para comprobar si un carácter está contenido en una cadena, utiliza el operador
de pertenencia in. Esto nos devolverá True si al menos hay una ocurrencia del
carácter en el string o False en caso contrario.

Comprobar si dos strings son


iguales
En Python, para comparar si dos cadenas de caracteres son iguales, se utiliza el
operador de igualdad ==. Dos strings son iguales si y solo si ambas cadenas
contienen la misma secuencia de caracteres (se distingue entre mayúsculas y
minúsculas).

48
Módulo 4
Division de la logica de un programa
Funciones en Python
Qué son las funciones?
Una función es un grupo de instrucciones que constituyen unidades lógicas de un
programa y tienen un doble objetivo:
Dividir y organizar el código en partes más sencillas.
Encapsular el código que se repite a lo largo de un programa para ser
reutilizado.

Como programador, puedes definir tus propias funciones para estructurar el


código de manera que sea más legible y para reutilizar aquellas partes que se
repiten a lo largo de una aplicación. Esto es una tarea fundamental a medida que
va creciendo el número de líneas de un programa.

La idea la puedes observar en la siguiente imagen:

49
Como definir una funcion
Para definir una función en Python se utiliza la palabra reservada def. A
continuación viene el nombre o identificador de la función que es el que se
utiliza para invocarla. Después del nombre hay que incluir los paréntesis y
una lista opcional de parámetros. Por último, la cabecera o definición de la
función termina con dos puntos.

La siguiente imagen muestra el esquema de una función en Python:

Como usar o llamar a una función?


Para usar o invocar a una función, simplemente hay que escribir su nombre
como si de una instrucción más se tratara. Eso sí, pasando los argumentos
necesarios según los parámetros que defina la función.

50
La función multiplica_por_5() define un parámetro llamado numero que es el
que se utiliza para multiplicar por 5. El resultado del programa anterior sería
el siguiente:

Sentencia return
Anteriormente se indicaba que cuando acaba la última instrucción de una
función, el flujo del programa continúa por la instrucción que sigue a la
llamada de dicha función. Hay una excepción: usar la sentencia return.
return hace que termine la ejecución de la función cuando aparece y el
programa continúa por su flujo normal.

La sentencia return es opcional, puede devolver, o no, un valor y es posible


que aparezca más de una vez dentro de una misma función.

Nota: En este ejemplo se devuelve 2 variables/objetos para desmotracion.

51
Ámbito y ciclo de vida de las variables
Los parámetros y variables definidos dentro de una función tienen un ámbito
local, local a la propia función. Por tanto, estos parámetros y variables no pueden
ser utilizados fuera de la función porque no serían reconocidos.

El ciclo de vida de una variable determina el tiempo en que una variable


permanece en memoria. Una variable dentro de una función existe en memoria
durante el tiempo en que está ejecutándose dicha función. Una vez que termina
su ejecución, sus variables y parámetros desaparecen de memoria y, por tanto, no
pueden ser referenciados.

Ejemplo:

>>> def saludo(nombre):


... x = 10
... print(f'Hola {nombre}')
...
>>> saludo('Pythonico')
Hola Pythonico
>>> print(x)
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'x' is not defined

Como ves, en el ejemplo anterior, al tratar de mostrar por pantalla el valor de la


variable x, el intérprete mostrará un error.

El siguiente ejemplo es diferente:

52
Espacios de nombres, módulos y
paquetes
Nombres y espacios de nombres
Un nombre o identificador es la forma que existe en Python de referenciar a un
objeto concreto. Equivaldría al concepto de variable.

Un espacio de nombres es una colección aislada de nombres (o identificadores)


que referencian a objetos.

Ámbito de una variable


Un ámbito define los límites de un programa en los que un espacio de nombres
puede ser accedido sin utilizar un prefijo.
Como es mostrado en el apartado anterior, en principio existen, como mínimo,
tres ámbitos. Uno por cada espacio de nombres:
Ámbito de la función actual, que tiene los nombres locales a la función.
Ámbito a nivel de módulo, que tiene los nombres globales, los que se definen
en el propio módulo.
Ámbito incorporado, el más externo, que tiene los nombres que define Python.

53
Qué es un módulo?
Un módulo no es más que un fichero que contiene instrucciones y
definiciones (variables, funciones, clases). El fichero debe tener extensión
.py y su nombre se corresponde con el nombre del módulo.

Los módulos tienen un doble propósito:


Dividir un programa con muchas líneas de código en partes más
pequeñas.
Extraer un conjunto de definiciones que utilizas frecuentemente en tus
programas para ser reutilizadas. Esto evita, por ejemplo, tener que estar
copiando funciones de un programa a otro.

Como importar módulo?


Como has visto al final del apartado anterior, para usar las definiciones de
un módulo en el intérprete o en otro módulo, primero hay que importarlo.
Para ello, se usa la palabra reservada import.
Una vez que un módulo ha sido importado, se puede acceder a sus
definiciones a través del operador punto.

from ... import


from mis_funciones import saludo, otra_funcion
saludo('´Pythonico')

from ... import *


from mis_funciones import *
saludo('Pythonico')

from ... import as


>>> from mis_funciones import saludo as hola

>>> hola('Pythonico')
Hola Pythonico

54
Ejecutar módulos como scripts
Un módulo puede ser ejecutado como un script o como punto de entrada de
un programa cuando se pasa directamente como parámetro al intérprete de
Python:

>>> python mis_funciones.py

Cuando esto ocurre, el código del módulo se ejecuta como si se hubiera


importado, con la particularidad de que el nombre del módulo, __name__, es
__main__.

Esto hace realmente interesante añadir al final del módulo las siguientes
líneas de código, que solo se ejecutarán en caso de que dicho módulo se
haya ejecutado como el principal:

if __name__ == '__main__':
hola('Pythonico')

55
Programación orientada a objetos
(POO)
Clases y objetos en Python
una clase es una entidad que define una serie de elementos que determinan un
estado (datos) y un comportamiento (operaciones sobre los datos que modifican
su estado).

Un objeto es una concreción o instancia de una clase.

Una clase engloba datos y funcionalidad. Cada vez que se define una clase en
Python, se crea a su vez un tipo nuevo (tipo int, float, str, list, tuple).

56
Constructor de una clase
Para crear un objeto de una clase determinada, es decir, instanciar una clase, se
usa el nombre de la clase y a continuación se añaden paréntesis.

Ejemplo:
obj = MiClase()

Atributos, atributos de datos y metodos

Una vez que sabemos qué es un objeto, tengo que decirte que la única operación
que pueden realizar los objetos es referenciar a sus atributos por medio del
operador .
Como habrás podido apreciar, un objeto tiene dos tipos de atributos: atributos de
datos y métodos.
Los atributos de datos definen el estado del objeto. En otros lenguajes son
conocidos simplemente como atributos o miembros.
Los métodos son las funciones definidas dentro de la clase.

57
Atributos de datos
A diferencia de otros lenguajes, los atributos de datos no necesitan ser declarados
previamente. Un objeto los crea del mismo modo en que se crean las variables en
Python, es decir, cuando les asigna un valor por primera vez.

Métodos
Los métodos son las funciones que se definen dentro de una clase y que, por
consiguiente, pueden ser referenciadas por los objetos de dicha clase. Sin
embargo, realmente los métodos son algo más.
Se ha observado que las funciones acelera() y frena() definen un parámetro self.

Del mismo modo, el siguiente ejemplo muestra dos formas diferentes y


equivalentes de llamar al método acelera():

58
Atributos de clase y atributos de instancia
Una clase puede definir dos tipos diferentes de atributos de datos: atributos de
clase y atributos de instancia.
Los atributos de clase son atributos compartidos por todas las instancias de
esa clase.
Los atributos de instancia, por el contrario, son únicos para cada uno de los
objetos pertenecientes a dicha clase.

En el ejemplo de la clase Coche, ruedas se ha definido como un atributo de clase,


mientras que color, aceleracion y velocidad son atributos de instancia.

59
Herencia
En programación orientada a objetos, la herencia es la capacidad de reutilizar una
clase extendiendo su funcionalidad. Una clase que hereda de otra puede añadir
nuevos atributos, ocultarlos, añadir nuevos métodos o redefinirlos.

Al utilizar la herencia, todos los atributos (atributos de datos y métodos) de la


clase padre también pueden ser referenciados por objetos de las clases hijas. Al
revés no ocurre lo mismo.

60
Las funciones isinstance() e issubclass()
La función incorporada type() devuelve el tipo o la clase a la que pertenece un
objeto. En nuestro caso, si ejecutamos type() pasando como argumento un objeto
de clase Coche o un objeto de clase CocheVolador obtendremos lo siguiente:

Sin embargo, Python incorpora otras dos funciones que pueden ser de utilidad
cuando se quiere conocer el tipo de una clase. Son: isinstance() e issubclass().

isinstance(objeto, clase) devuelve True si objeto es de la clase clase o de una


de sus clases hijas. Por tanto, un objeto de la clase CocheVolador es instancia
de CocheVolador pero también lo es de Coche. Sin embargo, un objeto de la
clase Coche nunca será instancia de la clase CocheVolador.
issubclass(clase, claseinfo) comprueba la herencia de clases. Devuelve True en
caso de que clase sea una subclase de claseinfo, False en caso contrario.
claseinfo puede ser una clase o una tupla de clases.

61
Herencia múltiple
Python es un lenguaje de programación que permite herencia múltiple. Esto
quiere decir que una clase puede heredar de más de una clase a la vez.

El script anterior resultara en:

a
b
c

62
Encapsulación: atributos privados
Encapsulación (o encapsulamiento), en programación orientada a objetos, hace
referencia a la capacidad que tiene un objeto de ocultar su estado, de manera que
sus datos solo se puedan modificar por medio de las operaciones (métodos) que
ofrece.

Bien, por defecto, en Python, todos los atributos de una clase (atributos de datos
y métodos) son públicos. Esto quiere decir que desde un código que use la clase,
se puede acceder a todos los atributos y métodos de dicha clase.

Ejemplo:

En el ejemplo anterior, la clase A define el atributo privado _contador. Un ejemplo


de uso de la clase sería el siguiente:

63
Polimorfismo
Polimorfismo es la capacidad de una entidad de referenciar en tiempo de
ejecución a instancias de diferentes clases.
Aunque este concepto suene raro ahora mismo, se compredera con un ejemplo.
Imagina que tenemos las siguientes clases que representan animales:

Las tres clases implementan un método llamado sonido(). Ahora observa el


siguiente script:

En él se ha definido una función llamada a_cantar(). La variable animal que se crea


dentro del bucle for de la función es polimórfica, ya que en tiempo de ejecución
hará referencia a objetos de las clases Perro, Gato y Vaca. Cuando se invoque al
método sonido(), se llamará al método correspondiente de la clase a la que
pertenezca cada uno de los animales.

64
Gracias Pythonico!
Nos vemos

También podría gustarte