Skip to content

Commit 9876afb

Browse files
authored
Merge pull request #1323 from Zequy40/main
#5 - Python
2 parents b55b9e3 + 95dc767 commit 9876afb

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
''' Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
2+
su tipo de dato.
3+
- Muestra ejemplos de funciones con variables que se les pasan "por valor" y
4+
"por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
5+
'''
6+
# Asignación de variables "por valor" (entero, un objeto inmutable)
7+
a = 10
8+
b = a # Se crea una copia del valor
9+
b += 5 # Modificamos solo b
10+
11+
print(a) # a = 10
12+
print(b) # b = 15
13+
14+
# Asignación de variables "por referencia" (lista, un objeto mutable)
15+
lista_a = [1, 2, 3]
16+
lista_b = lista_a # Se comparte la referencia al mismo objeto
17+
lista_b.append(4) # Modificamos la lista compartida
18+
19+
print(lista_a) # lista_a ahora es [1, 2, 3, 4]
20+
print(lista_b) # lista_b también es [1, 2, 3, 4]
21+
22+
#Funciones con variables "por valor" (objetos inmutables):
23+
24+
def modificar_valor(num):
25+
num += 10
26+
print("Dentro de la función:", num) #resultado: 15
27+
28+
a = 5
29+
modificar_valor(a)
30+
print("Fuera de la función:", a) #resultado = 5
31+
#En este caso, aunque num se modifica dentro de la función, la variable original a fuera de la función no se ve afectada, ya que los enteros son inmutables.
32+
33+
34+
#Funciones con variables "por referencia" (objetos mutables):
35+
def modificar_lista(lista):
36+
lista.append(4)
37+
print("Dentro de la función:", lista) #resultado: [1, 2, 3, 4]
38+
39+
mi_lista = [1, 2, 3]
40+
modificar_lista(mi_lista)
41+
print("Fuera de la función:", mi_lista) #resultado: [1, 2, 3, 4]
42+
#Aquí, la lista original "mi_lista" se ve afectada por la función, ya que las listas son objetos mutables y se pasan por referencia.
43+
44+
'''
45+
DIFICULTAD EXTRA (opcional):
46+
Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
47+
- Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
48+
Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
49+
se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
50+
variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
51+
Comprueba también que se ha conservado el valor original en las primeras.
52+
'''
53+
def intercambio_por_valor(a, b):
54+
# Intercambio de valores
55+
temp = a
56+
a = b
57+
b = temp
58+
return a, b
59+
60+
# Variables originales
61+
x = 5
62+
y = 10
63+
64+
# Llamada a la función y asignación de los nuevos valores
65+
nuevo_x, nuevo_y = intercambio_por_valor(x, y)
66+
67+
# Imprime los resultados
68+
print("Variables originales: x =", x, ", y =", y)
69+
print("Nuevas variables: nuevo_x =", nuevo_x, ", nuevo_y =", nuevo_y)
70+
71+
def intercambio_por_referencia(lista):
72+
# Intercambio de elementos en la lista
73+
temp = lista[0]
74+
lista[0] = lista[1]
75+
lista[1] = temp
76+
return lista
77+
78+
# Lista original
79+
mi_lista = [5, 10]
80+
81+
# Llamada a la función y asignación de la nueva lista
82+
nueva_lista = intercambio_por_referencia(mi_lista.copy())
83+
84+
# Imprime los resultados
85+
print("Lista original:", mi_lista)
86+
print("Nueva lista:", nueva_lista)

0 commit comments

Comments
 (0)