Skip to content

Commit 4b584e1

Browse files
authored
Merge pull request mouredev#3640 from EmmanuelMMontesinos/main
#5-python
2 parents ff27f1c + 319fd8b commit 4b584e1

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
"""
2+
* EJERCICIO:
3+
* X Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
4+
* su tipo de dato.
5+
* X 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+
10+
# Varible por valor // El original no cambia
11+
numero = 10
12+
copia_numero = numero
13+
copia_numero = 20
14+
15+
print(f"Original: {numero}")
16+
print(f"Copia: {copia_numero}")
17+
18+
# variable por referencia // El original cambia dado que es una referencia
19+
numeros = [1,2,3,4]
20+
referencia = numeros
21+
referencia[1] = 999
22+
23+
print(f"Original: {numeros}")
24+
print(f"Referencia: {referencia}")
25+
26+
# Funciones por valor
27+
def duplica(numero):
28+
numero *= 2
29+
print(f"Función: {numero}")
30+
31+
numero = 10
32+
33+
print(f"Original antes de la función: {numero}")
34+
duplica(numero)
35+
print(f"Original despues de la función: {numero}")
36+
37+
# Funciones por referencia
38+
def add_numero(lista):
39+
lista.append(5)
40+
print(f"Función: {lista}")
41+
42+
lista = [1,2,3,4]
43+
44+
print(f"Original: {lista}")
45+
add_numero(lista)
46+
print(f"Original despues de la función: {lista}")
47+
48+
49+
50+
"""
51+
* DIFICULTAD EXTRA (opcional):
52+
* Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
53+
* - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
54+
* Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
55+
* se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
56+
* variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
57+
* Comprueba también que se ha conservado el valor original en las primeras.
58+
"""
59+
60+
def progam_valor(param1,param2):
61+
param2, param1 = param1, param2
62+
return param1, param2
63+
64+
def program_ref(lista,lista2):
65+
lista2,lista = lista,lista2
66+
return lista,lista2
67+
68+
param_1 = 1
69+
param_2 = 2
70+
71+
print(f"Param_1 antes: {param_1}")
72+
print(f"Param_2 antes: {param_2}")
73+
74+
param_1_valor,param_2_valor = progam_valor(param_1,param_2)
75+
76+
print(f"\nParam_1_valor retorno: {param_1_valor}")
77+
print(f"Param_2_valor retorno: {param_2_valor}")
78+
79+
print(f"\nParam_1 despues: {param_1}")
80+
print(f"Param_2 despues: {param_2}")
81+
82+
lista_1 = [1,2]
83+
lista_2 = [3,4]
84+
85+
print(f"\nlista_1 antes: {lista_1}")
86+
print(f"lista_2 antes: {lista_2}")
87+
88+
lista_1_ref,lista_2_ref = program_ref(lista_1,lista_2)
89+
90+
print(f"\nlista_1_ref antes: {lista_1_ref}")
91+
print(f"lista_2_ref antes: {lista_2_ref}")
92+
93+
print(f"\nlista_1 despues: {lista_1}")
94+
print(f"lista_2 despues: {lista_2}")
95+
96+

0 commit comments

Comments
 (0)