Add exercises 21
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
parent
8bb0639340
commit
d34da87ee0
137
30-days-of-python/21_Clases_y_objetos/01_clases_objetos.py
Normal file
137
30-days-of-python/21_Clases_y_objetos/01_clases_objetos.py
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
"""
|
||||||
|
01_clases_objetos.py
|
||||||
|
"""
|
||||||
|
import statistics
|
||||||
|
|
||||||
|
|
||||||
|
# 1. Python tiene el módulo llamado estadísticas
|
||||||
|
# y podemos usar este módulo para realizar todos
|
||||||
|
# los cálculos estadísticos. Sin embargo,
|
||||||
|
# para aprender a crear funciones y reutilizar funciones,
|
||||||
|
# intentemos desarrollar un programa
|
||||||
|
# que calcule la medida de tendencia central de una muestra
|
||||||
|
# (media, mediana, moda) y la medida de variabilidad
|
||||||
|
# (rango, varianza, desviación estándar).
|
||||||
|
# Además de esas medidas, encuentra el mínimo, máximo,
|
||||||
|
# recuento, percentil y distribución de frecuencia de la muestra.
|
||||||
|
# Puedes crear una clase llamada Estadísticas
|
||||||
|
# y crear todas las funciones que realicen cálculos estadísticos
|
||||||
|
# como métodos para la clase Estadísticas.
|
||||||
|
|
||||||
|
class Estadisticas:
|
||||||
|
def __init__(self, data):
|
||||||
|
self.data = data
|
||||||
|
|
||||||
|
def count(self):
|
||||||
|
return len(self.data)
|
||||||
|
|
||||||
|
def sum(self):
|
||||||
|
return sum(self.data)
|
||||||
|
|
||||||
|
def min(self):
|
||||||
|
return min(self.data)
|
||||||
|
|
||||||
|
def max(self):
|
||||||
|
return max(self.data)
|
||||||
|
|
||||||
|
def range(self):
|
||||||
|
return max(self.data) - min(self.data)
|
||||||
|
|
||||||
|
def mean(self):
|
||||||
|
return statistics.mean(self.data)
|
||||||
|
|
||||||
|
def median(self):
|
||||||
|
return statistics.median(self.data)
|
||||||
|
|
||||||
|
def mode(self):
|
||||||
|
mode = statistics.mode(self.data)
|
||||||
|
count = self.data.count(mode)
|
||||||
|
return {'moda': mode, 'recuento': count}
|
||||||
|
|
||||||
|
def std(self):
|
||||||
|
return statistics.stdev(self.data)
|
||||||
|
|
||||||
|
def var(self):
|
||||||
|
return statistics.variance(self.data)
|
||||||
|
|
||||||
|
def freq_dist(self):
|
||||||
|
freq = {}
|
||||||
|
for value in self.data:
|
||||||
|
freq[value] = freq.get(value, 0) + 1
|
||||||
|
freq_dist = [(freq[value], value) for value in freq]
|
||||||
|
freq_dist.sort(reverse=True)
|
||||||
|
return freq_dist
|
||||||
|
|
||||||
|
|
||||||
|
edades = [
|
||||||
|
31, 26, 34, 37, 27,
|
||||||
|
26, 32, 32, 26, 27,
|
||||||
|
27, 24, 32, 33, 27,
|
||||||
|
25, 26, 38, 37, 31,
|
||||||
|
34, 24, 33, 29, 26
|
||||||
|
]
|
||||||
|
|
||||||
|
estadisticas = Estadisticas(edades)
|
||||||
|
|
||||||
|
print('Recuento:', estadisticas.count())
|
||||||
|
print('Suma: ', estadisticas.sum())
|
||||||
|
print('Mínimo: ', estadisticas.min())
|
||||||
|
print('Máximo: ', estadisticas.max())
|
||||||
|
print('Rango: ', estadisticas.range())
|
||||||
|
print('Media: ', estadisticas.mean())
|
||||||
|
print('Mediana: ', estadisticas.median())
|
||||||
|
print('Moda:')
|
||||||
|
for key, value in estadisticas.mode().items():
|
||||||
|
print(f'\t - {key}: {value}')
|
||||||
|
print('Desviación Estándar: ', estadisticas.std())
|
||||||
|
print('Varianza: ', estadisticas.var())
|
||||||
|
freq_dist = estadisticas.freq_dist()
|
||||||
|
print('Distribución de Frecuencia:')
|
||||||
|
for freq, value in freq_dist:
|
||||||
|
print(f'\t - {freq}, {value}')
|
||||||
|
print()
|
||||||
|
|
||||||
|
# 2. Crea una clase llamada CuentaPersona.
|
||||||
|
# Tiene propiedades de nombre, apellido,
|
||||||
|
# ingresos, gastos y tiene métodos de total_ingreso,
|
||||||
|
# total_gasto, info_cuenta, agregar_ingreso,
|
||||||
|
# agregar_gasto y saldo_cuenta.
|
||||||
|
# Ingresos es un conjunto de ingresos y su descripción.
|
||||||
|
# Lo mismo ocurre con los gastos.
|
||||||
|
|
||||||
|
|
||||||
|
class CuentaPersona:
|
||||||
|
def __init__(self, nombre, apellido):
|
||||||
|
self.nombre = nombre
|
||||||
|
self.apellido = apellido
|
||||||
|
self.ingresos = {}
|
||||||
|
self.gastos = {}
|
||||||
|
|
||||||
|
def total_ingreso(self):
|
||||||
|
return sum(self.ingresos.values())
|
||||||
|
|
||||||
|
def total_gasto(self):
|
||||||
|
return sum(self.gastos.values())
|
||||||
|
|
||||||
|
def info_cuenta(self):
|
||||||
|
print(f'Nombre: {self.nombre} {self.apellido}')
|
||||||
|
print(f'Total de ingresos: {self.total_ingreso()}')
|
||||||
|
print(f'Total de gastos: {self.total_gasto()}')
|
||||||
|
print(f'Saldo de cuenta: {self.total_ingreso() - self.total_gasto()}')
|
||||||
|
|
||||||
|
def agregar_ingreso(self, descripcion, monto):
|
||||||
|
self.ingresos[descripcion] = monto
|
||||||
|
|
||||||
|
def agregar_gasto(self, descripcion, monto):
|
||||||
|
self.gastos[descripcion] = monto
|
||||||
|
|
||||||
|
def saldo_cuenta(self):
|
||||||
|
return self.total_ingreso() - self.total_gasto()
|
||||||
|
|
||||||
|
|
||||||
|
cuenta = CuentaPersona('Juan', 'Pérez')
|
||||||
|
cuenta.agregar_ingreso('Salario', 5000)
|
||||||
|
cuenta.agregar_ingreso('Venta de acciones', 2000)
|
||||||
|
cuenta.agregar_gasto('Alquiler', 1500)
|
||||||
|
cuenta.agregar_gasto('Comida', 500)
|
||||||
|
cuenta.info_cuenta()
|
@ -44,4 +44,6 @@ Distribución de Frecuencia: [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.
|
|||||||
|
|
||||||
1. Crea una clase llamada CuentaPersona. Tiene propiedades de nombre, apellido, ingresos, gastos y tiene métodos de total_ingreso, total_gasto, info_cuenta, agregar_ingreso, agregar_gasto y saldo_cuenta. Ingresos es un conjunto de ingresos y su descripción. Lo mismo ocurre con los gastos.
|
1. Crea una clase llamada CuentaPersona. Tiene propiedades de nombre, apellido, ingresos, gastos y tiene métodos de total_ingreso, total_gasto, info_cuenta, agregar_ingreso, agregar_gasto y saldo_cuenta. Ingresos es un conjunto de ingresos y su descripción. Lo mismo ocurre con los gastos.
|
||||||
|
|
||||||
|
[Solución](01_clases_objetos.py)
|
||||||
|
|
||||||
[<< Day 20](../20_Gestor_de_paquetes_de_Python/README.md) | [Day 22 >>](../22_Web_scraping/README.md)
|
[<< Day 20](../20_Gestor_de_paquetes_de_Python/README.md) | [Day 22 >>](../22_Web_scraping/README.md)
|
||||||
|
Loading…
Reference in New Issue
Block a user