day 21
This commit is contained in:
150
day21/excersises.py
Normal file
150
day21/excersises.py
Normal file
@@ -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()
|
||||
Reference in New Issue
Block a user