Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Withnall <philip@tecnocode.co.uk>2013-08-25 20:45:11 (GMT)
committer Philip Withnall <philip@tecnocode.co.uk>2013-08-25 20:45:11 (GMT)
commiteb84ab541306f17cf211b4b6223e5adf65af0c45 (patch)
treefcab78a7e4b47068ac9937b00d61656ffcc84b4a
parentaae0e36cb0e4f551242fd27db25041dc67865e7a (diff)
Add Spanish versions of the part 2 exercises
-rw-r--r--exercises/es/10_def.py34
-rw-r--r--exercises/es/10_def_solucion.py51
-rw-r--r--exercises/es/11_recursividad.py28
-rw-r--r--exercises/es/11_recursividad_solucion.py33
-rw-r--r--exercises/es/12_crear-clase.py44
-rw-r--r--exercises/es/12_crear-clase_solucion.py64
-rw-r--r--exercises/es/13_extender-clase.py37
-rw-r--r--exercises/es/13_extender-clase_solucion.py73
-rw-r--r--exercises/es/14_propriedad.py50
-rw-r--r--exercises/es/14_propriedad_solucion.py53
-rw-r--r--exercises/es/15_métodos-privadas.py52
-rw-r--r--exercises/es/15_métodos-privadas_solucion.py55
12 files changed, 574 insertions, 0 deletions
diff --git a/exercises/es/10_def.py b/exercises/es/10_def.py
new file mode 100644
index 0000000..b68fe44
--- /dev/null
+++ b/exercises/es/10_def.py
@@ -0,0 +1,34 @@
+#!/usr/bin/python
+# coding=utf-8
+
+import math
+
+"""Definir una función para el cálculo de la media aritmética de una lista de
+enteros.
+
+Debe definir una nueva función, arithmetic_mean, que tiene una lista de enteros
+como único parámetro, y devuelve un solo número de punto flotante que es la
+media aritmética.
+
+Recuerde documentar su función mediante una docstring!
+
+Extensión: Definir una segunda función, geometric_mean, que tiene el mismo
+parámetro, pero que devuelve un solo número de punto flotante que es la
+media geométrica de los parámetros:
+http://es.wikipedia.org/wiki/Media_geométrica. Para ello, tendrá la función
+math.pow().
+"""
+
+# Defina sus funciónes aquí.
+
+# Código de probar sus funciónes. No modifique nada por debajo de esta línea.
+assert(arithmetic_mean([5]) == 5)
+assert(arithmetic_mean([1, 2, 3]) == 2)
+assert(arithmetic_mean([2, 2, 2]) == 2)
+assert(arithmetic_mean.__doc__ is not None)
+
+if geometric_mean is not None:
+ assert(geometric_mean([5]) == 5)
+ assert(geometric_mean([2, 2]) == 2)
+ assert(geometric_mean([1, 2, 3]) == pow(6, 1.0 / 3.0))
+ assert(geometric_mean.__doc__ is not None)
diff --git a/exercises/es/10_def_solucion.py b/exercises/es/10_def_solucion.py
new file mode 100644
index 0000000..460481f
--- /dev/null
+++ b/exercises/es/10_def_solucion.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python
+# coding=utf-8
+
+import math
+
+"""Definir una función para el cálculo de la media aritmética de una lista de
+enteros.
+
+Debe definir una nueva función, arithmetic_mean, que tiene una lista de enteros
+como único parámetro, y devuelve un solo número de punto flotante que es la
+media aritmética.
+
+Recuerde documentar su función mediante una docstring!
+
+Extensión: Definir una segunda función, geometric_mean, que tiene el mismo
+parámetro, pero que devuelve un solo número de punto flotante que es la
+media geométrica de los parámetros:
+http://es.wikipedia.org/wiki/Media_geométrica. Para ello, tendrá la función
+math.pow().
+"""
+
+def arithmetic_mean(number_list):
+ """Calcular la media aritmética de la lista entero de entrada."""
+ total = 0
+ count = 0
+ for i in number_list:
+ total += i
+ count += 1
+ return float(total) / count
+
+def geometric_mean(number_list):
+ """Calcular la media geométrica de la lista entero de entrada."""
+ product = 1
+ count = 0
+ for i in number_list:
+ product *= i
+ count += 1
+ return pow(product, 1.0 / float(count))
+
+
+# Código de probar sus funciónes. No modifique nada por debajo de esta línea.
+assert(arithmetic_mean([5]) == 5)
+assert(arithmetic_mean([1, 2, 3]) == 2)
+assert(arithmetic_mean([2, 2, 2]) == 2)
+assert(arithmetic_mean.__doc__ is not None)
+
+if geometric_mean is not None:
+ assert(geometric_mean([5]) == 5)
+ assert(geometric_mean([2, 2]) == 2)
+ assert(geometric_mean([1, 2, 3]) == pow(6, 1.0 / 3.0))
+ assert(geometric_mean.__doc__ is not None)
diff --git a/exercises/es/11_recursividad.py b/exercises/es/11_recursividad.py
new file mode 100644
index 0000000..e1db33f
--- /dev/null
+++ b/exercises/es/11_recursividad.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Definir una función recursiva para calcular el máximo común denominador.
+
+Debe definir una nueva función, mcd (que significa "máximo común denominador"),
+que toma dos enteros como parámetros y devuelve un entero que es el máximo común
+denominador de los dos. Este es el número entero más grande que divide los dos
+números de manera uniforme.
+
+Una manera fácil de implementar esto es usar el algoritmo de Euclides:
+ http://es.wikipedia.org/wiki/Algoritmo_de_Euclides
+
+Su función debe ser implementado utilizando recursividad.
+
+Recuerde documentar su función mediante una docstring!
+"""
+
+# Escribe su nuevo función aquí.
+
+
+# Código para probar su función. No modifique nada por debajo de esta línea.
+assert(mcd(1, 1) == 1)
+assert(mcd(10, 12) == 2)
+assert(mcd(12, 10) == 2)
+assert(mcd(5, 0) == 5)
+assert(mcd(0, 5) == 5)
+assert(mcd.__doc__ is not None)
diff --git a/exercises/es/11_recursividad_solucion.py b/exercises/es/11_recursividad_solucion.py
new file mode 100644
index 0000000..7479b07
--- /dev/null
+++ b/exercises/es/11_recursividad_solucion.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Definir una función recursiva para calcular el máximo común denominador.
+
+Debe definir una nueva función, mcd (que significa "máximo común denominador"),
+que toma dos enteros como parámetros y devuelve un entero que es el máximo común
+denominador de los dos. Este es el número entero más grande que divide los dos
+números de manera uniforme.
+
+Una manera fácil de implementar esto es usar el algoritmo de Euclides:
+ http://es.wikipedia.org/wiki/Algoritmo_de_Euclides
+
+Su función debe ser implementado utilizando recursividad.
+
+Recuerde documentar su función mediante una docstring!
+"""
+
+def mcd(x, y):
+ """Calcular el máximo común denominador de x e y."""
+ if y == 0:
+ return x
+ else:
+ return mcd(y, x % y)
+
+
+# # Código para probar su función. No modifique nada por debajo de esta línea.
+assert(mcd(1, 1) == 1)
+assert(mcd(10, 12) == 2)
+assert(mcd(12, 10) == 2)
+assert(mcd(5, 0) == 5)
+assert(mcd(0, 5) == 5)
+assert(mcd.__doc__ is not None)
diff --git a/exercises/es/12_crear-clase.py b/exercises/es/12_crear-clase.py
new file mode 100644
index 0000000..bcf499f
--- /dev/null
+++ b/exercises/es/12_crear-clase.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Defina una clase RegularPolygon que implementa algunos métodos
+especificados.
+
+Debe definir una nueva clase, RegularPolygon, para representar un polígono
+regular arbitraria. Debe tener los siguientes métodos:
+ - __init__(self, lados): que almacena el número de lados del polígono tiene
+ en una variable en la clase
+ - get_name(self): que siempre vuelve "Desconocido polígono" (que se utilizará
+ en el ejercicio 13)
+ - get_sides(self): que devuelve el número de lados del polígono
+ - get_interior_angle(self): que devuelve el tamaño (en grados) de un único
+ ángulo interno en el polígono (por ejemplo, 60
+ para un triángulo, 90 para un cuadrado, etc)
+ - get_total_interior_angles(self): que devuelve el ángulo interno total en el
+ polígono en grados (por ejemplo, 180 para
+ un triángulo, 360 para un cuadrado, etc)
+
+Recuerde documentar su clase y todos sus métodos utilizando docstrings!
+"""
+
+# Escribe su clase aquí.
+
+
+# Código de probar su clase. No modifique nada por debajo de esta línea.
+triangle = RegularPolygon(3)
+assert(triangle.get_name() == 'Desconocido polígono')
+assert(triangle.get_sides() == 3)
+assert(triangle.get_interior_angle() == 60)
+assert(triangle.get_total_interior_angle() == 180)
+
+square = RegularPolygon(4)
+assert(square.get_name() == 'Desconocido polígono')
+assert(square.get_sides() == 4)
+assert(square.get_interior_angle() == 90)
+assert(square.get_total_interior_angle() == 360)
+
+assert(RegularPolygon.__doc__ is not None)
+assert(RegularPolygon.get_name.__doc__ is not None)
+assert(RegularPolygon.get_sides.__doc__ is not None)
+assert(RegularPolygon.get_interior_angle.__doc__ is not None)
+assert(RegularPolygon.get_total_interior_angle.__doc__ is not None)
diff --git a/exercises/es/12_crear-clase_solucion.py b/exercises/es/12_crear-clase_solucion.py
new file mode 100644
index 0000000..cb62abe
--- /dev/null
+++ b/exercises/es/12_crear-clase_solucion.py
@@ -0,0 +1,64 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Defina una clase RegularPolygon que implementa algunos métodos
+especificados.
+
+Debe definir una nueva clase, RegularPolygon, para representar un polígono
+regular arbitraria. Debe tener los siguientes métodos:
+ - __init__(self, lados): que almacena el número de lados del polígono tiene
+ en una variable en la clase
+ - get_name(self): que siempre vuelve "Desconocido polígono" (que se utilizará
+ en el ejercicio 13)
+ - get_sides(self): que devuelve el número de lados del polígono
+ - get_interior_angle(self): que devuelve el tamaño (en grados) de un único
+ ángulo interno en el polígono (por ejemplo, 60
+ para un triángulo, 90 para un cuadrado, etc)
+ - get_total_interior_angles(self): que devuelve el ángulo interno total en el
+ polígono en grados (por ejemplo, 180 para
+ un triángulo, 360 para un cuadrado, etc)
+
+Recuerde documentar su clase y todos sus métodos utilizando docstrings!
+"""
+
+class RegularPolygon(object):
+ """Un polígono regular con un número determinado de lados."""
+ def __init__(self, sides):
+ self._sides = sides
+
+ def get_name(self):
+ """Obtener el nombre legible del polígono."""
+ return 'Desconocido polígono'
+
+ def get_sides(self):
+ """Obtener el número de lados del polígono."""
+ return self._sides
+
+ def get_interior_angle(self):
+ """Obtener un solo ángulo interior, en grados."""
+ return 180 - (360 / self._sides)
+
+ def get_total_interior_angle(self):
+ """Obtener la suma de los ángulos interiores en el polígono, en
+ grados."""
+ return self._sides * self.get_interior_angle()
+
+
+# Código de probar su clase. No modifique nada por debajo de esta línea.
+triangle = RegularPolygon(3)
+assert(triangle.get_name() == 'Desconocido polígono')
+assert(triangle.get_sides() == 3)
+assert(triangle.get_interior_angle() == 60)
+assert(triangle.get_total_interior_angle() == 180)
+
+square = RegularPolygon(4)
+assert(square.get_name() == 'Desconocido polígono')
+assert(square.get_sides() == 4)
+assert(square.get_interior_angle() == 90)
+assert(square.get_total_interior_angle() == 360)
+
+assert(RegularPolygon.__doc__ is not None)
+assert(RegularPolygon.get_name.__doc__ is not None)
+assert(RegularPolygon.get_sides.__doc__ is not None)
+assert(RegularPolygon.get_interior_angle.__doc__ is not None)
+assert(RegularPolygon.get_total_interior_angle.__doc__ is not None)
diff --git a/exercises/es/13_extender-clase.py b/exercises/es/13_extender-clase.py
new file mode 100644
index 0000000..c6885c0
--- /dev/null
+++ b/exercises/es/13_extender-clase.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Definir clases Triangle y Square que se extienden RegularPolygon.
+
+Debe definir dos nuevas clases, Triangle y Square, que representan triángulos
+regulares y cuadrados. Ambos deben heredar de RegularPolygon.
+
+Además de contar con todos los métodos de RegularPolygon, que más prevalecen
+tanto el método de RegularPolygon get_name() para que devuelva 'Triángulo' o
+'Cuadrado' en vez de 'Desconocido polígono'.
+
+Recuerde documentar sus clases y sus métodos utilizando docstrings!
+"""
+
+# Copie la clase RegularPolygon del ejercicio anterior aquí, sin modificar.
+
+# Añada sus nuevas clases hijas aquí.
+
+
+# Código de probar sus clases. No modifique nada por debajo de esta línea.
+triangle = Triangle()
+assert(triangle.get_name() == 'Triángulo')
+assert(triangle.get_sides() == 3)
+assert(triangle.get_interior_angle() == 60)
+assert(triangle.get_total_interior_angle() == 180)
+
+square = Square()
+assert(square.get_name() == 'Cuadrado')
+assert(square.get_sides() == 4)
+assert(square.get_interior_angle() == 90)
+assert(square.get_total_interior_angle() == 360)
+
+assert(Triangle.__doc__ is not None)
+assert(Triangle.get_name.__doc__ is not None)
+assert(Square.__doc__ is not None)
+assert(Square.get_name.__doc__ is not None)
diff --git a/exercises/es/13_extender-clase_solucion.py b/exercises/es/13_extender-clase_solucion.py
new file mode 100644
index 0000000..f0b41e0
--- /dev/null
+++ b/exercises/es/13_extender-clase_solucion.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Definir clases Triangle y Square que se extienden RegularPolygon.
+
+Debe definir dos nuevas clases, Triangle y Square, que representan triángulos
+regulares y cuadrados. Ambos deben heredar de RegularPolygon.
+
+Además de contar con todos los métodos de RegularPolygon, que más prevalecen
+tanto el método de RegularPolygon get_name() para que devuelva 'Triángulo' o
+'Cuadrado' en vez de 'Desconocido polígono'.
+
+Recuerde documentar sus clases y sus métodos utilizando docstrings!
+"""
+
+class RegularPolygon(object):
+ """Un polígono regular con un número determinado de lados."""
+ def __init__(self, sides):
+ self._sides = sides
+
+ def get_name(self):
+ """Obtener el nombre legible del polígono."""
+ return 'Desconocido polígono'
+
+ def get_sides(self):
+ """Obtener el número de lados del polígono."""
+ return self._sides
+
+ def get_interior_angle(self):
+ """Obtener un solo ángulo interior, en grados."""
+ return 180 - (360 / self._sides)
+
+ def get_total_interior_angle(self):
+ """Obtener la suma de los ángulos interiores en el polígono, en
+ grados."""
+ return self._sides * self.get_interior_angle()
+
+class Triangle(RegularPolygon):
+ """Un triángulo equilátero regular."""
+ def __init__(self):
+ super(Triangle, self).__init__(3)
+
+ def get_name(self):
+ """Obtener el nombre legible del triángulo."""
+ return 'Triángulo'
+
+class Square(RegularPolygon):
+ """Un cuadrado regular."""
+ def __init__(self):
+ super(Square, self).__init__(4)
+
+ def get_name(self):
+ """Obtener el nombre legible del triángulo."""
+ return 'Cuadrado'
+
+
+# Código de probar sus clases. No modifique nada por debajo de esta línea.
+triangle = Triangle()
+assert(triangle.get_name() == 'Triángulo')
+assert(triangle.get_sides() == 3)
+assert(triangle.get_interior_angle() == 60)
+assert(triangle.get_total_interior_angle() == 180)
+
+square = Square()
+assert(square.get_name() == 'Cuadrado')
+assert(square.get_sides() == 4)
+assert(square.get_interior_angle() == 90)
+assert(square.get_total_interior_angle() == 360)
+
+assert(Triangle.__doc__ is not None)
+assert(Triangle.get_name.__doc__ is not None)
+assert(Square.__doc__ is not None)
+assert(Square.get_name.__doc__ is not None)
diff --git a/exercises/es/14_propriedad.py b/exercises/es/14_propriedad.py
new file mode 100644
index 0000000..dbb79a0
--- /dev/null
+++ b/exercises/es/14_propriedad.py
@@ -0,0 +1,50 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Convertir un par de métodos en una clase como una propiedad en su lugar.
+
+La clase más abajo utiliza un par de métodos, get_size() y set_size(), para
+leer y escribir el tamaño del triángulo de Pascal que representa. Debe añadir
+una nueva propiedad, tamaño de la clase, que envuelve estos dos métodos.
+
+Usted no tiene que modificar cualquiera de los métodos existentes en la clase.
+
+Recuerde documentar sus adiciones usando docstrings!
+"""
+
+class PascalTriangle(object):
+ """Una representación del triángulo de Pascal.
+
+ El tamaño (número de células en la base) del triángulo se puede ajustar.
+ Los valores de las celdas se almacenan en una lista de tuplas de (índice
+ de célula, valor) que se adjunta a cada vez que el usuario rellena
+ correctamente una célula.
+ """
+ def __init__(self, size):
+ self._size = size
+ self._cell_values = []
+
+ def set_cell_value(self, cell, val):
+ """Establecer el valor de la celda dada con la proporcionada por el
+ usuario."""
+ self._cell_values.append((cell, val))
+
+ def get_size(self):
+ """Obtener el tamaño del triángulo."""
+ return self._size
+
+ def set_size(self, size):
+ """Ajuste el tamaño de triángulo y borrar los valores de las celdas
+ introducidos por el usuario."""
+ self._size = size
+ self._cell_values = []
+
+
+# Código para revisar sus clases. No modifique nada por debajo de esta línea.
+triangle = PascalTriangle(4)
+assert(triangle.size == 4)
+triangle.size = 5
+assert(triangle.size == 5)
+
+assert(PascalTriangle.__doc__ is not None)
+assert(PascalTriangle.size.__doc__ is not None)
diff --git a/exercises/es/14_propriedad_solucion.py b/exercises/es/14_propriedad_solucion.py
new file mode 100644
index 0000000..06a4c09
--- /dev/null
+++ b/exercises/es/14_propriedad_solucion.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Convertir un par de métodos en una clase como una propiedad en su lugar.
+
+La clase más abajo utiliza un par de métodos, get_size() y set_size(), para
+leer y escribir el tamaño del triángulo de Pascal que representa. Debe añadir
+una nueva propiedad, tamaño de la clase, que envuelve estos dos métodos.
+
+Usted no tiene que modificar cualquiera de los métodos existentes en la clase.
+
+Recuerde documentar sus adiciones usando docstrings!
+"""
+
+class PascalTriangle(object):
+ """Una representación del triángulo de Pascal.
+
+ El tamaño (número de células en la base) del triángulo se puede ajustar.
+ Los valores de las celdas se almacenan en una lista de tuplas de (índice
+ de célula, valor) que se adjunta a cada vez que el usuario rellena
+ correctamente una célula.
+ """
+ def __init__(self, size):
+ self._size = size
+ self._cell_values = []
+
+ def set_cell_value(self, cell, val):
+ """Establecer el valor de la celda dada con la proporcionada por el
+ usuario."""
+ self._cell_values.append((cell, val))
+
+ def get_size(self):
+ """Obtener el tamaño del triángulo."""
+ return self._size
+
+ def set_size(self, size):
+ """Ajuste el tamaño de triángulo y borrar los valores de las celdas
+ introducidos por el usuario."""
+ self._size = size
+ self._cell_values = []
+
+ # size propriedad
+ size = property(get_size, set_size)
+
+
+# Código para revisar sus clases. No modifique nada por debajo de esta línea.
+triangle = PascalTriangle(4)
+assert(triangle.size == 4)
+triangle.size = 5
+assert(triangle.size == 5)
+
+assert(PascalTriangle.__doc__ is not None)
+assert(PascalTriangle.size.__doc__ is not None)
diff --git a/exercises/es/15_métodos-privadas.py b/exercises/es/15_métodos-privadas.py
new file mode 100644
index 0000000..767d4a5
--- /dev/null
+++ b/exercises/es/15_métodos-privadas.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Factorizar un código común a partir de dos métodos en un nuevo método
+privado.
+
+Parte del código en la clase a continuación se repite. Busque las dos líneas de
+código repetido y moverlos a un nuevo método privado que debe ser llamado desde
+los lugares se retiró el código duplicado desde.
+
+Recuerde documentar el nuevo método que utiliza una docstring!
+"""
+
+class Counter(object):
+ """Un contador que se incrementa o se restablece.
+
+ Esto podría ser utilizado para el recuento de las personas que pasan a
+ través de una puerta de entrada, para ejemplo. Cada vez que cambia el
+ valor de venta libre, se imprime el mismo mensaje.
+ """
+ def __init__(self):
+ self._counter = 0
+
+ def get_counter(self):
+ """Devolver el valor del contador."""
+ return self._counter
+
+ def increment_counter(self):
+ """Incrementar el valor del contador e imprimir un mensaje."""
+ self._counter += 1
+ print('Contador es ahora: %i' % self._counter)
+
+ def reset_counter(self):
+ """Restablecer el valor del contador a 0 e imprimir un mensaje."""
+ self._counter = 0
+ print('Contador es ahora: %i' % self._counter)
+
+
+# Código de probar su clase. No modifique nada por debajo de esta línea.
+counter = Counter()
+assert(counter.get_counter() == 0)
+counter.increment_counter()
+assert(counter.get_counter() == 1)
+counter.increment_counter()
+assert(counter.get_counter() == 2)
+counter.reset_counter()
+assert(counter.get_counter() == 0)
+
+assert(Counter.__doc__ is not None)
+assert(Counter.get_counter.__doc__ is not None)
+assert(Counter.increment_counter.__doc__ is not None)
+assert(Counter.reset_counter.__doc__ is not None)
diff --git a/exercises/es/15_métodos-privadas_solucion.py b/exercises/es/15_métodos-privadas_solucion.py
new file mode 100644
index 0000000..2d3ced6
--- /dev/null
+++ b/exercises/es/15_métodos-privadas_solucion.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+# coding=utf-8
+
+"""Factorizar un código común a partir de dos métodos en un nuevo método
+privado.
+
+Parte del código en la clase a continuación se repite. Busque las dos líneas de
+código repetido y moverlos a un nuevo método privado que debe ser llamado desde
+los lugares se retiró el código duplicado desde.
+
+Recuerde documentar el nuevo método que utiliza una docstring!
+"""
+
+class Counter(object):
+ """Un contador que se incrementa o se restablece.
+
+ Esto podría ser utilizado para el recuento de las personas que pasan a
+ través de una puerta de entrada, para ejemplo. Cada vez que cambia el
+ valor de venta libre, se imprime el mismo mensaje.
+ """
+ def __init__(self):
+ self._counter = 0
+
+ def get_counter(self):
+ """Devolver el valor del contador."""
+ return self._counter
+
+ def __set_counter(self, counter):
+ """Establezca el valor del contador e imprimir un mensaje."""
+ self._counter = counter
+ print('Contador es ahora: %i' % self._counter)
+
+ def increment_counter(self):
+ """Incrementar el valor del contador e imprimir un mensaje."""
+ self.__set_counter(self._counter + 1)
+
+ def reset_counter(self):
+ """Restablecer el valor del contador a 0 e imprimir un mensaje."""
+ self.__set_counter(0)
+
+
+# Código de probar su clase. No modifique nada por debajo de esta línea.
+counter = Counter()
+assert(counter.get_counter() == 0)
+counter.increment_counter()
+assert(counter.get_counter() == 1)
+counter.increment_counter()
+assert(counter.get_counter() == 2)
+counter.reset_counter()
+assert(counter.get_counter() == 0)
+
+assert(Counter.__doc__ is not None)
+assert(Counter.get_counter.__doc__ is not None)
+assert(Counter.increment_counter.__doc__ is not None)
+assert(Counter.reset_counter.__doc__ is not None)