Durante esta actividad, los alumnos serán capaces de:
Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.
Esta actividad puede ser elaborada de manera individual o en parejas.
A partir de la clase LinkedList elaborada en clase (ver código fuente) escribe los métodos que se describen a continuación. Coloca todos los métodos en un archivo llamado linked_list.py. En la parte superior del archivo coloca en comentarios los datos personales de los autores de la tarea. Por ejemplo:
#-------------------------------------------------------------------- # Actividad de programación: Listas encadenadas # Fecha: 12-Oct-2012 # Autores: # 1166611 Pepper Pots # 1160611 Anthony Stark #--------------------------------------------------------------------
__getitem__(self, index): Devuelve el elemento en la posición index de esta lista (el primer elemento está en la posición 0). Este método es invocado automáticamente por Python cuando se evalúa la expresión: self[index]. Arroja la excepción TypeError si index no es de tipo entero. Arroja la excepción IndexError si index < 0 o si index ≥ len(self).
Ejemplos:
>>> x = LinkedList()
>>> x.insert_back('a')
>>> x.insert_back('b')
>>> x.insert_back('c')
>>> x[0]
'a'
>>> x[2]
'c'
>>> x[True]
...
TypeError: El índice debe ser un número entero
>>> x[3]
...
IndexError: El índice está fuera de rango
__setitem__(self, index, value): Asigna value a esta lista en la posición index (el primer elemento está en la posición 0). Este método es invocado automáticamente por Python cuando se ejecuta el enunciado: self[index]=value. Arroja las mismas excepciones que __getitem__.
Ejemplos:
>>> x = LinkedList()
>>> x.insert_back('a')
>>> x.insert_back('b')
>>> x.insert_back('c')
>>> x
['a', 'b', 'c']
>>> x[1] = 'z'
>>> x
['a', 'z', 'c']
>>> x[True] = 'w'
...
TypeError: El índice debe ser un número entero
>>> x[3] = 'w'
...
IndexError: El índice está fuera de rango
__contains__(self, item): Devuelve True si item está contenido en esta lista, o False en caso contrario. Este método es invocado automáticamente por Python cuando se evalúa la expresión: item in self.
Ejemplos:
>>> x = LinkedList()
>>> x.insert_back('a')
>>> x.insert_back('b')
>>> x.insert_back('c')
>>> 'b' in x
True
>>> 'z' in x
False
index(self, item): Devuelve el índice de la primera ocurrencia de item en esta lista. Arroja la excepción ValueError si la lista no contiene a item.
Ejemplos:
>>> x = LinkedList()
>>> x.insert_back('a')
>>> x.insert_back('b')
>>> x.insert_back('c')
>>> x.index('b')
1
>>> x.index('z')
...
ValueError: 'z' no está en la lista
count(self, item): Devuelve el número de veces que aparece item en esta lista.
Ejemplos:
>>> x = LinkedList()
>>> x.insert_back('a')
>>> x.insert_back('b')
>>> x.insert_back('a')
>>> x.insert_back('c')
>>> x.insert_back('a')
>>> x.count('a')
3
>>> x.count('z')
0
__delitem__(self, index): Elimina de esta lista el elemento en la posición index. Los elementos de la posición index+1 en adelante se recorren una posición hacia abajo. Este método es invocado automáticamente por Python cuando se evalúa la expresión: del self[index]. Arroja las mismas excepciones que __getitem__.
Ejemplos:
>>> x = LinkedList()
>>> x.insert_back('a')
>>> x.insert_back('b')
>>> x.insert_back('c')
>>> x
['a', 'b', 'c']
>>> del x[0]
>>> x
['b', 'c']
>>> del x[1]
>>> x
['b']
>>> del x[0]
>>> x
[]
>>> del x[True]
...
TypeError: El índice debe ser un número entero
>>> del x[0]
...
IndexError: El índice está fuera de rango
insert(self, index, value): Inserta en esta lista un nuevo nodo con value en la posición index. Los elementos de la posición index en adelante se recorren una posición hacia arriba. Si index ≥ len(self) se inserta value al final. Si index < 0 se inserta value al inicio.
Ejemplos:
>>> x = LinkedList()
>>> x.insert_back('a')
>>> x.insert_back('b')
>>> x.insert_back('c')
>>> x
['a', 'b', 'c']
>>> x.insert(1, 'z')
>>> x
['a', 'z', 'b', 'c']
>>> x.insert(10, 'w')
>>> x
['a', 'z', 'b', 'c', 'w']
>>> x.insert(-10, 'u')
>>> x
['u', 'a', 'z', 'b', 'c', 'w']
remove(self, item): Elimina de esta lista el nodo que contiene la primera ocurrencia del elemento item. Arroja la excepción ValueError si la lista no contiene a item.
Ejemplos:
>>> x = LinkedList()
>>> x.insert_back('a')
>>> x.insert_back('b')
>>> x.insert_back('c')
>>> x
['a', 'b', 'c']
>>> x.remove('c')
>>> x
['a', 'b']
>>> x.remove('a')
>>> x
['b']
>>> x.remove('b')
>>> x
[]
>>> x.remove('a')
...
ValueError: 'a' no está en la lista
Sube el archivo linked_list.py usando el Sistema de Entrega de Tareas Automatizado. No se aceptan tareas por ningún otro medio.
Fecha límite: Viernes, 12 de octubre.
Esta actividad será evaluada usando los siguientes criterios:
| 100 | La actividad cumple con todos los requerimientos. |
|---|---|
| -10 | No se incluyó en comentario los datos de los autores. |
| 10 | El programa fuente contiene errores sintácticos. |
| 50-90 | El programa produce algunos errores al momento de correrlo. |
| DA | La solución es un plagio. |