#!/usr/bin/python3
def analisis_reasignar(n,a,b,c,l,t,d,ll,tt,dd):
#reasignacion
n=n #numerico
analisis_id_n=id(n)
a=a #cadena
analisis_id_a=id(a)
b=b #boleano
analisis_id_b=id(b)
c=c #conjunto
analisis_id_c=id(c)
l=l #lista
analisis_id_l=id(l)
t=t #tupla
analisis_id_t=id(t)
d=d #diccionario
analisis_id_d=id(d)
ll=ll #lista de listas
analisis_id_ll=id(ll)
tt=tt #tupla de tuplas
analisis_id_tt=id(tt)
dd=dd #diccionario de diccionarios
analisis_id_dd=id(dd)
print ("VALORES DESPUES DE REASIGNAR:")
print ("+--------------------+--------------------+------------------------------+")
print ("| Tipo de objeto | Posicion memoria | Valor contenido |")
print ("+--------------------+--------------------+------------------------------+")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(n)), analisis_id_n, n), end=" ")
if inicio_id_n==analisis_id_n:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(a)), analisis_id_a, a), end=" ")
if inicio_id_a==analisis_id_a:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(b)), analisis_id_b, b), end=" ")
if inicio_id_b==analisis_id_b:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(c)), analisis_id_c, str(c)), end=" ")
if inicio_id_c==analisis_id_c:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(l)), analisis_id_l, str(l)), end=" ")
if inicio_id_l==analisis_id_l:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(t)), analisis_id_t, str(t)), end=" ")
if inicio_id_t==analisis_id_t:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(d)), analisis_id_d, str(d)), end=" ")
if inicio_id_d==analisis_id_d:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(ll)), analisis_id_ll, str(ll)), end=" ")
if inicio_id_ll==analisis_id_ll:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(tt)), analisis_id_tt, str(tt)), end=" ")
if inicio_id_tt==analisis_id_tt:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(dd)), analisis_id_dd, str(dd)), end=" ")
if inicio_id_dd==analisis_id_dd:
print ("REUTILIZACION")
else:
print ("")
print ("+--------------------+--------------------+------------------------------+")
print ("\n")
return
def analisis_modifica(n,a,b,c,l,t,d,ll,tt,dd):
#modificacion
n+=1 #numerico
analisis_id_n=id(n)
a+="1" #cadena
analisis_id_a=id(a)
b+=True #boleano
analisis_id_b=id(b)
c.add(1) #conjunto
analisis_id_c=id(c)
l+=[1] #lista
analisis_id_l=id(l)
t+=tuple("1") #tupla
analisis_id_t=id(t)
d["1"]=1 #diccionario
analisis_id_d=id(d)
ll+=[[1],[1]] #lista de listas
analisis_id_ll=id(ll)
tt+=((1),(1)) #tupla de tuplas
analisis_id_tt=id(tt)
dd["1"]={"1": 1} #diccionario de diccionarios
analisis_id_dd=id(dd)
print ("VALORES DESPUES DE MODIFICAR:")
print ("+--------------------+--------------------+------------------------------+")
print ("| Tipo de objeto | Posicion memoria | Valor contenido |")
print ("+--------------------+--------------------+------------------------------+")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(n)), analisis_id_n, n), end=" ")
if inicio_id_n==analisis_id_n:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(a)), analisis_id_a, a), end=" ")
if inicio_id_a==analisis_id_a:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(b)), analisis_id_b, b), end=" ")
if inicio_id_b==analisis_id_b:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(c)), analisis_id_c, str(c)), end=" ")
if inicio_id_c==analisis_id_c:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(l)), analisis_id_l, str(l)), end=" ")
if inicio_id_l==analisis_id_l:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(t)), analisis_id_t, str(t)), end=" ")
if inicio_id_t==analisis_id_t:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(d)), analisis_id_d, str(d)), end=" ")
if inicio_id_d==analisis_id_d:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(ll)), analisis_id_ll, str(ll)), end=" ")
if inicio_id_ll==analisis_id_ll:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(tt)), analisis_id_tt, str(tt)), end=" ")
if inicio_id_tt==analisis_id_tt:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(dd)), analisis_id_dd, str(dd)), end=" ")
if inicio_id_dd==analisis_id_dd:
print ("REUTILIZACION")
else:
print ("")
print ("+--------------------+--------------------+------------------------------+")
print ("\n")
return
def analisis_nuevos_valores(n,a,b,c,l,t,d,ll,tt,dd):
n=2 #numerico
analisis_id_n=id(n)
a="2" #cadena
analisis_id_a=id(a)
b=True #boleano
analisis_id_b=id(b)
c={2} #conjunto
analisis_id_c=id(c)
l=[2] #lista
analisis_id_l=id(l)
t=tuple("2") #tupla
analisis_id_t=id(t)
d={"2":2} #diccionario
analisis_id_d=id(d)
ll=[[2],[2]] #lista de listas
analisis_id_ll=id(ll)
tt=((2),(2)) #tupla de tuplas
analisis_id_tt=id(tt)
dd={"2": {"2": 2}} #diccionario de diccionarios
analisis_id_dd=id(dd)
print ("VALORES DESPUES DE ASIGNAR NUEVOS VALORES:")
print ("+--------------------+--------------------+------------------------------+")
print ("| Tipo de objeto | Posicion memoria | Valor contenido |")
print ("+--------------------+--------------------+------------------------------+")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(n)), analisis_id_n, n), end=" ")
if inicio_id_n==analisis_id_n:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(a)), analisis_id_a, a), end=" ")
if inicio_id_a==analisis_id_a:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(b)), analisis_id_b, b), end=" ")
if inicio_id_b==analisis_id_b:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(c)), analisis_id_c, str(c)), end=" ")
if inicio_id_c==analisis_id_c:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(l)), analisis_id_l, str(l)), end=" ")
if inicio_id_l==analisis_id_l:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(t)), analisis_id_t, str(t)), end=" ")
if inicio_id_t==analisis_id_t:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(d)), analisis_id_d, str(d)), end=" ")
if inicio_id_d==analisis_id_d:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(ll)), analisis_id_ll, str(ll)), end=" ")
if inicio_id_ll==analisis_id_ll:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(tt)), analisis_id_tt, str(tt)), end=" ")
if inicio_id_tt==analisis_id_tt:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(dd)), analisis_id_dd, str(dd)), end=" ")
if inicio_id_dd==analisis_id_dd:
print ("REUTILIZACION")
else:
print ("")
print ("+--------------------+--------------------+------------------------------+")
print ("\n")
return
def analisis_for(n,a,b,c,l,t,d,ll,tt,dd):
#numerico
analisis_id_n=id(n)
#cadena
analisis_id_a=id(a)
for bucle_a in a:
bucle_a+="1"
analisis_id_a=id(a)
#boleano
analisis_id_b=id(b)
#conjunto
analisis_id_c=id(c)
for bucle_c in c:
bucle_c+=1
analisis_id_c=id(c)
#lista
analisis_id_l=id(l)
for bucle_l in l:
bucle_l+=1
analisis_id_l=id(l)
#tupla
analisis_id_t=id(t)
for bucle_t in t:
bucle_t+="1"
analisis_id_t=id(t)
#diccionario
analisis_id_d=id(d)
for bucle_d in d:
bucle_d+=1
analisis_id_d=id(d)
#lista de listas
analisis_id_ll=id(ll)
for bucle_ll in ll:
bucle_ll+=[1]
analisis_id_ll=id(ll)
#tupla de tuplas
analisis_id_tt=id(tt)
for bucle_tt in tt:
if type(bucle_tt) is str:
bucle_tt+="1"
else:
bucle_tt+=tuple("1")
analisis_id_tt=id(tt)
#diccionario de diccionarios
analisis_id_dd=id(dd)
for bucle_dd in dd:
bucle_dd+=1
analisis_id_dd=id(dd)
print ("VALORES DESPUES DE EJECUTAR BUCLE FOR:")
print ("+--------------------+--------------------+------------------------------+")
print ("| Tipo de objeto | Posicion memoria | Valor contenido |")
print ("+--------------------+--------------------+------------------------------+")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(n)), analisis_id_n, n), end=" ")
if inicio_id_n==analisis_id_n:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(a)), analisis_id_a, a), end=" ")
if inicio_id_a==analisis_id_a:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(b)), analisis_id_b, b), end=" ")
if inicio_id_b==analisis_id_b:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(c)), analisis_id_c, str(c)), end=" ")
if inicio_id_c==analisis_id_c:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(l)), analisis_id_l, str(l)), end=" ")
if inicio_id_l==analisis_id_l:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(t)), analisis_id_t, str(t)), end=" ")
if inicio_id_t==analisis_id_t:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(d)), analisis_id_d, str(d)), end=" ")
if inicio_id_d==analisis_id_d:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(ll)), analisis_id_ll, str(ll)), end=" ")
if inicio_id_ll==analisis_id_ll:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(tt)), analisis_id_tt, str(tt)), end=" ")
if inicio_id_tt==analisis_id_tt:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(dd)), analisis_id_dd, str(dd)), end=" ")
if inicio_id_dd==analisis_id_dd:
print ("REUTILIZACION")
else:
print ("")
print ("+--------------------+--------------------+------------------------------+")
print ("\n")
return
def analisis_visitar(n,a,b,c,l,t,d,ll,tt,dd):
#numerico
analisis_id_n=id(n)
#cadena
analisis_id_a=id(a)
#boleano
analisis_id_b=id(b)
#conjunto
analisis_id_c=id(c)
#lista
analisis_id_l=id(l)
#tupla
analisis_id_t=id(t)
#diccionario
analisis_id_d=id(d)
#lista de listas
analisis_id_ll=id(ll)
#tupla de tuplas
analisis_id_tt=id(tt)
#diccionario de diccionarios
analisis_id_dd=id(dd)
print ("VALORES DESPUES DE VISITAR:")
print ("+--------------------+--------------------+------------------------------+")
print ("| Tipo de objeto | Posicion memoria | Valor contenido |")
print ("+--------------------+--------------------+------------------------------+")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(n)), analisis_id_n, n), end=" ")
if inicio_id_n==analisis_id_n:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(a)), analisis_id_a, a), end=" ")
if inicio_id_a==analisis_id_a:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(b)), analisis_id_b, b), end=" ")
if inicio_id_b==analisis_id_b:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(c)), analisis_id_c, str(c)), end=" ")
if inicio_id_c==analisis_id_c:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(l)), analisis_id_l, str(l)), end=" ")
if inicio_id_l==analisis_id_l:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(t)), analisis_id_t, str(t)), end=" ")
if inicio_id_t==analisis_id_t:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(d)), analisis_id_d, str(d)), end=" ")
if inicio_id_d==analisis_id_d:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(ll)), analisis_id_ll, str(ll)), end=" ")
if inicio_id_ll==analisis_id_ll:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(tt)), analisis_id_tt, str(tt)), end=" ")
if inicio_id_tt==analisis_id_tt:
print ("REUTILIZACION")
else:
print ("")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(dd)), analisis_id_dd, str(dd)), end=" ")
if inicio_id_dd==analisis_id_dd:
print ("REUTILIZACION")
else:
print ("")
print ("+--------------------+--------------------+------------------------------+")
print ("\n")
return
def inicio(hacer):
n=0 #numerico
global inicio_id_n
inicio_id_n=id(n)
a="0" #cadena
global inicio_id_a
inicio_id_a=id(a)
b=False #boleano
global inicio_id_b
inicio_id_b=id(b)
c={0} #conjunto
global inicio_id_c
inicio_id_c=id(c)
l=[0] #lista
global inicio_id_l
inicio_id_l=id(l)
t=tuple("0") #tupla
global inicio_id_t
inicio_id_t=id(t)
d={0:0} #diccionario
global inicio_id_d
inicio_id_d=id(d)
ll=[[0],[0]] #lista de listas
global inicio_id_ll
inicio_id_ll=id(ll)
tt=tuple(("0", tuple("0"))) #tupla de tuplas
global inicio_id_tt
inicio_id_tt=id(tt)
dd={0: {0: 0}} #diccionario de diccionarios
global inicio_id_dd
inicio_id_dd=id(dd)
print ("ASIGNACION DE VALORES AL INICIO:")
print ("+--------------------+--------------------+------------------------------+")
print ("| Tipo de objeto | Posicion memoria | Valor contenido |")
print ("+--------------------+--------------------+------------------------------+")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(n)), inicio_id_n, n))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(a)), inicio_id_a, a))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(b)), inicio_id_b, b))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(c)), inicio_id_c, str(c)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(l)), inicio_id_l, str(l)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(t)), inicio_id_t, str(t)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(d)), inicio_id_d, str(d)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(ll)), inicio_id_ll, str(ll)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(tt)), inicio_id_tt, str(tt)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(dd)), inicio_id_dd, str(dd)))
print ("+--------------------+--------------------+------------------------------+")
print ("\n")
if hacer=="r":
analisis_reasignar(n,a,b,c,l,t,d,ll,tt,dd) #reasignacion
if hacer=="m":
analisis_modifica(n,a,b,c,l,t,d,ll,tt,dd) #modificacion
if hacer=="n":
analisis_nuevos_valores(n,a,b,c,l,t,d,ll,tt,dd) #nuevos valores
if hacer=="f":
analisis_for(n,a,b,c,l,t,d,ll,tt,dd) #bucle for
if hacer=="v":
analisis_visitar(n,a,b,c,l,t,d,ll,tt,dd) #visitar
print ("VALORES AL FINALIZAR INICIO:")
print ("+--------------------+--------------------+------------------------------+")
print ("| Tipo de objeto | Posicion memoria | Valor contenido |")
print ("+--------------------+--------------------+------------------------------+")
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(n)), str(id(n)), n))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(a)), str(id(a)), a))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(b)), str(id(b)), b))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(c)), str(id(c)), str(c)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(l)), str(id(l)), str(l)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(t)), str(id(t)), str(t)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(d)), str(id(d)), str(d)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(ll)), str(id(ll)), str(ll)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(tt)), str(id(tt)), str(tt)))
print ("|{:<20}|{:<20}|{:<30}|".format(str(type(dd)), str(id(dd)), str(dd)))
print ("+--------------------+--------------------+------------------------------+")
print ("\n"*15)
return
inicio("r") #reasignacion
inicio("m") #modificacion
inicio("n") #nuevos valores
inicio("f") #bucle for
inicio("v") #visitar