Skip to content

Commit 90037ce

Browse files
authored
Merge pull request mouredev#6414 from Ipfabio/main
#5 - Python
2 parents c4a66f7 + 746ea95 commit 90037ce

File tree

2 files changed

+128
-0
lines changed

2 files changed

+128
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
"""
2+
Valor y referencia
3+
"""
4+
5+
# Tipos de datos por valor
6+
7+
my_int_a = 10
8+
my_int_b = my_int_a
9+
# my_int_b = 20
10+
# my_int_a = 30
11+
print(my_int_a)
12+
print(my_int_b)
13+
14+
# Tpos de datos por referencia
15+
# No copian su valor, heredan la posición de memoria.
16+
17+
my_list_a = [10, 20]
18+
my_list_b = my_list_a
19+
my_list_b.append(30) # altera también la lista A
20+
print(my_list_a)
21+
print(my_list_b)
22+
23+
# Funciones con datos por valor
24+
25+
my_int_c = 10
26+
27+
def my_int_func(my_int: int):
28+
my_int = 20
29+
print(my_int)
30+
31+
my_int_func(my_int_c) # Vale 20
32+
print(my_int_c) # Sigue valiendo 10
33+
34+
# Funciones con datos por referencia
35+
36+
37+
def my_list_func(my_list: list):
38+
my_list.append(30)
39+
40+
my_list_d = my_list
41+
my_list_d.append(40)
42+
43+
print(my_list)
44+
print(my_list_d)
45+
46+
47+
my_list_c = [10, 20]
48+
my_list_func(my_list_c) # Agrega el 30
49+
print(my_list_c) # Mantiene el cambio de append
50+
51+
"""
52+
Extra
53+
"""
54+
55+
# Por valor
56+
57+
def value(val_a: int, val_b: int) -> tuple:
58+
temp = val_a
59+
val_a = val_b
60+
val_b = temp
61+
return val_a, val_b
62+
63+
my_int_d = 10
64+
my_int_e = 20
65+
my_int_f, my_int_g = value(my_int_d, my_int_e)
66+
67+
print(f"{my_int_d}, {my_int_e}")
68+
print(f"{my_int_f}, {my_int_g}")
69+
70+
# Por referencia
71+
"""
72+
Preferentemente no utlizar con copias en caminos separados (que les ocurran cosas distintas a las copias)
73+
porque se puede generar un error alterando la version original de la lista
74+
"""
75+
def ref(val_a: list, val_b: list) -> tuple:
76+
temp = val_a
77+
temp.append(50) # Agrega en ambos/
78+
val_a = val_b
79+
val_b = temp
80+
return val_a, val_b
81+
82+
my_list_e = [10,20]
83+
my_list_f = [30,40]
84+
my_list_g, my_list_h = ref(my_list_e, my_list_f)
85+
print(f"{my_list_e}, {my_list_f}")
86+
print(f"{my_list_g}, {my_list_h}")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
"""
2+
Ejercicio
3+
"""
4+
# Tiene que llamarse a ella misma y detenerse en algún momento
5+
def countdown(number: int):
6+
if number >= 0:
7+
print(number)
8+
countdown(number - 1)
9+
10+
countdown(100)
11+
12+
"""
13+
Extra
14+
"""
15+
# Factorial de 0 es 1
16+
# Cuando una función se puede acabar diviendo en otros sub-problemas dentro del problema general
17+
def factorial(number: int) -> int:
18+
# Ej: Subproblemas
19+
if number < 0:
20+
print("Tienen que ser números enteros y positivos.")
21+
return 0
22+
elif number == 0:
23+
return 1
24+
else: # Problema
25+
return number * factorial(number - 1)
26+
27+
print(factorial(5))
28+
29+
30+
def fibonacci(number: int) -> int:
31+
if number <= 0:
32+
print("La posición tiene que ser mayor que 0")
33+
return 0
34+
elif number == 1:
35+
return 0
36+
elif number == 2:
37+
return 1
38+
elif number >= 3:
39+
return fibonacci(number - 1) + fibonacci(number - 2)
40+
41+
print(fibonacci(5))
42+

0 commit comments

Comments
 (0)