diff --git a/day21/excersises.py b/day21/excersises.py new file mode 100644 index 0000000..af7b915 --- /dev/null +++ b/day21/excersises.py @@ -0,0 +1,150 @@ + +# PT1 + +ages = [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] + +class Estadisticas: + def __init__(self, items: list): + self.items = items + + def count(self): + return len(self.items) + + def sum(self): + return sum(self.items) + + def min(self): + return min(self.items) + + def max(self): + return max(self.items) + + def range(self): + return max(self.items) - min(self.items) + + def mean(self): + return (sum(self.items) / len(self.items)) + + def median(self): + return (sorted(self.items)[(len(self.items)//2)]) + + def mode(self): + full_number = 0 + full_mode = 0 + sortedlist = sorted(self.items) + for i in range(len(sortedlist)): + current_number = sortedlist[i] + temp_mode = 0 + for j in range(len(sortedlist)): + if sortedlist[j] == sortedlist[i]: + temp_mode += 1 + if temp_mode > full_mode: + full_number = current_number + full_mode = temp_mode + return {'mode': full_number, 'count': full_mode} + + def std(self): + new_list = [] + mean = sum(self.items) / len(self.items) + for item in self.items: + new_list.append((item - mean) ** 2) + s = (sum(new_list)/(len(new_list))) ** (1/2) + return round(s,1) + + def var(self): + new_list = [] + mean = sum(self.items) / len(self.items) + for item in self.items: + new_list.append((item - mean) ** 2) + return round(sum(new_list)/(len(new_list)),1) + + def freq_dist(self): + sortedlist = sorted(self.items) + new_list = [] + current_number = 0 + for i in range(len(sortedlist)): + if current_number != sortedlist[i]: + current_number = sortedlist[i] + current_count = 0 + for j in range(len(sortedlist)): + if sortedlist[j] == sortedlist[i]: + current_count += 1 + if (current_number,current_count) not in new_list: + new_list.append((current_number,current_count)) + return new_list + + def describe(self): + print('Count:', self.count()) # 25 + print('Sum: ', self.sum()) # 744 + print('Min: ', self.min()) # 24 + print('Max: ', self.max()) # 38 + print('Range: ', self.range()) # 14 + print('Mean: ', self.mean()) # 30 + print('Median: ', self.median()) # 29 + print('Mode: ', self.mode()) # {'mode': 26, 'count': 5} + print('Standard Deviation: ', self.std()) # 4.2 + print('Variance: ', self.var()) # 17.5 + print('Frequency Distribution: ', self.freq_dist()) + +data = Estadisticas(ages) + +data.describe() + + +# PT 2 + + +""" +Create a class called PersonAccount. It has firstname, lastname, incomes, expenses properties and it has total_income, +total_expense, account_info, add_income, add_expense and account_balance methods. Incomes is a set of incomes and its +description. The same goes for expenses. +""" + +class CuentaPersona: + def __init__(self, prim_nom, apellido): + self.prim_nom = prim_nom + self.apellido = apellido + self.ingresos = set() + self.gastos = set() + + def gasto_total(self): + gastotot = 0 + for item in list(self.gastos): + gasto, desc = item + gastotot += gasto + + return gastotot + + def anadir_ingreso(self, monto: float, info: str): + self.ingresos.add((monto, info)) + + def anadir_gasto(self, monto: float, info: str): + self.gastos.add((monto, info)) + + def balance_cuenta(self): + lista = list(self.ingresos) + + suma1 = 0; suma2 = self.gasto_total() + + for item in lista: + monto, desc = item + suma1 += monto + + return suma1 - suma2 + + + + def informacion_cuenta(self): + print(f"Nombre: {self.prim_nom} {self.apellido}") + print(f"Balance: {self.balance_cuenta()}") + print(f"Gastos: {self.gastos}") + print(f"Gasto Total {self.gasto_total()}") + print(f"Ingresos: {self.ingresos}") + + +persona = CuentaPersona("Juan", "Ley") + +persona.anadir_gasto(29.30, "Coca de 2 litros") +persona.anadir_ingreso(4900, "Pago") + +persona.informacion_cuenta() \ No newline at end of file