Skip to content

Commit 121dc99

Browse files
authored
Merge pull request #8954 from Aleran07/ejercicio5
#5 - Python
2 parents c952460 + 470f697 commit 121dc99

File tree

1 file changed

+152
-0
lines changed

1 file changed

+152
-0
lines changed
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
# 05
2+
# Variables por valor int, float, str, bool, tuple
3+
4+
# int
5+
a = 10
6+
b = a # b recibe una copia del valor de a
7+
8+
a = 20 # Cambiamos 'a'
9+
10+
print(a) # 20
11+
print(b) # 10 → b NO se vio afectada
12+
13+
# str
14+
x = "Hola"
15+
y = x
16+
x = "Chao"
17+
18+
print(x) # Chao
19+
print(y) # Hola → no cambia, porque string es INMUTABLE
20+
21+
22+
# Variables por referencia list, dict, set, objetos personalizados
23+
24+
#list
25+
lista1 = [1, 2, 3]
26+
lista2 = lista1 # lista2 apunta a la MISMA lista en memoria
27+
28+
lista1.append(4)
29+
30+
print(lista1) # [1, 2, 3, 4]
31+
print(lista2) # [1, 2, 3, 4] → también cambió
32+
33+
"""se puede evitar la referecia con . copy()"""
34+
35+
lista1 = [1, 2, 3]
36+
lista2 = lista1.copy() # o lista2 = lista1[:] o list(lista1)
37+
lista3 = lista1[:]
38+
lista4 = list(lista1)
39+
40+
lista1.append(4)
41+
42+
print(lista1) # [1, 2, 3, 4]
43+
print(lista2) # [1, 2, 3]
44+
print(lista3) # [1, 2, 3]
45+
print(lista4) # [1, 2, 3]
46+
47+
# Ejemplo de referencia en memoria
48+
a = [1, 2, 3]
49+
b = a
50+
51+
print(id(a)) # 140192940769920 (ejemplo)
52+
print(id(b)) # 140192940769920 → mismo id = MISMO objeto
53+
54+
b = a.copy() # Con copia
55+
print(id(a)) # 140192940769920
56+
print(id(b)) # 140192940770288 → distinto id = OBJETO DIFERENTE
57+
58+
# Funciones por valor
59+
# int
60+
def modificar_numero(x): # Se crea una copia del valor, no afecta a 'a'
61+
x = x + 10
62+
print("Dentro de la función:", x)
63+
64+
a = 5
65+
modificar_numero(a)
66+
print("Fuera de la función:", a)
67+
68+
# str
69+
def cambiar_texto(texto):
70+
texto = texto.upper()
71+
print("Dentro de la función:", texto)
72+
73+
msg = "hola"
74+
cambiar_texto(msg)
75+
print("Fuera de la función:", msg)
76+
77+
# funciones por valor
78+
def modificar_lista(lista):
79+
lista.append(100) # La modificación AFECTA al original porque apuntan al mismo objeto en memoria
80+
print("Dentro de la función:", lista)
81+
82+
nums = [1, 2, 3]
83+
modificar_lista(nums)
84+
print("Fuera de la función:", nums)
85+
86+
# Evitar que se modifique el original
87+
def modificar_sin_afectar(lista):
88+
copia = lista.copy() # o lista[:] o list(lista)
89+
copia.append(999)
90+
print("Dentro de la función:", copia)
91+
92+
nums = [1, 2, 3]
93+
modificar_sin_afectar(nums)
94+
print("Fuera de la función:", nums)
95+
96+
# Ejemplo visual de objeto en memoria
97+
def revisar(obj):
98+
print("ID dentro:", id(obj))
99+
100+
a = [1,2,3]
101+
print("ID fuera:", id(a)) # Los IDs coinciden → es el mismo objeto en memoria
102+
revisar(a)
103+
104+
"""
105+
----------------------------------------------------------------------------------------
106+
Tipo de dato - Se modifica fuera de la funcion? - Naturaleza
107+
----------------------------------------------------------------------------------------
108+
int, float, str, bool, tuple - No cambia - Inmutable por valor
109+
110+
list, dict, set, objetos - Puede cambiar - Mutable por referencia
111+
112+
Para evitarlo - Usar .copy() - se protege el original
113+
----------------------------------------------------------------------------------------
114+
"""
115+
116+
"""Ejecicio Extra
117+
Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
118+
"""
119+
120+
# Funcion de intercambio por Valor
121+
122+
valor1 = 10
123+
valor2 = "Hola"
124+
125+
# nota si no le añado nada para crear un nuevo objeto, el id no cambia.
126+
def intercam_valor (valor1, valor2):
127+
ax = valor1
128+
valor1 = valor2 + " bro" # <-- aquí se crea una NUEVA cadena
129+
valor2 = ax + 10
130+
return (valor1, valor2) # <-- aquí se crea un NUEVO entero (20)
131+
132+
valor3, valor4 = intercam_valor(valor1, valor2)
133+
134+
print(valor1, f"Id variable 1: {id(valor1)}", valor2, f"Id variable 2: {id(valor2)}")
135+
print(valor3,f"Id variable 3: {id(valor3)}", valor4, f"Id variable 4: {id(valor4)}")
136+
137+
138+
139+
# Funcion de intercambio por Referencia
140+
valor1 = [1, 2 , 3]
141+
valor2 = [4, 5, 6]
142+
print(valor1, f"Id variable 1: {id(valor1)}", valor2, f"Id variable 2: {id(valor2)}")
143+
144+
def intercam_valor (x, y):
145+
y.append(10)
146+
x.append(100)
147+
return (x, y)
148+
149+
valor3, valor4 = intercam_valor(valor1, valor2)
150+
151+
print(valor1, f"Id variable 1: {id(valor1)}", valor2, f"Id variable 2: {id(valor2)}")
152+
print(valor3,f"Id variable 3: {id(valor3)}", valor4, f"Id variable 4: {id(valor4)}")

0 commit comments

Comments
 (0)