Tipos estructurados en Python: Cadenas Clase 8 Introducción a la computación Patricia Borensztejn Cadenas (Strings) • Cadena: es un tipo del lenguaje: el tipo str. >>> nombre="patricia" >>> type(nombre) <type 'str'> >>> • Podemos encerrar la cadena en comillas simples, dobles o incluso triples: • La comilla triple nos ahorra de tener que poner un ´/n´ en la cadena. Operadores y Funciones para cadenas • Operador +: operador de concatenación • Operador *: operador de repetición • Operador %: operador de formato, devuelve una cadena donde las marcas de formato se reemplazan por el resultado de evaluar esas expresiones Operadores y funciones • Operador % Funciones • int,float,str,ord,chr: >>> 10+int("12345678") 12345688 >>> "1234"+str(12345678) '123412345678' >>> a=ord("A") >>> print a 65 >>> i=chr(66) >>> print i B >>> 10+int("12345678") 12345688 >>> 10.0+float("0.1234") 10.1234 Métodos • Ya veremos que son los métodos, pero por ahora podemos usarlos…. Carácter Especial: \ • La hemos usado muchas veces así: \n (tanto en C como en Python) • Se llama «carácter de escape» y sirve para avisar que lo que viene a continuación (en este caso el carácter «n» tiene un significado especial. • La secuencia \n significa newline (Ascii 10) • La secuencia \t significa tab • Para imprimir el carácter \ hay que escribirlo dos veces \\ Otras secuencias de escape Cadenas «raw» • Las cadenas de tipo raw se interpretan tal y como las escribimos sin caracteres especiales. • A diferencia de C, si intentamos acceder a un elemento fuera de la cadena, el intérprete da error. Indexación • Los elementos de la cadena se pueden acceder individualmente, como en C, utilizando indexación. • También , como en C, las cadenas almacenan a partir del índice 0. • A diferencia de C, si intentamos acceder a un elemento fuera de la cadena, el intérprete da error. Cadenas, Indexación • Pueden indexarse con índices negativos: el -1 indica el último carácter de la cadena. Recorrido de cadenas • Se utiliza la estructura de control: for..in Inversión de una cadena Operador de «corte»: : • El operador de corte : se introduce dentro de la indexación a[i:j] y significa que la cadena resultado (o subcadena) estará formada por los elementos: – a[i], a[i+1],….a[j-1] Asignaciones: lo que no se puede hacer en C • …en Python si que se puede… • Y lo que sucede es lo siguiente: • Es decir, lo que se copia es la referencia , no la cadena Asignaciones • Es decir, la operación de asignar una cadena a otra NO ocupa mas memoria. La cadena NO se duplica. La concatenación • En cambio… si ocupa mas memoria. • La primera sentencia reserva memoria para a e inicializa esta memoria. • La segunda sentencia reserva espacio para a mas uno, luego copia de a, a esa zona de memoria, luego, cambia el puntero de a para que apunte a la nueva zona. Y finalmente, la zona anterior que ocupaba a, es liberada (marcada como libre). Comparaciones de cadenas • También las podemos hacer en Python: >>> guess ="a" >>> correct = "b" >>> if guess==correct: ... print "That´s it!\n" ... Programa : Palíndromes • Hacer un programa para averiguar si una frase es o no palíndrome. • Ejemplos de frases palíndromas: – – – – – «luz azul» «la ruta natural» «sé verla al revés» «123321» «Dábale arroz a la zorra el Abad» (esta es una de las más conocidas) – «Átale, demoníaco Caín, o me delata» – Y mil otras mas…..ojo con las acentuaciones…