Skip to content

Commit 47d59be

Browse files
authored
Merge pull request mouredev#7616 from Hyromy/main
#24 - Python
2 parents 2c3a015 + 0364b2c commit 47d59be

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# funcion decoradora que recibe otra funcion como parametro
2+
def decorador(funcion):
3+
# crear otra funcion
4+
def f():
5+
print('Antes de ejecutar la función') # hacer algo antes
6+
funcion() # ejecutar la funcion recibida como argumento
7+
print('Después de ejecutar la función') # hacer algo después
8+
9+
# retornar funcion f
10+
# f = funcion decoradora + funcion recibida como argumento
11+
return f
12+
13+
# decorar la funcion saludo
14+
@decorador
15+
def saludo():
16+
print('Hola!')
17+
18+
# ejecutar la funcion con el decorador aplicado
19+
saludo()
20+
21+
print("\n")
22+
23+
# ---- DIFICULTAD EXTRA ----
24+
25+
from random import choice, randint
26+
27+
def contador(funcion):
28+
# *args: argumentos posicionales variables
29+
# **kwargs: diccionario de argumentos variables
30+
def f(*args, **kwargs):
31+
f.contador += 1
32+
return funcion(*args, **kwargs)
33+
34+
# a la funcion le añado una propiedad contador
35+
f.contador = 0
36+
return f
37+
38+
@contador
39+
def sumatoria(m, M):
40+
return sum(range(m, M))
41+
42+
@contador
43+
def factorial(n):
44+
if n == 0:
45+
return 1
46+
return n * factorial(n - 1)
47+
48+
for _ in range(10):
49+
bin_choice = choice([0, 1])
50+
if bin_choice:
51+
m = randint(-10, 10)
52+
M = abs(m) * 2
53+
print(f"Sumatoria de {m} a {M}: {sumatoria(m, M)}")
54+
else:
55+
n = randint(0, 10)
56+
print(f"Factorial de {n}: {factorial(n)}")
57+
58+
print()
59+
print(f"Cantidad de sumas: {sumatoria.contador}")
60+
61+
# el factorial se ejecuta mas veces porque es recursivo
62+
print(f"Cantidad de factoriales: {factorial.contador}")

0 commit comments

Comments
 (0)