SlideShare una empresa de Scribd logo
1 de 33
Aprendiendo a Programar en
… con mi computadora y todo lo que
encuentre disponible.
Ejercicios
parte 5.
Ordenar las listas.
Puede interesar que los elementos de
una lista estén ordenados: una vez
que finalizó la inscripción en un curso,
tener a los listados de los alumnos por
orden de llegada puede ser muy
incómodo, siempre será preferible
tenerlos ordenados por número para
realizar cualquier comprobación.
Para dejar la lista original intacta y obtener
una nueva lista ordenada a partir de ella, se
usa la función sorted:
>>> bs=[5,2,4,2]
>>> cs=sorted(bs)
>>> bs
[5, 2, 4, 2]
>>> cs
[2, 2, 4, 5]
Ordenar listas.
Para modificar directamente la lista original
use la operación sort() sobre dicha lista:
>>> ds=[5,3,4,5]
>>> ds.sort()
>>> ds
[3, 4, 5, 5]
Ordenar listas.
Para obtener las palabras (separadas entre sí
por espacios) que componen la cadena xs
escriba simplemente xs.split():
>>> c = " Una cadena con espacios "
>>> c.split()
[’Una’, ’cadena’, ’con’, ’espacios’]
split elimina todos los blancos de más, y
devuelve sólo las palabras que conforman la
cadena.
Split sobre las listas.
Si en cambio el separador es otro carácter
(por ejemplo arroba, "@"), se le debe pasar
como parámetro a la función split. En ese
caso se considera un componente todo lo que
se encuentra entre dos arrobas consecutivas.
En el caso particular que el texto contenga
dos arrobas una a continuación de la otra, se
devolverá un componente vacío:
Split sobre las listas.
>>>
d="@@Una@@@cadena@@@con@@arrob
as@"
>>> d.split("@")
[’’, ’’, ’Una’, ’’, ’’, ’cadena’, ’’, ’’, ’con’, ’’,
’arrobas’, ’’]
>>>
Split sobre las listas.
>>> xs = [’aaa’, ’bbb’, ’cccc’]
>>> " ".join(xs)
’aaa bbb cccc’
>>> ", ".join(xs)
’aaa, bbb, cccc’
>>> "@@".join(xs)
’aaa@@bbb@@cccc’
Join casi inversa de split.
Listas.
Escribir una función que reciba como
parámetro una cadena de palabras
separadas por espacios y devuelva,
como resultado, cuántas palabras de
más de cinco letras tiene la cadena
dada.
#!/usr/bin/env python
# encoding: latin1
def busqueda_con_index(xs, x):
"""Busca un elemento x en una lista xs
si x está en xs devuelve xs.index(x)
de lo contrario devuelve -1"""
if x in xs:
return(xs.index(x))
else:
return(-1)
Búsqueda usando index e in.
>>> busqueda_con_index([1, 4, 54, 3, 0, -1], 3)
3
>>> busqueda_con_index([1, 4, 54, 3, 0, -1],
44)
-1
>>> busqueda_con_index([], 0)
-1
Búsqueda usando index e in.
#!/usr/bin/env python
# encoding: latin1
def busqueda_lineal(lista, x):
""" Si x está en lista devuelve su posición en
lista, de lo contrario devuelve -1. """
# Se recorren uno a uno los elementos de
# la lista y se les compara con el valor
# buscado.
# i es la posición actual en la lista, inicia = 0
i = 0
# el ciclo for recorre los elementos de lista:
Búsqueda usando index e in.
for z in lista:
# en la posición i, z contiene el valor de
# lista[i]
# si z es igual a x, devuelve i
if z == x:
return i
# si z es distinto de x, incrementa i, y
# continúa el ciclo
i=i+1
# si salió del ciclo sin haber encontrado el
# valor, devuelve -1
return -1
Búsqueda usando index e in.
>>> busqueda_lineal([1, 4, 54, 3, 0, -1], 44)
-1
>>> busqueda_lineal([1, 4, 54, 3, 0, -1], 3)
3
>>> busqueda_lineal([1, 4, 54, 3, 0, -1], 0)
4
>>> busqueda_lineal([], 0)
-1
>>>
Búsqueda usando index e in.
1. La búsqueda inicia en toda la lista completa.
2. Si el punto medio del segmento (valor central),
es el buscado, se devuelve su índice.
3. Si el valor central es mayor al buscado,
descarte el segmento desde el punto medio
hacia la a derecha.
4. Si el valor central es menor al buscado,
descarte el segmento desde el punto medio
hacia la izquierda.
5. Descartado el segmento sin interés, vuelva
analizar el segmento restante.
6. Si el segmento a analizar tiene longitud 0 o
negativa, el valor buscado no está en la lista.
Búsqueda binaria.
Búsqueda binaria.
Para señalar la porción del segmento
que se está analizando a cada paso,
se usan dos variables (izq y der) que
contienen las posiciones inicial y final
del segmento que se está
considerando. La variable medio
contiene la posición del punto medio
del segmento.
#!/usr/bin/env python
# encoding: latin1
def busqueda_binaria(lista, x):
"""Búsqueda binaria. Precondición: lista está
ordenada. Devuelve -1 si x no está en lista
Devuelve p tal que lista[p] == x, si x está en
lista """
# Busca en toda la lista dividiéndola en
# segmentos y considerando a la lista
# completa como el segmento que empieza en
# 0 y termina en len(lista) - 1.
izq = 0 # guarda el índice inicio del segmento.
der = len(lista) - 1
# guarda el índice fin del segmento.
Búsqueda binaria.
# un segmento es vacío cuando izq > der:
while izq <= der:
# el punto medio del segmento
medio = (izq+der)/2
print "DEBUG:", "izq:", izq, "der:", der, "medio:",
medio # si el medio es igual al valor buscado,
# lo devuelve
if lista[medio] == x:
return medio
# si el valor del punto medio es mayor que x,
# sigue buscando en el segmento de la
# izquierda: [izq, medio-1], descartando la
# derecha
Búsqueda binaria.
elif lista[medio] > x:
der = medio-1
# si no, sigue buscando en el segmento de la
# derecha: [medio+1, der], descartando la
# izquierda
else:
izq = medio+1
# si no salió del ciclo, vuelve a iterar con el
# nuevo segmento
# salió del ciclo de manera no exitosa: el valor
# no fue encontrado
return -1
Búsqueda binaria.
# Código para probar la búsqueda binaria
def main():
lista = input ("Dame una lista ordenada ([[]] para
terminar): ")
while lista != [[]]:
x = input("¿Valor buscado?: ")
resultado = busqueda_binaria(lista, x)
print "Resultado:", resultado
lista = input ("Dame una lista ordenada ([[]] para
terminar): ")
main()
Búsqueda binaria.
Un diccionario es una colección no ordenada
de valores que son accedidos a través de una
clave.
En lugar de acceder a la información mediante
el índice numérico, como es el caso de las
listas y tuplas, es posible acceder a los valores
a través de sus claves, que pueden ser de
diversos tipo.
Utilizando diccionarios.
Las claves son únicas dentro de un diccionario,
es decir que no puede haber un diccionario
que tenga dos veces la misma clave, si se
asigna un valor a una clave ya existente, se
reemplaza el valor anterior.
No hay forma directa de acceder a una clave a
través de su valor, y nada impide que un
mismo valor se encuentre asignado a distintas
claves.
Utilizando diccionarios.
La información almacenada en los diccionarios,
no tiene un orden particular. Ni por clave ni por
valor, ni tampoco por el orden en que han sido
agregados al diccionario.
Cualquier variable inmutable, puede ser clave
de un diccionario: cadenas, enteros, tuplas
(con valores inmutables en sus miembros), etc.
No hay restricciones para los valores
contenidos en el diccionario; pueden ser listas,
cadenas, tuplas, otros diccionarios, objetos,
etc.
Utilizando diccionarios.
Se puede utilizar un diccionario, por ejemplo,
para contar cuántas apariciones de cada
palabra hay en un texto, o cuántas apariciones
de cada letra.
Es posible usarlo, para una agenda donde la
clave es el nombre de la persona, y el valor es
una lista con los datos correspondientes a esa
persona.
Utilizando diccionarios.
También para mantener datos de alumnos
inscritos en una materia. Siendo la clave el
número de lista, y el valor una lista con todas
las notas asociadas a ese alumno.
En general, los diccionarios sirven para crear
bases de datos muy simples, en las que la
clave es el identificador del elemento, y el valor
son todos los datos del elemento a considerar.
Utilizando diccionarios.
Para definirlo junto con los miembros que va a
contener, se encierra el listado de valores entre
llaves, las parejas de clave y valor se separan
con comas, y la clave y el valor se separan con
’:’.
punto = {’x’: 2, ’y’: 1, ’z’: 4}
Utilizando diccionarios.
Para declararlo vacío y luego ingresar los
valores, se le declara como un par de llaves sin
nada en medio, y luego se asignan valores
directamente a los índices.
materias = {}
materias["lunes"] = [6103, 7540]
materias["martes"] = [6201]
materias["miércoles"] = [6103, 7540]
materias["jueves"] = []
materias["viernes"] = [6201]
Utilizando diccionarios.
Para acceder al valor asociado a una
determinada clave, se lo hace de la misma
forma que con las listas, pero utilizando la
clave elegida en lugar del índice.
print materias["lunes"]
Esto falla si se provee una clave que no está
en el diccionario. Es posible, por otro lado,
utilizar la función get, que devuelve el valor
None si la clave no está en el diccionario, o un
valor por omisión que se establece
opcionalmente.
Utilizando diccionarios.
>>> print materias["domingo"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: ’domingo’
>>> print materias.get("domingo")
None
>>> print materias.get("domingo", [])
[]
Utilizando diccionarios.
Es posible recorrer sus claves y usar esas
claves para acceder a los valores.
for dia in materias:
print dia, ":", materias[dia]
Es posible, también, obtener los valores como
tuplas donde el primer elemento es la clave y
el segundo el valor.
for dia, codigos in materias.items():
print dia, ":", codigos
Utilizando diccionarios.
Para verificar si una clave se encuentra en el
diccionario, es posible utilizar la función
has_key o la palabra reservada in.
d = {’x’: 12, ’y’: 7}
if d.has_key(’x’):
print d[’x’] # Imprime 12
if d.has_key(’z’):
print d[’z’] # No se ejecuta
if ’y’ in d:
print d[’y’] # Imprime 7
Utilizando diccionarios.
 diccionario.keys(): Devuelve una lista
desordenada, con todas las claves que se
hayan ingresado al diccionario.
 diccionario.values(): Devuelve una lista
desordenada, con todos los valores que se
hayan ingresado al diccionario.
 diccionario.items(): Devuelve una lista
desordenada con tuplas de dos elementos,
en las que el primer elemento es la clave y
el segundo el valor.
Utilizando diccionarios.
 diccionario.pop(clave): Devuelve el valor
asociado a la clave, y elimina la clave y el
valor asociado del diccionario.
 diccionario.popitem(): Devuelve un elemento
al azar del diccionario, representándolo
como una tupla (clave, valor) y elimina esta
pareja del diccionario.
 diccionario.clear(): Elimina todos los
elementos del diccionario.
Utilizando diccionarios.

Más contenido relacionado

La actualidad más candente

Analisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacioAnalisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacioAdamari Cortes
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalAngel Vázquez Patiño
 
Mapa Conceptual de Grafos
Mapa Conceptual de GrafosMapa Conceptual de Grafos
Mapa Conceptual de GrafosSandra Biondi
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesAngel Vázquez Patiño
 
ECUACIONES DE SEGUNDO GRADO
ECUACIONES DE SEGUNDO GRADOECUACIONES DE SEGUNDO GRADO
ECUACIONES DE SEGUNDO GRADOmatematicasec29
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discretaJunior Soto
 
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.Bryan Aguilar Yaguana
 
Interpretacion geometrica de las soluciones
Interpretacion geometrica de las solucionesInterpretacion geometrica de las soluciones
Interpretacion geometrica de las solucionesMORAPANTOJAEDUARDOJO
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Unidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSUnidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSAnthony Can
 
Ecuaciones simultaneas 2x2 Regla de Cramer
Ecuaciones simultaneas 2x2 Regla de CramerEcuaciones simultaneas 2x2 Regla de Cramer
Ecuaciones simultaneas 2x2 Regla de CramerIvan Sanchez
 
Métodos de solución de ecuaciones lineales (cuadro comparativo)
Métodos de solución de ecuaciones lineales (cuadro comparativo)Métodos de solución de ecuaciones lineales (cuadro comparativo)
Métodos de solución de ecuaciones lineales (cuadro comparativo)Norman Edilberto Rivera Pazos
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Ana Castro
 
Método de cramer
Método de cramerMétodo de cramer
Método de crameralgebra
 

La actualidad más candente (20)

Analisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacioAnalisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacio
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de Kruskal
 
Mapa Conceptual de Grafos
Mapa Conceptual de GrafosMapa Conceptual de Grafos
Mapa Conceptual de Grafos
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operaciones
 
ECUACIONES DE SEGUNDO GRADO
ECUACIONES DE SEGUNDO GRADOECUACIONES DE SEGUNDO GRADO
ECUACIONES DE SEGUNDO GRADO
 
Topicos Avanzados de Programacion Unidad 1 Eventos
Topicos Avanzados de Programacion Unidad 1 EventosTopicos Avanzados de Programacion Unidad 1 Eventos
Topicos Avanzados de Programacion Unidad 1 Eventos
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
 
Interpretacion geometrica de las soluciones
Interpretacion geometrica de las solucionesInterpretacion geometrica de las soluciones
Interpretacion geometrica de las soluciones
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Unidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSUnidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOS
 
Ecuaciones simultaneas 2x2 Regla de Cramer
Ecuaciones simultaneas 2x2 Regla de CramerEcuaciones simultaneas 2x2 Regla de Cramer
Ecuaciones simultaneas 2x2 Regla de Cramer
 
Algoritmo De Productos Medios
Algoritmo De Productos MediosAlgoritmo De Productos Medios
Algoritmo De Productos Medios
 
Métodos de solución de ecuaciones lineales (cuadro comparativo)
Métodos de solución de ecuaciones lineales (cuadro comparativo)Métodos de solución de ecuaciones lineales (cuadro comparativo)
Métodos de solución de ecuaciones lineales (cuadro comparativo)
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Reglas de transformación
Reglas de transformaciónReglas de transformación
Reglas de transformación
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
 
Método de cramer
Método de cramerMétodo de cramer
Método de cramer
 

Similar a Ejercicios con Python parte 05 (20)

Ejercicios Python parte 4
Ejercicios Python parte 4Ejercicios Python parte 4
Ejercicios Python parte 4
 
Python04
Python04Python04
Python04
 
Informe tecnico unidad 6
Informe tecnico unidad 6Informe tecnico unidad 6
Informe tecnico unidad 6
 
Mètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsquedaMètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsqueda
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 
Chuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdfChuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdf
 
Taller listasyeasygui
Taller listasyeasyguiTaller listasyeasygui
Taller listasyeasygui
 
Trabajo de informatica
Trabajo de informatica Trabajo de informatica
Trabajo de informatica
 
Estadística con Lenguaje R: Sesión 4
Estadística con Lenguaje R: Sesión 4Estadística con Lenguaje R: Sesión 4
Estadística con Lenguaje R: Sesión 4
 
Vba y objetos excel
Vba y objetos excelVba y objetos excel
Vba y objetos excel
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 
Manual de Excel
Manual de ExcelManual de Excel
Manual de Excel
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Manual de excel
Manual de excelManual de excel
Manual de excel
 
Scala collections
Scala collectionsScala collections
Scala collections
 
MANUAL DE EXCEL
MANUAL DE EXCELMANUAL DE EXCEL
MANUAL DE EXCEL
 
Perl2 arrays
Perl2 arraysPerl2 arrays
Perl2 arrays
 
DECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdfDECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdf
 
Apuntes Ped
Apuntes PedApuntes Ped
Apuntes Ped
 

Más de Facultad de Ciencias y Sistemas

Introducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con JavaIntroducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con JavaFacultad de Ciencias y Sistemas
 

Más de Facultad de Ciencias y Sistemas (20)

Ejercicios HTML 5
Ejercicios HTML 5Ejercicios HTML 5
Ejercicios HTML 5
 
CSS3
CSS3CSS3
CSS3
 
09 ordenamiento-en-vectores-en-c
09 ordenamiento-en-vectores-en-c09 ordenamiento-en-vectores-en-c
09 ordenamiento-en-vectores-en-c
 
08 mas-de-vectores-en-c
08 mas-de-vectores-en-c08 mas-de-vectores-en-c
08 mas-de-vectores-en-c
 
07 vectores-en-c final
07 vectores-en-c final07 vectores-en-c final
07 vectores-en-c final
 
06 clases-en-c
06 clases-en-c06 clases-en-c
06 clases-en-c
 
05 cadenas-de-caracteres-en-c
05 cadenas-de-caracteres-en-c05 cadenas-de-caracteres-en-c
05 cadenas-de-caracteres-en-c
 
04 mas-estructuras-iterativas-en-c
04 mas-estructuras-iterativas-en-c04 mas-estructuras-iterativas-en-c
04 mas-estructuras-iterativas-en-c
 
03 estructuras-iterativas-en-c
03 estructuras-iterativas-en-c03 estructuras-iterativas-en-c
03 estructuras-iterativas-en-c
 
02 mas-de-las-estructuras-de-programacion-en-c
02 mas-de-las-estructuras-de-programacion-en-c02 mas-de-las-estructuras-de-programacion-en-c
02 mas-de-las-estructuras-de-programacion-en-c
 
01 estructuras-de-programacion-en-c
01 estructuras-de-programacion-en-c01 estructuras-de-programacion-en-c
01 estructuras-de-programacion-en-c
 
Procesamiento del lenguaje natural con python
Procesamiento del lenguaje natural con pythonProcesamiento del lenguaje natural con python
Procesamiento del lenguaje natural con python
 
Actividades de aprendizaje en Moodle
Actividades de aprendizaje en MoodleActividades de aprendizaje en Moodle
Actividades de aprendizaje en Moodle
 
Creación de grupos en Moodle
Creación de grupos en MoodleCreación de grupos en Moodle
Creación de grupos en Moodle
 
Introducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con JavaIntroducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con Java
 
Como crear un diagrama de clases
Como crear un diagrama de clasesComo crear un diagrama de clases
Como crear un diagrama de clases
 
Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02
 
Diagrama de clases - Ejemplo monográfico 01
Diagrama de clases - Ejemplo monográfico 01Diagrama de clases - Ejemplo monográfico 01
Diagrama de clases - Ejemplo monográfico 01
 
Otro ejemplo de diagrama de clases UML
Otro ejemplo de diagrama de clases UMLOtro ejemplo de diagrama de clases UML
Otro ejemplo de diagrama de clases UML
 
Un ejemplo de diagrama de clases
Un ejemplo de diagrama de clasesUn ejemplo de diagrama de clases
Un ejemplo de diagrama de clases
 

Último

Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxCeciliaGuerreroGonza1
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 

Último (20)

Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 

Ejercicios con Python parte 05

  • 1. Aprendiendo a Programar en … con mi computadora y todo lo que encuentre disponible. Ejercicios parte 5.
  • 2. Ordenar las listas. Puede interesar que los elementos de una lista estén ordenados: una vez que finalizó la inscripción en un curso, tener a los listados de los alumnos por orden de llegada puede ser muy incómodo, siempre será preferible tenerlos ordenados por número para realizar cualquier comprobación.
  • 3. Para dejar la lista original intacta y obtener una nueva lista ordenada a partir de ella, se usa la función sorted: >>> bs=[5,2,4,2] >>> cs=sorted(bs) >>> bs [5, 2, 4, 2] >>> cs [2, 2, 4, 5] Ordenar listas.
  • 4. Para modificar directamente la lista original use la operación sort() sobre dicha lista: >>> ds=[5,3,4,5] >>> ds.sort() >>> ds [3, 4, 5, 5] Ordenar listas.
  • 5. Para obtener las palabras (separadas entre sí por espacios) que componen la cadena xs escriba simplemente xs.split(): >>> c = " Una cadena con espacios " >>> c.split() [’Una’, ’cadena’, ’con’, ’espacios’] split elimina todos los blancos de más, y devuelve sólo las palabras que conforman la cadena. Split sobre las listas.
  • 6. Si en cambio el separador es otro carácter (por ejemplo arroba, "@"), se le debe pasar como parámetro a la función split. En ese caso se considera un componente todo lo que se encuentra entre dos arrobas consecutivas. En el caso particular que el texto contenga dos arrobas una a continuación de la otra, se devolverá un componente vacío: Split sobre las listas.
  • 7. >>> d="@@Una@@@cadena@@@con@@arrob as@" >>> d.split("@") [’’, ’’, ’Una’, ’’, ’’, ’cadena’, ’’, ’’, ’con’, ’’, ’arrobas’, ’’] >>> Split sobre las listas.
  • 8. >>> xs = [’aaa’, ’bbb’, ’cccc’] >>> " ".join(xs) ’aaa bbb cccc’ >>> ", ".join(xs) ’aaa, bbb, cccc’ >>> "@@".join(xs) ’aaa@@bbb@@cccc’ Join casi inversa de split.
  • 9. Listas. Escribir una función que reciba como parámetro una cadena de palabras separadas por espacios y devuelva, como resultado, cuántas palabras de más de cinco letras tiene la cadena dada.
  • 10. #!/usr/bin/env python # encoding: latin1 def busqueda_con_index(xs, x): """Busca un elemento x en una lista xs si x está en xs devuelve xs.index(x) de lo contrario devuelve -1""" if x in xs: return(xs.index(x)) else: return(-1) Búsqueda usando index e in.
  • 11. >>> busqueda_con_index([1, 4, 54, 3, 0, -1], 3) 3 >>> busqueda_con_index([1, 4, 54, 3, 0, -1], 44) -1 >>> busqueda_con_index([], 0) -1 Búsqueda usando index e in.
  • 12. #!/usr/bin/env python # encoding: latin1 def busqueda_lineal(lista, x): """ Si x está en lista devuelve su posición en lista, de lo contrario devuelve -1. """ # Se recorren uno a uno los elementos de # la lista y se les compara con el valor # buscado. # i es la posición actual en la lista, inicia = 0 i = 0 # el ciclo for recorre los elementos de lista: Búsqueda usando index e in.
  • 13. for z in lista: # en la posición i, z contiene el valor de # lista[i] # si z es igual a x, devuelve i if z == x: return i # si z es distinto de x, incrementa i, y # continúa el ciclo i=i+1 # si salió del ciclo sin haber encontrado el # valor, devuelve -1 return -1 Búsqueda usando index e in.
  • 14. >>> busqueda_lineal([1, 4, 54, 3, 0, -1], 44) -1 >>> busqueda_lineal([1, 4, 54, 3, 0, -1], 3) 3 >>> busqueda_lineal([1, 4, 54, 3, 0, -1], 0) 4 >>> busqueda_lineal([], 0) -1 >>> Búsqueda usando index e in.
  • 15. 1. La búsqueda inicia en toda la lista completa. 2. Si el punto medio del segmento (valor central), es el buscado, se devuelve su índice. 3. Si el valor central es mayor al buscado, descarte el segmento desde el punto medio hacia la a derecha. 4. Si el valor central es menor al buscado, descarte el segmento desde el punto medio hacia la izquierda. 5. Descartado el segmento sin interés, vuelva analizar el segmento restante. 6. Si el segmento a analizar tiene longitud 0 o negativa, el valor buscado no está en la lista. Búsqueda binaria.
  • 16. Búsqueda binaria. Para señalar la porción del segmento que se está analizando a cada paso, se usan dos variables (izq y der) que contienen las posiciones inicial y final del segmento que se está considerando. La variable medio contiene la posición del punto medio del segmento.
  • 17. #!/usr/bin/env python # encoding: latin1 def busqueda_binaria(lista, x): """Búsqueda binaria. Precondición: lista está ordenada. Devuelve -1 si x no está en lista Devuelve p tal que lista[p] == x, si x está en lista """ # Busca en toda la lista dividiéndola en # segmentos y considerando a la lista # completa como el segmento que empieza en # 0 y termina en len(lista) - 1. izq = 0 # guarda el índice inicio del segmento. der = len(lista) - 1 # guarda el índice fin del segmento. Búsqueda binaria.
  • 18. # un segmento es vacío cuando izq > der: while izq <= der: # el punto medio del segmento medio = (izq+der)/2 print "DEBUG:", "izq:", izq, "der:", der, "medio:", medio # si el medio es igual al valor buscado, # lo devuelve if lista[medio] == x: return medio # si el valor del punto medio es mayor que x, # sigue buscando en el segmento de la # izquierda: [izq, medio-1], descartando la # derecha Búsqueda binaria.
  • 19. elif lista[medio] > x: der = medio-1 # si no, sigue buscando en el segmento de la # derecha: [medio+1, der], descartando la # izquierda else: izq = medio+1 # si no salió del ciclo, vuelve a iterar con el # nuevo segmento # salió del ciclo de manera no exitosa: el valor # no fue encontrado return -1 Búsqueda binaria.
  • 20. # Código para probar la búsqueda binaria def main(): lista = input ("Dame una lista ordenada ([[]] para terminar): ") while lista != [[]]: x = input("¿Valor buscado?: ") resultado = busqueda_binaria(lista, x) print "Resultado:", resultado lista = input ("Dame una lista ordenada ([[]] para terminar): ") main() Búsqueda binaria.
  • 21. Un diccionario es una colección no ordenada de valores que son accedidos a través de una clave. En lugar de acceder a la información mediante el índice numérico, como es el caso de las listas y tuplas, es posible acceder a los valores a través de sus claves, que pueden ser de diversos tipo. Utilizando diccionarios.
  • 22. Las claves son únicas dentro de un diccionario, es decir que no puede haber un diccionario que tenga dos veces la misma clave, si se asigna un valor a una clave ya existente, se reemplaza el valor anterior. No hay forma directa de acceder a una clave a través de su valor, y nada impide que un mismo valor se encuentre asignado a distintas claves. Utilizando diccionarios.
  • 23. La información almacenada en los diccionarios, no tiene un orden particular. Ni por clave ni por valor, ni tampoco por el orden en que han sido agregados al diccionario. Cualquier variable inmutable, puede ser clave de un diccionario: cadenas, enteros, tuplas (con valores inmutables en sus miembros), etc. No hay restricciones para los valores contenidos en el diccionario; pueden ser listas, cadenas, tuplas, otros diccionarios, objetos, etc. Utilizando diccionarios.
  • 24. Se puede utilizar un diccionario, por ejemplo, para contar cuántas apariciones de cada palabra hay en un texto, o cuántas apariciones de cada letra. Es posible usarlo, para una agenda donde la clave es el nombre de la persona, y el valor es una lista con los datos correspondientes a esa persona. Utilizando diccionarios.
  • 25. También para mantener datos de alumnos inscritos en una materia. Siendo la clave el número de lista, y el valor una lista con todas las notas asociadas a ese alumno. En general, los diccionarios sirven para crear bases de datos muy simples, en las que la clave es el identificador del elemento, y el valor son todos los datos del elemento a considerar. Utilizando diccionarios.
  • 26. Para definirlo junto con los miembros que va a contener, se encierra el listado de valores entre llaves, las parejas de clave y valor se separan con comas, y la clave y el valor se separan con ’:’. punto = {’x’: 2, ’y’: 1, ’z’: 4} Utilizando diccionarios.
  • 27. Para declararlo vacío y luego ingresar los valores, se le declara como un par de llaves sin nada en medio, y luego se asignan valores directamente a los índices. materias = {} materias["lunes"] = [6103, 7540] materias["martes"] = [6201] materias["miércoles"] = [6103, 7540] materias["jueves"] = [] materias["viernes"] = [6201] Utilizando diccionarios.
  • 28. Para acceder al valor asociado a una determinada clave, se lo hace de la misma forma que con las listas, pero utilizando la clave elegida en lugar del índice. print materias["lunes"] Esto falla si se provee una clave que no está en el diccionario. Es posible, por otro lado, utilizar la función get, que devuelve el valor None si la clave no está en el diccionario, o un valor por omisión que se establece opcionalmente. Utilizando diccionarios.
  • 29. >>> print materias["domingo"] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: ’domingo’ >>> print materias.get("domingo") None >>> print materias.get("domingo", []) [] Utilizando diccionarios.
  • 30. Es posible recorrer sus claves y usar esas claves para acceder a los valores. for dia in materias: print dia, ":", materias[dia] Es posible, también, obtener los valores como tuplas donde el primer elemento es la clave y el segundo el valor. for dia, codigos in materias.items(): print dia, ":", codigos Utilizando diccionarios.
  • 31. Para verificar si una clave se encuentra en el diccionario, es posible utilizar la función has_key o la palabra reservada in. d = {’x’: 12, ’y’: 7} if d.has_key(’x’): print d[’x’] # Imprime 12 if d.has_key(’z’): print d[’z’] # No se ejecuta if ’y’ in d: print d[’y’] # Imprime 7 Utilizando diccionarios.
  • 32.  diccionario.keys(): Devuelve una lista desordenada, con todas las claves que se hayan ingresado al diccionario.  diccionario.values(): Devuelve una lista desordenada, con todos los valores que se hayan ingresado al diccionario.  diccionario.items(): Devuelve una lista desordenada con tuplas de dos elementos, en las que el primer elemento es la clave y el segundo el valor. Utilizando diccionarios.
  • 33.  diccionario.pop(clave): Devuelve el valor asociado a la clave, y elimina la clave y el valor asociado del diccionario.  diccionario.popitem(): Devuelve un elemento al azar del diccionario, representándolo como una tupla (clave, valor) y elimina esta pareja del diccionario.  diccionario.clear(): Elimina todos los elementos del diccionario. Utilizando diccionarios.