Si un número racional es sumado a un número entero, el resultado es guardado en un objeto <strong>de</strong>ltipo sage.rings.rational.Rational:x = 1 + 1/2print xtype(x)|3/23.15.2 Números realesLos números reales son guardados en objetos <strong>de</strong>l tipo sage.rings.real_mpfr.RealNumber. Elsiguiente ejemplo escribe el tipo <strong>de</strong>l número real .5, lo asigna a la variable x, escribe x yposteriormente <strong>de</strong>spliega el tipo <strong>de</strong> objeto al cual x hace referencia:print type(.5)x = .5print xtype(x)|0.500000000000000El siguiente código fue introducido en una celda se<strong>para</strong>da en la hoja <strong>de</strong> trabajo <strong>de</strong>spués <strong>de</strong> que elcódigo anterior fue ejecutado. Muestra la suma <strong>de</strong> 2 números reales y el resultado, el cual estambién un número real, siendo asignado a la variable y:y = x + .75print ytype(y)|1.25000000000000Si se suma un número real con uno racional, el resultado es guardado en un objeto <strong>de</strong> tiposage.rings.real_mpfr.RealNumber:x = 1/2 + .75print xtype(x)|1.2500000000000034
3.15.3 Objetos que guardan secuencias <strong>de</strong> otros objetos: Listas y registrosEl objeto <strong>de</strong> tipo list (lista) esta diseñado <strong>para</strong> guardar otros objetos en una colección or<strong>de</strong>nada osecuencia. Las listas son muy flexibles y son <strong>de</strong> los tipos <strong>de</strong> objetos mas fuertemente utilizadosen <strong>SAGE</strong>. Las listas pue<strong>de</strong>n contener objetos <strong>de</strong> cualquier tipo, pue<strong>de</strong>n crecer y encogerse comosea necesario, y pue<strong>de</strong>n ser anidadas. Los objetos en una lista pue<strong>de</strong>n ser accesados por suposición en la lista y también pue<strong>de</strong>n ser reemplazados por otros objetos. La habilidad <strong>de</strong> unalista <strong>para</strong> crecer, encogerse y cambiar sus contenidos la hace un tipo <strong>de</strong> objeto mutable.Una forma <strong>de</strong> crear una lista es colocando 0 o más objetos o expresiones <strong>de</strong>ntro <strong>de</strong> un par <strong>de</strong>corchetes [ ].El programa siguiente inicia imprimiendo el tipo <strong>de</strong> una lista. De ahí crea una lista que contengalos números 50, 51, 52 y 53, los asigna a la variable x y la escribe. A continuación, escribe losobjetos que están en las posiciones 0 y 3, reemplaza el 53 en la posición 3 por 100, escribe xnuevamente y finalmente escribe el tipo <strong>de</strong> objeto al cual se refiere x:print type([])x = [50,51,52,53]print xprint x[0]print x[3]x[3] = 100print xtype(x)|[50, 51, 52, 53]5053[50, 51, 52, 100]Note que el primer objeto en una lista es colocado en la posición 0 en vez <strong>de</strong> la posición 1 u queesto hace la posición <strong>de</strong>l último objeto en la lista menor en 1 que la longitud <strong>de</strong> la lista. A<strong>de</strong>másnote que un objeto en una lista es accesado colocando un par <strong>de</strong> corchetes [ ], la cual contiene sunúmero <strong>de</strong> posición, a la <strong>de</strong>recha <strong>de</strong> una variable que referencia a la lista.El siguiente ejemplo muestra que pue<strong>de</strong>n colocarse en una lista diferentes tipos <strong>de</strong> objetos:x = [1, 1/2, .75, 'Hola', [50,51,52,53]]print x|[1, 1/2, 0.750000000000000, 'Hola', [50, 51, 52, 53]]35