Sie sind auf Seite 1von 3

Programacin I

Tcnico en Programacin

Estructuras de datos
Las estructuras de datos son estructuras que renen una cantidad de variables de determinada
forma para poder procesar ms fcilmente un conjunto de datos.
A las estructuras de datos las podemos clasificar en estructuras lineales y no lineales. Las
estructuras lineales que posee el lenguaje Python son las listas, tuplas y cadenas (strings) y las
estructuras de datos no lineales son los diccionarios.
Las estructuras de datos lineales se denominan as porque almacenan los datos en forma
consecutiva, es decir, secuencialmente, un dato despus de otro y se acceden unitariamente a los
datos por la posicin fsica que el dato ocupa dentro de la estructura; las posiciones fsicas se
comienzan a contar siempre desde el valor 0, es decir, que el primer elemento almacenado se
encuentra ubicado en la posicin 0, el siguiente est en la posicin 1, y as siguiendo.
Un diccionario es una estructura en la que el dato que se almacena est definido por un par clave:
valor. En un diccionario los datos se acceden por el valor de la clave, este hecho hace que no
sepamos cmo estn distribudos los elmentos dentro de un diccionario. Al diccionario lo podemos
comparar con un diccionario del idiona castellano donde la clave es la palabra y el valor es la
definicin de esa palabra.
A continuacin vamos a hacer un programa que cuente las vocales ('a','e','i','o','u') en un texto
mostrando varias formas distintas de encarar la solucin.
Solucin 1: forma usual
def contarVocales(texto):
conta = 0
conte = 0
conti = 0
conto = 0
contu = 0
for i in texto:
if i == 'a':
conta += 1
elif i == 'e':
conte += 1
elif i == 'i':
conti += 1
elif i == 'o':
conto += 1
elif i == 'u':
contu += 1
return (conta,conte,conti,conto,contu)
print contarVocales("esto es un ejemplo")

Programacin I

Tcnico en Programacin

En esta solucin se estn usando 5 contadores, uno para cada vocal y la funcin retorna una tupla
formada por los cinco contadores.
En las soluciones que siguen a continuacin lo que se intenta mejorar con respecto a esta solucin
es la cantidad de variables que se manipulan en el programa.
Solucin 2: Usando listas
def contarVocales (texto):
contadores = [0,0,0,0,0]
for i in texto:
if i in "aeiou":
indice = "aeiou".index(i)
contadores [indice] +=1
return contadores
print contarVocales("esto es un ejemplo")
En esta solucin se ha usado la lista contadores de cinco posiciones inicializadas en 0 para poder
usar cada elemento como contador. La sentencia indice = "aeiou".index(i) encuentra
la posicin que le corresponde a cada vocal para poder subindicarnos en la lista en la posicin
correcta pero necesita que la letra exista en la secuencia "aeiou". La funcin find() hace lo mismo
que index() pero el cdigo listado a continuacin no da el resultado deseado, por qu?
def contarVocales (texto):
contadores = [0,0,0,0,0]
for i in texto:
indice = "aeiou".find(i)
contadores [indice] +=1
return contadores
Solucin 3: Usando un diccionario
def contarVocales(texto):
contadores = {"a":0,"e":0,"i":0,"o":0,"u":0}
for i in texto:
if i in contadores.keys():
contadores[i] += 1
return contadores
print contarVocales("esto es un ejemplo")
En esta versin est usando un diccionario donde las claves son las vocales y el valor de cada clave
son los contadores. La sentencia contadores.keys()retorna una lista con las claves y la
sentencia contadores = {"a":0,"e":0,"i":0,"o":0,"u":0} inicializa los cinco
contadores. Si neceitamos inicializar 26 contadores uno para cada letra del alfabeto, enumerar cada
letra desde la "a" a la "z" es un trabajo arduo pero se puede hacer de la siguiente forma:
contadores = {}
for i in range (ord('a'),ord('z')+1):

Programacin I

Tcnico en Programacin

contadores[chr(i)] = 0
tambin podemos usar la notacin concisa de las listas para hacer lo mismo con un diccionario:
{chr(i):0 for i in range(ord('a'),ord('z')+1) }

Das könnte Ihnen auch gefallen