Skip to content

Commit d6a5ab5

Browse files
authored
Merge pull request #8447 from cbuenrostrovalverde/cbuenrostrovalverde
##5 - Python
2 parents 832329d + 04647ab commit d6a5ab5

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
'''
2+
* EJERCICIO:
3+
* - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
4+
* su tipo de dato.
5+
* - Muestra ejemplos de funciones con variables que se les pasan "por valor" y
6+
* "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
7+
* (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes)
8+
*
9+
* DIFICULTAD EXTRA (opcional):
10+
* Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
11+
* - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
12+
* Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
13+
* se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
14+
* variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
15+
* Comprueba también que se ha conservado el valor original en las primeras.
16+
'''
17+
18+
# Tipos de dato por valor.
19+
20+
my_int_a = 10
21+
my_int_b = my_int_a
22+
# my_int_b = 20
23+
# my_int_a = 30
24+
print(my_int_a)
25+
print(my_int_b)
26+
27+
# Tipos de dato por referencia.
28+
29+
my_list_a = [10, 20]
30+
my_list_b = my_list_a
31+
my_list_b.append(30)
32+
print(my_list_a)
33+
print(my_list_b) # Los datos por referencia no copian el valor, lo que hacen es copiar su dirección de la memoria.
34+
35+
# Funciones con datos por valor
36+
37+
my_int_c = 10
38+
def my_int_func(my_int: int):
39+
my_int = 20
40+
print(my_int)
41+
42+
my_int_func(my_int_c)
43+
print(my_int_c)
44+
45+
# Funciones con datos por referencia
46+
47+
my_list_c = [10, 20]
48+
49+
def my_list_func(my_list: list):
50+
my_list.append(30)
51+
my_list_d = my_list
52+
my_list_d.append(40)
53+
54+
print(my_list)
55+
print(my_list_d)
56+
57+
my_list_func(my_list_c)
58+
print(my_list_c)
59+
60+
'''
61+
* DIFICULTAD EXTRA (opcional):
62+
* Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
63+
* - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
64+
* Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
65+
* se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
66+
* variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
67+
* Comprueba también que se ha conservado el valor original en las primeras.
68+
'''
69+
70+
# Por valor
71+
72+
def value(value_a: int, value_b: int) -> tuple:
73+
temp = value_a
74+
value_a = value_b
75+
value_b = temp
76+
return value_a, value_b
77+
78+
my_int_d = 10
79+
my_int_e = 20
80+
my_int_f, my_int_g = value(my_int_d, my_int_e)
81+
82+
print(f'{my_int_d}, {my_int_e}')
83+
print(f'{my_int_f}, {my_int_g}')
84+
85+
# Por referencia
86+
87+
def ref(value_a: list, value_b: list) -> tuple:
88+
temp = value_a
89+
value_a = value_b
90+
value_b = temp
91+
return value_a, value_b
92+
93+
my_list_e = [10, 20]
94+
my_list_f = [30, 40]
95+
my_list_g, my_list_h = ref(my_list_e, my_list_f)
96+
97+
print(f'{my_list_e}, {my_list_f}')
98+
print(f'{my_list_g}, {my_list_h}')

0 commit comments

Comments
 (0)