SlideShare une entreprise Scribd logo
1  sur  29
PYTHON Lección No. 4 M.Sc. Victor Pando Beltrán [email_address] http://www.civil-uancv.pe/aulavirtual
AGENDA ,[object Object],[object Object],[object Object],[object Object]
RECOMENDACIONES ,[object Object],[object Object],[object Object],[object Object]
Estructura de datos tipo lista   (1/6) Una lista es una colección de datos no necesariamente del mismo tipo que se  los accede por medio de subíndices. La diferencia fundamental de una lista con  una tupla es que podemos modificar la estructura luego de haberla creado. Hay varias formas de crear una lista, la primera y más sencilla es enumerar sus  elementos entre corchetes y separados por coma: lista1=['juan','ana','luis']  Para acceder a sus elementos lo hacemos indicando un subíndice subíndice:  print lista1[0]
Estructura de datos tipo lista (2/6) Como decíamos la diferencia con una tupla (son inmutables) es que podemos modificar la lista luego de creada:  lista1=[10,15,20]  print lista1  lista1[0]=700 #Modificamos el valor almacenado del primer componente de la lista.  print lista1  De forma similar a las tuplas y string la función len nos informa de la cantidad  de elementos que contiene la lista:  lista1=[10,15,20]  print len(lista1) # imprime un 3
Estructura de datos tipo lista (3/6) Es muy común emplear la estructura for in para recorrer y rescatar cada elemento de la lista, la variable elemento almacena en cada ciclo del for un elemento de la lista1, comenzando por el primer valor:  lista1=['juan',23,1.92]  for elemento in lista1:  print elemento  Si queremos saber si un valor se encuentra en una lista existe un operador  llamado in:  lista1=[12,45,1,2,5,4,3,55]  if 1 in lista1:  print 'El valor 1 está contenido en la lista '  else:  print 'El valor 1 no está contenido en la lista '  print lista1
Estructura de datos tipo lista (4/6) Python define los operadores + y * para listas, el primero genera otra lista con la suma de elementos de la primer y segunda lista. El operador * genera una lista que repite tantas veces los elementos de la lista como indica el valor entero seguido al operador *.  lista1=[2,4,6,8]  lista2=[10,12,14,16]  listatotal=lista1+lista2  print listatotal  Luego empleando el operador *:  lista1=['juan','carlos']  producto=lista1*3  print producto  El resultado de este algoritmo es: ['juan', 'carlos', 'juan', 'carlos', 'juan', 'carlos']
Estructura de datos tipo lista (5/6) También con listas podemos utilizar el concepto de porciones que nos brinda el lenguaje Python:  lista=[2,4,6,8,10]  print lista[2,4] #[6, 8]  print lista[:3] #[2, 4, 6]  print lista[3:] #[8, 10]  Como vimos podemos modificar el contenido de elementos de la lista  asignándole otro valor:  lista=[2,4,6]  lista[1]=10  print lista #[2, 10, 6]
Estructura de datos tipo lista (6/6) Podemos borrar elementos de la lista utilizando la función del:  lista=[2,4,6]  del(lista[1])  print lista #[2, 6]  Además podemos utilizar porciones para borrar un conjunto de elementos de  la lista:  lista=[2,4,6]  del(lista[1:])  print lista #[2]  También podemos añadir elementos a una lista:  lista=[5,10,11,12]  lista[1:1]=[6,7,8,9]  print lista #[5,6,7,8,9,10,11,12]
Problema resuelto Definir una lista con edades de personas, luego borrar todos los elementos que  sean menores a 18.  edades=[23,5,67,21,12,4,34]  indice=0  while indice<len(edades):  if edades[indice]<18:  del(edades[indice])  else:  indice=indice+1  print edades
Problema propuesto Definir una lista con un conjunto de nombres, imprimir la cantidad que comienzan  con la letra a:  nombres=['ariel','marcos','ana','luis','pedro','andres'] cant=0 for nom in nombres: if nom[0]=='a': cant=cant+1 print nombres print 'Cantidad de nombres que comienzan con a es:' print cant
Indices negativos en tuplas, listas y string   (1/2) Hemos visto que en Python accedemos a los elementos de una lista, tupla y  string mediante un subíndice que comienza a numerarse a partir de cero:  tupla=(2,4,6,8,10)  print tupla[0] # 2  lista=[2,4,6,8,10]  print lista[0] # 2  cadena='hola'  print cadena[0] # h  Si queremos acceder a la última componente podemos hacerlo:  tupla=(2,4,6,8,10)  print tupla[len(tupla)-1] # 10
Indices negativos en tuplas, listas y string   (2/2) Pero Pyton tiene integrado en el lenguaje el acceso de los elementos de la  secuencia mediante índices negativos, por ejemplo si queremos acceder a la  última componente luego podemos hacerlo con la siguiente sintaxis:  tupla=(2,4,6,8,10)  print tupla[-1] # 10  lista=[2,4,6,8,10]  print lista[-1] # 10  cadena='hola'  print cadena[-1] # a  Es mucho más cómodo utilizar esta segunda forma para acceder a los elementos  de una lista, tupla o cadena de caracteres. Si queremos imprimir los elementos de una tupla en forma inversa (es decir desde  el último elemento hasta el primero) podemos hacerlo con el siguiente algoritmo: tupla=(2,4,6,8,10)  indice=-1  for x in range(0,len(tupla)):  print tupla[indice] # 10 8 6 4 2  indice=indice-1
Problema resuelto Inicializar una variable con un valor aleatorio comprendido entre 1 y 1000000,  verificar si es capicúa, es decir si se lee igual de izquierda a derecha como de  derecha a izquierda.  import random valor=random.randint(1,1000000) print valor cadena=str(valor) indice=-1 iguales=0 for x in range(0,len(cadena)/2): if cadena[x]==cadena[indice]: iguales=iguales+1 indice=indice-1 if iguales==(len(cadena)/2): print 'Es capicua' else: print 'No es capicua'
Problema Propuesto Definir una lista con una serie de elementos. Intercambiar la información del primero con el último de la lista.  lista=['juan','ana','luis','pedro'] print lista aux=lista[0] lista[0]=lista[-1] lista[-1]=aux print lista
Estructura de datos tipo diccionario   (1/3) Las estructuras de datos vistas hasta ahora (tuplas y listas) utilizan un entero  como subíndice. La estructura de datos tipo diccionario utiliza una clave para  acceder a un valor. El subíndice puede ser un entero, un string etc. Un diccionario vincula una clave y un valor. Si queremos almacenar la cantidad de productos que tenemos en stock podemos  implementar un diccionario donde utilizamos como clave el nombre del producto y  como valor la cantidad de productos disponibles. Podemos definir un diccionario con la siguiente sintaxis: productos={'manzanas':23,'peras':50,'papas':120}  Luego si queremos acceder a la cantidad de productos en stock utilizamos como  subíndice el nombre del producto:  print productos['manzanas']
Estructura de datos tipo diccionario  (2/3) La línea anterior produce como resultado el valor 23. Mediante un diccionario asociamos para toda clave un valor. Podemos borrar cualquier entrada dentro del diccionario empleando la siguiente  sintaxis: del(productos['manzana'])  Luego si imprimimos el diccionario en forma completa tenemos como resultado  que ya no contiene la entrada 'manzana':  print productos  {'peras': 50, 'papas': 120}
Estructura de datos tipo diccionario  (3/3) Podemos modificar el valor asociado a una clave mediante una simple asignación:  productos['papas']=5  Luego si imprimimos el diccionario obtenemos como resultado:  {'peras': 50, 'papas': 5}  Podemos conocer en cualquier momento la cantidad de pares clave-valor que  contiene nuestro diccionario mediante la función len:  print len(productos)  Con nuestro problema tenemos como resultado que nuestro diccionario tiene  2 elementos.
Problema resuelto Crear un diccionario cuyas claves sean palabras en inglés y su valor almacena la  palabra traducida al castellano.  diccionario={'house':'casa','red':'rojo','bed':'cama','window':'ventana'}  print diccionario['house']  print diccionario['red']
Problema Propuesto Crear un diccionario asociando nombres de paises y cantidades de habitantes.  Imprimir luego el diccionario.  paises={‘peru':28000000,'españa':46000000,'brasil':190000000} print paises
Formato de cadenas de caracteres (string) (1/5) Cuando tenemos que combinar cadenas de caracteres e incorporarle valores  almacenados en otras variables el lenguaje Python nos suministra una técnica  para incrustar valores dentro de la cadena. Veamos mediante ejemplos cual es la sintaxis para plantear estos formatos de  cadenas: x1=10  x2=5  x3=20  print 'El contenido de x1 es %d, de x2 %d y de x3 %d' % (x1,x2,x3)  Si bien podemos utilizar el operador + para ir concatenando cadenas y variables  esta técnica hace que nuestro programa sea más legible sobre todo cuando  tenemos que sustituir varias variables dentro de una cadena. Primero indicamos entre comillas la cadena y utilizamos el símbolo % para indicar el lugar donde se sustituirá el valor, debemos indicar luego del carácter % el tipo  de dato (en nuestro ejemplo un valor decimal (d))
Formato de cadenas de caracteres (string) (2/5) Luego de la cadena debemos indicar una tupla con los valores o variables de  donde se obtendrán los datos. Entre la cadena de formato y la tupla debemos  disponer el caracter % (aquí el caracter porcentaje tiene un objetivo distinto que  dentro de la cadena de formato) Se especifican distintos caracteres para cada tipo de dato a sustituir:  x=10  g=10.2  cadena='juan'  print 'El valor entero %d el valor real %f y la cadena %s' % (x,g,cadena)  En el ejemplo propuesto vemos que podemos utilizar los caracteres de formato  d (decimal), f (float) y s (string). Es importante el orden de los valores de la tupla ya que el lenguaje procesa los  datos en forma secuencia, es decir cada vez que debe sustituir un valor en la  cadena extrae de la tupla el siguiente valor.
Formato de cadenas de caracteres (string) (3/5) Cuando damos formato a una variable real (con coma) podemos disponer dos  valores previos al carácter f:  g=20.5498  print 'El valor real es %10.2f' % (g)  El primer valor indica el largo total a reservar y el segundo la cantidad de decimales. Podemos convertir el valor decimal a tipo octal o hexadecimal: x=255  print 'Decimal %d en hexadecimal es %x y en octal %o' % (x,x,x)  #Decimal 255 en hexadecimal es ff y en octal 377  No es obligatorio que el formato de cadena se utilice siempre en un print, podemos  almacenar el resultado del formato en otra variable string (que podemos eventualmente  almacenarla en una base de datos por ejemplo).
Formato de cadenas de caracteres (string) (4/5) vx=10  vy=90  resultado='(%d,%d)' % (vx,vy)  print resultado # (10,90)  También podemos indicar un valor entero en el formato para los tipos de datos  enteros y string:  x1=100  x2=1500  x3=5  print '%5d' % (x1)  print '%5d' % (x2)  print '%5d' % (x3)  El resultado por pantalla es:  100  1500  5
Formato de cadenas de caracteres (string) (5/5) Es decir reserva en este caso 5 espacios para el entero y hace la alineación a  derecha. Si indicamos un valor negativo los datos se alínean a izquierda: animales=['perro','elefante','pez']  for elemento in animales:  print '%20s' % elemento f for elemento in animales:  print '%-20s' % elemento El resultado de ejecutar el programa es:  perro  elefante  pez  perro  elefante  pez
Problema resuelto Imprimir todos los números desde el 1 hasta 255 en decimal, octal y hexadecimal.  for num in range(1,256):  print '%3d %3o %3x' % (num,num,num)
Problema Propuesto Almacenar en una lista los nombres de personas y en otra los sueldos que cobran  cada uno. Hacer que para el índice cero de cada componente representen los  datos de una persona y así sucesivamente. Imprimir un nombre por línea de la pantalla y hacer que los sueldos aparezcan  correctamente alineados las columnas de unidades, decenas, centenas etc. nombres=['juan','ana','luis'] sueldos=[1500.55,2700.00,910.66] for indice in range(0,len(nombres)): print '%-20s  %10.2f' % (nombres[indice],sueldos[indice])
BIBLIOGRAFÍA ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 

Contenu connexe

Tendances (20)

Ejercicios Python parte 4
Ejercicios Python parte 4Ejercicios Python parte 4
Ejercicios Python parte 4
 
Maple v comandos
Maple v comandosMaple v comandos
Maple v comandos
 
01 el lenguaje Python
01 el lenguaje Python01 el lenguaje Python
01 el lenguaje Python
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 
Descubriendo scala
Descubriendo scalaDescubriendo scala
Descubriendo scala
 
41 Php. Bucles For
41 Php. Bucles For41 Php. Bucles For
41 Php. Bucles For
 
Funciones propias de visual basic
Funciones propias de visual basicFunciones propias de visual basic
Funciones propias de visual basic
 
Clase 6
Clase 6Clase 6
Clase 6
 
Guiaunidad iii
Guiaunidad iiiGuiaunidad iii
Guiaunidad iii
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamiento
 
Clase 1 - Python
Clase 1 - PythonClase 1 - Python
Clase 1 - Python
 
Mars
MarsMars
Mars
 
Problemas propuestos clase 0-1
Problemas propuestos  clase 0-1Problemas propuestos  clase 0-1
Problemas propuestos clase 0-1
 
Operadores
OperadoresOperadores
Operadores
 
Introduccions a java
Introduccions a javaIntroduccions a java
Introduccions a java
 
ADA # 4
ADA # 4ADA # 4
ADA # 4
 
Ejercicio propuesto 2
Ejercicio propuesto 2Ejercicio propuesto 2
Ejercicio propuesto 2
 
Lenguaje de programación c
Lenguaje de programación cLenguaje de programación c
Lenguaje de programación c
 
Python, te lo explico con peras y manzanas
Python, te lo explico con peras y manzanasPython, te lo explico con peras y manzanas
Python, te lo explico con peras y manzanas
 
Principales codigos visual basic
Principales codigos visual basicPrincipales codigos visual basic
Principales codigos visual basic
 

En vedette

La nueva publicidad
La nueva publicidadLa nueva publicidad
La nueva publicidadCarlos Aledo
 
2 av formación de palabras a partir de otras 1
2 av formación de palabras a partir de otras 12 av formación de palabras a partir de otras 1
2 av formación de palabras a partir de otras 1folpinacha
 
Panda Adaptive Defense - La evolución del malware
Panda Adaptive Defense - La evolución del malwarePanda Adaptive Defense - La evolución del malware
Panda Adaptive Defense - La evolución del malwarePanda Security
 
Panasonic KX-TG6711 Manual
Panasonic KX-TG6711 ManualPanasonic KX-TG6711 Manual
Panasonic KX-TG6711 Manualbest4systems
 
Valores para una buena práctica médica
Valores para una buena práctica médicaValores para una buena práctica médica
Valores para una buena práctica médicaKarla Is
 
Presentación Cognus
Presentación CognusPresentación Cognus
Presentación Cognusjptoma
 
“'Crowdsourcing': saber escuchar la voz del consumidor” (iBussines Global Con...
“'Crowdsourcing': saber escuchar la voz del consumidor” (iBussines Global Con...“'Crowdsourcing': saber escuchar la voz del consumidor” (iBussines Global Con...
“'Crowdsourcing': saber escuchar la voz del consumidor” (iBussines Global Con...Eduardo Prádanos Grijalvo
 
Análise Territorial da Praia de Faro
Análise Territorial da Praia de FaroAnálise Territorial da Praia de Faro
Análise Territorial da Praia de FaroRicardo da Palma
 
Chapter 2 Precipitation
Chapter 2 PrecipitationChapter 2 Precipitation
Chapter 2 Precipitationsuzilawatie
 
Royal IHC corporate presentation
Royal IHC corporate presentationRoyal IHC corporate presentation
Royal IHC corporate presentationRoyal IHC
 
5 claves para crecer mejorando su gestión administrativa
5 claves para crecer mejorando su gestión administrativa5 claves para crecer mejorando su gestión administrativa
5 claves para crecer mejorando su gestión administrativaGlobofran
 
Diario Resumen 20150519
Diario Resumen 20150519Diario Resumen 20150519
Diario Resumen 20150519Diario Resumen
 
El sistema digestivo con las tics
El sistema digestivo con las ticsEl sistema digestivo con las tics
El sistema digestivo con las ticsMileni Calvo Silva
 

En vedette (20)

La nueva publicidad
La nueva publicidadLa nueva publicidad
La nueva publicidad
 
Explicacion de ERPS
Explicacion de ERPS Explicacion de ERPS
Explicacion de ERPS
 
2 av formación de palabras a partir de otras 1
2 av formación de palabras a partir de otras 12 av formación de palabras a partir de otras 1
2 av formación de palabras a partir de otras 1
 
Panda Adaptive Defense - La evolución del malware
Panda Adaptive Defense - La evolución del malwarePanda Adaptive Defense - La evolución del malware
Panda Adaptive Defense - La evolución del malware
 
Panasonic KX-TG6711 Manual
Panasonic KX-TG6711 ManualPanasonic KX-TG6711 Manual
Panasonic KX-TG6711 Manual
 
Valores para una buena práctica médica
Valores para una buena práctica médicaValores para una buena práctica médica
Valores para una buena práctica médica
 
Presentación Cognus
Presentación CognusPresentación Cognus
Presentación Cognus
 
Abaka 2012-03-12
Abaka 2012-03-12Abaka 2012-03-12
Abaka 2012-03-12
 
Pirates a la vista!
Pirates a la vista!Pirates a la vista!
Pirates a la vista!
 
“'Crowdsourcing': saber escuchar la voz del consumidor” (iBussines Global Con...
“'Crowdsourcing': saber escuchar la voz del consumidor” (iBussines Global Con...“'Crowdsourcing': saber escuchar la voz del consumidor” (iBussines Global Con...
“'Crowdsourcing': saber escuchar la voz del consumidor” (iBussines Global Con...
 
Análise Territorial da Praia de Faro
Análise Territorial da Praia de FaroAnálise Territorial da Praia de Faro
Análise Territorial da Praia de Faro
 
Chapter 2 Precipitation
Chapter 2 PrecipitationChapter 2 Precipitation
Chapter 2 Precipitation
 
Royal IHC corporate presentation
Royal IHC corporate presentationRoyal IHC corporate presentation
Royal IHC corporate presentation
 
5 claves para crecer mejorando su gestión administrativa
5 claves para crecer mejorando su gestión administrativa5 claves para crecer mejorando su gestión administrativa
5 claves para crecer mejorando su gestión administrativa
 
Diario Resumen 20150519
Diario Resumen 20150519Diario Resumen 20150519
Diario Resumen 20150519
 
Esp.03.dzyan
Esp.03.dzyanEsp.03.dzyan
Esp.03.dzyan
 
El hipo.
El hipo.El hipo.
El hipo.
 
Presentación Jornada CYDESA
Presentación Jornada CYDESAPresentación Jornada CYDESA
Presentación Jornada CYDESA
 
Mijn Portfolio langs de Impact Meetlat 2016
Mijn Portfolio langs de Impact Meetlat 2016Mijn Portfolio langs de Impact Meetlat 2016
Mijn Portfolio langs de Impact Meetlat 2016
 
El sistema digestivo con las tics
El sistema digestivo con las ticsEl sistema digestivo con las tics
El sistema digestivo con las tics
 

Similaire à Python04

Taller listasyeasygui
Taller listasyeasyguiTaller listasyeasygui
Taller listasyeasyguiAlbert Page
 
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdfSesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdfMarxx4
 
Temas programacion java_2
Temas programacion java_2Temas programacion java_2
Temas programacion java_2Wally IG
 
9. listas y for-in
9.  listas y for-in9.  listas y for-in
9. listas y for-inFaby Ignacio
 
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).pdfvictorpedro20
 
Scala collections
Scala collectionsScala collections
Scala collectionscrissbal94
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programaciondiego MC
 
ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++die_dex
 
Apuntes Nº4 (TDA Estructuras Lineales).pptx
Apuntes Nº4 (TDA Estructuras Lineales).pptxApuntes Nº4 (TDA Estructuras Lineales).pptx
Apuntes Nº4 (TDA Estructuras Lineales).pptxCamilaCabrera47
 
Estructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - InformáticaEstructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - InformáticaJairoMaxKevinMartine
 
fundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.pptfundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.pptLDACORGANIZACION
 
estructura de datos y algoritmos repaso
estructura de  datos y algoritmos repasoestructura de  datos y algoritmos repaso
estructura de datos y algoritmos repasoricardosusa5
 

Similaire à Python04 (20)

Taller listasyeasygui
Taller listasyeasyguiTaller listasyeasygui
Taller listasyeasygui
 
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdfSesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
 
Listas
ListasListas
Listas
 
Temas programacion java_2
Temas programacion java_2Temas programacion java_2
Temas programacion java_2
 
9. listas y for-in
9.  listas y for-in9.  listas y for-in
9. listas y for-in
 
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
 
Scala collections
Scala collectionsScala collections
Scala collections
 
vectores y matrices2,2.pptx
vectores y matrices2,2.pptxvectores y matrices2,2.pptx
vectores y matrices2,2.pptx
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programacion
 
ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++
 
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
 
Excel martinez laura
Excel martinez lauraExcel martinez laura
Excel martinez laura
 
Apuntes Nº4 (TDA Estructuras Lineales).pptx
Apuntes Nº4 (TDA Estructuras Lineales).pptxApuntes Nº4 (TDA Estructuras Lineales).pptx
Apuntes Nº4 (TDA Estructuras Lineales).pptx
 
5-EDA-teo.ppt
5-EDA-teo.ppt5-EDA-teo.ppt
5-EDA-teo.ppt
 
5-EDA-teo.ppt
5-EDA-teo.ppt5-EDA-teo.ppt
5-EDA-teo.ppt
 
5-EDA-teo.ppt
5-EDA-teo.ppt5-EDA-teo.ppt
5-EDA-teo.ppt
 
Estructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - InformáticaEstructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - Informática
 
fundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.pptfundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.ppt
 
estructura de datos y algoritmos repaso
estructura de  datos y algoritmos repasoestructura de  datos y algoritmos repaso
estructura de datos y algoritmos repaso
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
 

Plus de Victor Pando

Análisis del Sector Metalmecánica
Análisis del Sector MetalmecánicaAnálisis del Sector Metalmecánica
Análisis del Sector MetalmecánicaVictor Pando
 
Video y Multimedia
Video y MultimediaVideo y Multimedia
Video y MultimediaVictor Pando
 
Panorama General de Open Office 3.0
Panorama General de Open Office 3.0Panorama General de Open Office 3.0
Panorama General de Open Office 3.0Victor Pando
 
Curso Básico de Windows XP
Curso Básico de Windows XPCurso Básico de Windows XP
Curso Básico de Windows XPVictor Pando
 
Tecnología Bluetooth
Tecnología BluetoothTecnología Bluetooth
Tecnología BluetoothVictor Pando
 
Redes WiFi 821.11 a vs. 802.11b
Redes WiFi 821.11 a vs. 802.11bRedes WiFi 821.11 a vs. 802.11b
Redes WiFi 821.11 a vs. 802.11bVictor Pando
 
Administración de Sistemas de Información
Administración de Sistemas de InformaciónAdministración de Sistemas de Información
Administración de Sistemas de InformaciónVictor Pando
 
Introducción al WAP
Introducción al WAPIntroducción al WAP
Introducción al WAPVictor Pando
 
Estado del Arte de Hardware y Software para Ingeniería Civil
Estado del Arte de Hardware y Software para Ingeniería CivilEstado del Arte de Hardware y Software para Ingeniería Civil
Estado del Arte de Hardware y Software para Ingeniería CivilVictor Pando
 

Plus de Victor Pando (11)

Análisis del Sector Metalmecánica
Análisis del Sector MetalmecánicaAnálisis del Sector Metalmecánica
Análisis del Sector Metalmecánica
 
Linux02
Linux02Linux02
Linux02
 
Python06
Python06Python06
Python06
 
Video y Multimedia
Video y MultimediaVideo y Multimedia
Video y Multimedia
 
Panorama General de Open Office 3.0
Panorama General de Open Office 3.0Panorama General de Open Office 3.0
Panorama General de Open Office 3.0
 
Curso Básico de Windows XP
Curso Básico de Windows XPCurso Básico de Windows XP
Curso Básico de Windows XP
 
Tecnología Bluetooth
Tecnología BluetoothTecnología Bluetooth
Tecnología Bluetooth
 
Redes WiFi 821.11 a vs. 802.11b
Redes WiFi 821.11 a vs. 802.11bRedes WiFi 821.11 a vs. 802.11b
Redes WiFi 821.11 a vs. 802.11b
 
Administración de Sistemas de Información
Administración de Sistemas de InformaciónAdministración de Sistemas de Información
Administración de Sistemas de Información
 
Introducción al WAP
Introducción al WAPIntroducción al WAP
Introducción al WAP
 
Estado del Arte de Hardware y Software para Ingeniería Civil
Estado del Arte de Hardware y Software para Ingeniería CivilEstado del Arte de Hardware y Software para Ingeniería Civil
Estado del Arte de Hardware y Software para Ingeniería Civil
 

Python04

  • 1. PYTHON Lección No. 4 M.Sc. Victor Pando Beltrán [email_address] http://www.civil-uancv.pe/aulavirtual
  • 2.
  • 3.
  • 4. Estructura de datos tipo lista (1/6) Una lista es una colección de datos no necesariamente del mismo tipo que se los accede por medio de subíndices. La diferencia fundamental de una lista con una tupla es que podemos modificar la estructura luego de haberla creado. Hay varias formas de crear una lista, la primera y más sencilla es enumerar sus elementos entre corchetes y separados por coma: lista1=['juan','ana','luis'] Para acceder a sus elementos lo hacemos indicando un subíndice subíndice: print lista1[0]
  • 5. Estructura de datos tipo lista (2/6) Como decíamos la diferencia con una tupla (son inmutables) es que podemos modificar la lista luego de creada: lista1=[10,15,20] print lista1 lista1[0]=700 #Modificamos el valor almacenado del primer componente de la lista. print lista1 De forma similar a las tuplas y string la función len nos informa de la cantidad de elementos que contiene la lista: lista1=[10,15,20] print len(lista1) # imprime un 3
  • 6. Estructura de datos tipo lista (3/6) Es muy común emplear la estructura for in para recorrer y rescatar cada elemento de la lista, la variable elemento almacena en cada ciclo del for un elemento de la lista1, comenzando por el primer valor: lista1=['juan',23,1.92] for elemento in lista1: print elemento Si queremos saber si un valor se encuentra en una lista existe un operador llamado in: lista1=[12,45,1,2,5,4,3,55] if 1 in lista1: print 'El valor 1 está contenido en la lista ' else: print 'El valor 1 no está contenido en la lista ' print lista1
  • 7. Estructura de datos tipo lista (4/6) Python define los operadores + y * para listas, el primero genera otra lista con la suma de elementos de la primer y segunda lista. El operador * genera una lista que repite tantas veces los elementos de la lista como indica el valor entero seguido al operador *. lista1=[2,4,6,8] lista2=[10,12,14,16] listatotal=lista1+lista2 print listatotal Luego empleando el operador *: lista1=['juan','carlos'] producto=lista1*3 print producto El resultado de este algoritmo es: ['juan', 'carlos', 'juan', 'carlos', 'juan', 'carlos']
  • 8. Estructura de datos tipo lista (5/6) También con listas podemos utilizar el concepto de porciones que nos brinda el lenguaje Python: lista=[2,4,6,8,10] print lista[2,4] #[6, 8] print lista[:3] #[2, 4, 6] print lista[3:] #[8, 10] Como vimos podemos modificar el contenido de elementos de la lista asignándole otro valor: lista=[2,4,6] lista[1]=10 print lista #[2, 10, 6]
  • 9. Estructura de datos tipo lista (6/6) Podemos borrar elementos de la lista utilizando la función del: lista=[2,4,6] del(lista[1]) print lista #[2, 6] Además podemos utilizar porciones para borrar un conjunto de elementos de la lista: lista=[2,4,6] del(lista[1:]) print lista #[2] También podemos añadir elementos a una lista: lista=[5,10,11,12] lista[1:1]=[6,7,8,9] print lista #[5,6,7,8,9,10,11,12]
  • 10. Problema resuelto Definir una lista con edades de personas, luego borrar todos los elementos que sean menores a 18. edades=[23,5,67,21,12,4,34] indice=0 while indice<len(edades): if edades[indice]<18: del(edades[indice]) else: indice=indice+1 print edades
  • 11. Problema propuesto Definir una lista con un conjunto de nombres, imprimir la cantidad que comienzan con la letra a: nombres=['ariel','marcos','ana','luis','pedro','andres'] cant=0 for nom in nombres: if nom[0]=='a': cant=cant+1 print nombres print 'Cantidad de nombres que comienzan con a es:' print cant
  • 12. Indices negativos en tuplas, listas y string (1/2) Hemos visto que en Python accedemos a los elementos de una lista, tupla y string mediante un subíndice que comienza a numerarse a partir de cero: tupla=(2,4,6,8,10) print tupla[0] # 2 lista=[2,4,6,8,10] print lista[0] # 2 cadena='hola' print cadena[0] # h Si queremos acceder a la última componente podemos hacerlo: tupla=(2,4,6,8,10) print tupla[len(tupla)-1] # 10
  • 13. Indices negativos en tuplas, listas y string (2/2) Pero Pyton tiene integrado en el lenguaje el acceso de los elementos de la secuencia mediante índices negativos, por ejemplo si queremos acceder a la última componente luego podemos hacerlo con la siguiente sintaxis: tupla=(2,4,6,8,10) print tupla[-1] # 10 lista=[2,4,6,8,10] print lista[-1] # 10 cadena='hola' print cadena[-1] # a Es mucho más cómodo utilizar esta segunda forma para acceder a los elementos de una lista, tupla o cadena de caracteres. Si queremos imprimir los elementos de una tupla en forma inversa (es decir desde el último elemento hasta el primero) podemos hacerlo con el siguiente algoritmo: tupla=(2,4,6,8,10) indice=-1 for x in range(0,len(tupla)): print tupla[indice] # 10 8 6 4 2 indice=indice-1
  • 14. Problema resuelto Inicializar una variable con un valor aleatorio comprendido entre 1 y 1000000, verificar si es capicúa, es decir si se lee igual de izquierda a derecha como de derecha a izquierda. import random valor=random.randint(1,1000000) print valor cadena=str(valor) indice=-1 iguales=0 for x in range(0,len(cadena)/2): if cadena[x]==cadena[indice]: iguales=iguales+1 indice=indice-1 if iguales==(len(cadena)/2): print 'Es capicua' else: print 'No es capicua'
  • 15. Problema Propuesto Definir una lista con una serie de elementos. Intercambiar la información del primero con el último de la lista. lista=['juan','ana','luis','pedro'] print lista aux=lista[0] lista[0]=lista[-1] lista[-1]=aux print lista
  • 16. Estructura de datos tipo diccionario (1/3) Las estructuras de datos vistas hasta ahora (tuplas y listas) utilizan un entero como subíndice. La estructura de datos tipo diccionario utiliza una clave para acceder a un valor. El subíndice puede ser un entero, un string etc. Un diccionario vincula una clave y un valor. Si queremos almacenar la cantidad de productos que tenemos en stock podemos implementar un diccionario donde utilizamos como clave el nombre del producto y como valor la cantidad de productos disponibles. Podemos definir un diccionario con la siguiente sintaxis: productos={'manzanas':23,'peras':50,'papas':120} Luego si queremos acceder a la cantidad de productos en stock utilizamos como subíndice el nombre del producto: print productos['manzanas']
  • 17. Estructura de datos tipo diccionario (2/3) La línea anterior produce como resultado el valor 23. Mediante un diccionario asociamos para toda clave un valor. Podemos borrar cualquier entrada dentro del diccionario empleando la siguiente sintaxis: del(productos['manzana']) Luego si imprimimos el diccionario en forma completa tenemos como resultado que ya no contiene la entrada 'manzana': print productos {'peras': 50, 'papas': 120}
  • 18. Estructura de datos tipo diccionario (3/3) Podemos modificar el valor asociado a una clave mediante una simple asignación: productos['papas']=5 Luego si imprimimos el diccionario obtenemos como resultado: {'peras': 50, 'papas': 5} Podemos conocer en cualquier momento la cantidad de pares clave-valor que contiene nuestro diccionario mediante la función len: print len(productos) Con nuestro problema tenemos como resultado que nuestro diccionario tiene 2 elementos.
  • 19. Problema resuelto Crear un diccionario cuyas claves sean palabras en inglés y su valor almacena la palabra traducida al castellano. diccionario={'house':'casa','red':'rojo','bed':'cama','window':'ventana'} print diccionario['house'] print diccionario['red']
  • 20. Problema Propuesto Crear un diccionario asociando nombres de paises y cantidades de habitantes. Imprimir luego el diccionario. paises={‘peru':28000000,'españa':46000000,'brasil':190000000} print paises
  • 21. Formato de cadenas de caracteres (string) (1/5) Cuando tenemos que combinar cadenas de caracteres e incorporarle valores almacenados en otras variables el lenguaje Python nos suministra una técnica para incrustar valores dentro de la cadena. Veamos mediante ejemplos cual es la sintaxis para plantear estos formatos de cadenas: x1=10 x2=5 x3=20 print 'El contenido de x1 es %d, de x2 %d y de x3 %d' % (x1,x2,x3) Si bien podemos utilizar el operador + para ir concatenando cadenas y variables esta técnica hace que nuestro programa sea más legible sobre todo cuando tenemos que sustituir varias variables dentro de una cadena. Primero indicamos entre comillas la cadena y utilizamos el símbolo % para indicar el lugar donde se sustituirá el valor, debemos indicar luego del carácter % el tipo de dato (en nuestro ejemplo un valor decimal (d))
  • 22. Formato de cadenas de caracteres (string) (2/5) Luego de la cadena debemos indicar una tupla con los valores o variables de donde se obtendrán los datos. Entre la cadena de formato y la tupla debemos disponer el caracter % (aquí el caracter porcentaje tiene un objetivo distinto que dentro de la cadena de formato) Se especifican distintos caracteres para cada tipo de dato a sustituir: x=10 g=10.2 cadena='juan' print 'El valor entero %d el valor real %f y la cadena %s' % (x,g,cadena) En el ejemplo propuesto vemos que podemos utilizar los caracteres de formato d (decimal), f (float) y s (string). Es importante el orden de los valores de la tupla ya que el lenguaje procesa los datos en forma secuencia, es decir cada vez que debe sustituir un valor en la cadena extrae de la tupla el siguiente valor.
  • 23. Formato de cadenas de caracteres (string) (3/5) Cuando damos formato a una variable real (con coma) podemos disponer dos valores previos al carácter f: g=20.5498 print 'El valor real es %10.2f' % (g) El primer valor indica el largo total a reservar y el segundo la cantidad de decimales. Podemos convertir el valor decimal a tipo octal o hexadecimal: x=255 print 'Decimal %d en hexadecimal es %x y en octal %o' % (x,x,x) #Decimal 255 en hexadecimal es ff y en octal 377 No es obligatorio que el formato de cadena se utilice siempre en un print, podemos almacenar el resultado del formato en otra variable string (que podemos eventualmente almacenarla en una base de datos por ejemplo).
  • 24. Formato de cadenas de caracteres (string) (4/5) vx=10 vy=90 resultado='(%d,%d)' % (vx,vy) print resultado # (10,90) También podemos indicar un valor entero en el formato para los tipos de datos enteros y string: x1=100 x2=1500 x3=5 print '%5d' % (x1) print '%5d' % (x2) print '%5d' % (x3) El resultado por pantalla es: 100 1500 5
  • 25. Formato de cadenas de caracteres (string) (5/5) Es decir reserva en este caso 5 espacios para el entero y hace la alineación a derecha. Si indicamos un valor negativo los datos se alínean a izquierda: animales=['perro','elefante','pez'] for elemento in animales: print '%20s' % elemento f for elemento in animales: print '%-20s' % elemento El resultado de ejecutar el programa es: perro elefante pez perro elefante pez
  • 26. Problema resuelto Imprimir todos los números desde el 1 hasta 255 en decimal, octal y hexadecimal. for num in range(1,256): print '%3d %3o %3x' % (num,num,num)
  • 27. Problema Propuesto Almacenar en una lista los nombres de personas y en otra los sueldos que cobran cada uno. Hacer que para el índice cero de cada componente representen los datos de una persona y así sucesivamente. Imprimir un nombre por línea de la pantalla y hacer que los sueldos aparezcan correctamente alineados las columnas de unidades, decenas, centenas etc. nombres=['juan','ana','luis'] sueldos=[1500.55,2700.00,910.66] for indice in range(0,len(nombres)): print '%-20s %10.2f' % (nombres[indice],sueldos[indice])
  • 28.
  • 29.