You are on page 1of 50

Lo que sabemos de String

Un String/Cadena es una sucesin de


caracteres (alfa numricos), que se encierran
entre comillas (simples o dobles).

Ejemplo de cadenas:


mama,

la madre de todas las batallas,

las cosas de la vida son simples,

1232

ac23 mezcla letras ab y nmeros 23

2

Lo que sabemos de String



Una cadena se corresponde con una lista de
los elementos individuales que la componen.

Si declaramos a= mama, entonces la cadena
se corresponde con:

a =

a[0]

a[1]

a[2]

a[3]

Lo que sabemos de String



O sea, los elementos de un string se pueden
identificar individualmente a travs de
ndices.

Para el ejemplo de asignacin a=mama se
tiene:

a[0]
a[1]
a[2]
a[3]

= m!
= a!
4

= m!
= a!

Podemos modificar una String?



Si tenemos el string a=mama con:

a[0] = m!
a[1] = a!
a[2] = m!
a[3] = a!

Podemos hacer a[0] = M para tener



a ==Mama?

String Inmutables

En Python, as como en Java y otros lenguajes, las
cadenas son inmutables, esto es sus
elementos no se pueden modificar. Si se
requieren modificaciones, se debe construir una
cadena nueva o bien re-asignar. Para el ejemplo
podemos hacer a=Mama.
A travs de funciones de librera hay un cierto
grado de flexibilidad con operaciones sobre
cadenas que veremos ms adelante.

Cadenas y caracteres especiales



Cmo escribimos la cadena p dada por?:

Una cadena con la palabra cadena!

En este ejemplo hemos usado el carcter de


puntuacin y . Para estos caracteres usamos
la secuencia de escape \. As, la cadena p se
escribira como:

7

p= Una \"cadena\" con la palabra \"cadena\


Secuencias de escape en las cadenas



Secuencia
Significado

\\!

Barra Invertida

\!

Comilla simple

\!

Comillas dobles

\n!

Nueva lnea

\r!

Retorno de carro

\t!

Tabulador horizontal

Hagamos un parntesis





Qu son listas y cadenas?

Las listas son conjuntos ordenados de elementos


(nmeros, cadenas o strings, etc). Las listas se
delimitan por corchetes [ y ] y los elementos
se separan por comas.

Ejemplos:

1.-

2.-

Si queremos recorrer la
lista
!
Usamos un while. O.

Iteracin: for
!
Sintaxis

El cuerpo del bucle se ejecuta tantas veces como


elementos tenga la lista que utilices (o caracteres
tenga la cadena que utilices).

Iteracin: for

Sintaxis

Cada vez que se repiten las instrucciones se llama


Iteracin

Iteracin: for

Por ejemplo, el siguiente programa
muestra Hola en pantalla:

La variable i toma los valores, ordenados, de la lista.


La primera iteracin toma el valor 0
La segunda iteracin toma el valor 1

La tercera iteracin toma el valor 2

La cuarta iteracin toma el valor 3

La quinta iteracin toma el valor 4

Cuntas veces se imprimir?



Solucin: 5 veces

Iteracin: for

Por ejemplo, el siguiente programa
muestra Hola en pantalla:

La variable i toma los valores, ordenados, de la lista.


La primera iteracin toma el valor a
La segunda iteracin toma el valor m

La tercera iteracin toma el valor i

La cuarta iteracin toma el valor g

La quinta iteracin toma el valor o

Cuntas veces se imprimir?



Solucin: 5 veces

Iteracin: for

Por ejemplo, el siguiente programa
muestra Hola en pantalla:

Cuntas veces se imprimir?



Solucin: 0 vez

Iteracin: for

Por ejemplo, el siguiente programa
muestra Hola en pantalla:

Qu es

Qu es

Es una funcin que genera


automticamente una secuencia con
una progresin aritmtica.

Toma los valores


[0, 1, 2, 3, 4, 5, 6, 7]

ha generado una secuencia de


nmeros enteros entre 0 y 7 (8
elementos)

Iteracin: for

La lista puede contener cualquier tipo de


elementos, no slo nmeros.

Cul de los dos?


While o for

comnmente para ejecutar lneas



de cdigo un nmero determinado de veces.

Cul de los dos?


While o for

crear bucles

indefinidos hasta que ciertas condiciones se den

en el programa

Continuemos con Strings


Ejemplo:

Escriba un programa en Python que pida el ingreso
de una cadena de texto y que una vez que la
cadena es ingresada muestre los elementos de las
posiciones impares , indicando adems el largo de la
cadena.

entrada = input("Ingrese una palabra:")
largo = 0
for elemento in entrada:
if largo % 2 == 1:
print(entrada[largo])
largo += 1
print("El largo de la cadenas es:=",largo)
23

Los operadores bsicos


sobre cadenas

Operador + : Concatenar dos (o ms cadenas)



Ejemplo: Si a=mama y b=papa
a+b == mamapapa

Operador * : Concatena, una misma cadena un


numero de veces (de ser posible)



Ejemplo: si a=mama, entonces

3*a==mamamamamama


NOTA: 3*a == a*3
24

Ejercicio: Reverso

Escriba una funcin en Python que recibiendo
como parmetro un String retorne el String al
reverso. Es decir si la funcin recibe como
parmetro a=amo roma esta debe retornar
amor oma,

25

Ejercicio: Reverso

26

Ejercicio: Palndromo

Una cadena se dice palndromo si esta se lee igual de
izquierda a derecha, que de derecha a izquierda.
Ejemplo: amo roma se lee igual de izquierda a derecha
que de derecha a izquierda (omitimos la lectura de los
espacios en blanco.

Escriba una funcin de nombre pali que reciba como
parmetro una cadena y retorne True o False
dependiendo si la cadena recibida es o no un
palndromo.

27

Ejercicio: Palndromo

Como lo resolvemos usando la funcin de invertir una
cadena realizada anteriormente?



def palindromo(cadena):

cadenaInv= invierte(cadena)

if cadena == cadenaInv:



return True

else :

return False

28

Ejemplo:
Contar las palabras de una frase

Ejemplo: suponga que tenemos la frase

El 18 fue espectacular 5 dias
sin saber nada de Python

29

Respuesta

frase = "El 18 fue espectacular 5 dias sin saber
nada de Python"
cuenta = 0
for caracter in frase:
if caracter == " ":

cuenta += 1
print("el total de palabras es: " ,(cuenta+1))



La idea base del algoritmo (funcin) es suponer que las
palabras estn separadas por espacios en blanco, y lo
que se hace es contar estos espacios.

Por qu se agreg uno ms
a
la
variable
cuenta?

30

Ejemplo:
Cuales
son
las
palabras
de
una
frase



Ejemplo:

El

18

fue



Python

31

Respuesta

frase = "El 18 fue espectacular 5 dias sin
saber nada de Python"
palabra = ""
print("las palabras de la frase son:")
for caracter in frase:
if caracter !=" ":
palabra += caracter
else:
print(palabra)
palabra = ""

32

Observacin

La salida del programa anterior es la siguiente

las palabras de la frase son:
El
18
fue
espectacular
5
dias
sin
saber
nada
de


Qu pasa con la palabra Python que no se despliega?

33

Acercndonos a funciones sobre String





En el problema anterior dividimos de
manera manual una frase constituida
por varias palabras.



Se puede hacer esto de modo ms
eficiente?



34

Acercndonos a funciones sobre String



La respuesta a la pregunta es si, y para
ello disponemos de funciones sobre
string.



En ejemplo podemos usar la funcin
split.

En este caso si p es una cadena q = p.split(),
retorna en q una lista con todas las palabras de la
cadena p.

35

Acercando a funciones de String





As, para la frase:

fiesta = "El 18 fue espectacular 5 dias sin
saber nada de Python"
Haciendo palabras = fiesta.split(), se tiene que

palabras =
["El", "18, ser", , "Python]

36

Ejercicio:

Escriba una funcin de nombre
cuentaOcurrencias, que reciba como
parmetros dos string p y q, y que retorne el
nmero de veces que el string p aparece en en
string q.

Ejemplo:

p = "soy
q = "soy lo que soy , soy lo que vez".
n = cuentaOcurrencias(p,q)
print(n) #IMPRIME 3
37

Solucin:

def cuentaOcurrencias(p,q):
auxiliar = q.split()
ocurrencias = 0
for palabra in auxiliar:
if p == palabra:
ocurrencias += 1
return ocurrencias

38

Solucin- que pasa si hay comas o


puntos en el medio del texto?:

def cuentaOcurrencias(p,q):
auxiliar = q.split()
ocurrencias = 0
for palabra in auxiliar:

if p == limpia(palabra):


ocurrencias += 1
return ocurrencias
def limpia(palabra_sucia):
palabra_limpia = ""
for caracter in palabra_sucia:

if caracter != "." and
caracter != "," and caracter != ";" :


palabra_limpia += caracter
39

return palabra_limpia

Obteniendo sub String



Dada una cadena p cmo obtenemos subcadenas
de p?

Ejemplo:

frase = hola a amigos estamos en clases
Cmo obtengo los substring

final = estamos en clases
inicio = hola amigos

Obteniendo sub String: uso de ndices



frase = hola a amigos estamos en clases
Como en un string sus componentes se identifican con
ndices, podemos hacer lo siguiente:

final = frase[14:]
inicio = frase[:13]

En la primera asignacin estoy sacando todo lo


que esta desde el ndice 14.

En el segundo asignacin

estoy sacando todo lo


que esta hasta el ndice 13

Ejercicio

Completar lo que falta

>>> frase = "todo o nada"
>>> frase[:4]
'todo'
>>> frase[2:]
????
>>> frase[-2:]
????
>>> frase[2:-1]
????
>>>

Funciones sobre String



len: Funcin para determinar el largo de una cadena,
retorna un entero.

len(p)
find: Funcin para determinar si una cadena p es
subcadena de q. Retorna el ndice donde se encuentra p
como subcadena de q.


q.find(p)


Observacin:

Si p no es subcadena de q, la funcin retorna -1

Funciones sobre String



replace: funcin para reemplazar en una cadena p, el
substring q por r.


p.replace(q,r)


Ejemplo:



Si p="hola a todos",

p.replace("hola", "chao)

retornar la cadena


"chao a todos"

Mas funciones sobre String



strip (lstrip y rstrip): Funcin que permite
eliminar espacios en blanco de una cadena. Las variantes
lstrip y rstrip operan de igual forma pero desde la
derecha o desde la izquierda segn correponda.

.

Ejemplo:

Si p=" hola como van en Este curso "
la llamada p.strip() retornar la cadena

"hola como van en Este curso"

Funciones imprescindibles sobre String



upper (y lower): Funcin para transforma todos los
caracteres de un string en mayuscula (ninscula).


Sintaxis: Si p es un string p.upper() retornar una cadena
equivalente a p pero todo en maycula (minscula).



Ejemplo:



p=hola Amigos

print (p.upper())

Imprimir:

HOLA AMIGOS

Funciones imprescindibles sobre String



capitalize: Funcin que recibe como paramtro una
cadena y retorna la misma cadena con todos los substring
de esta comenzando en mayscula y el resto en minscula.



Ejemplo:


p=hola AMIgos

print(p.capitalize())






IMPRIMIR:

Hola Amigos

Funciones sobre String



split: Funcin que permite obtener de una cadena p una
lista de todas las subcadenas de p, separadas por un
determinado carcter.



Ejemplo:

p = Todos, juntos puntos

p.split() retorna la lista




[Todos,, juntos, punto]
p.split(,) retorna la lista




[Todos, juntos punto]

Funciones sobre String



join: Hace lo contrario a la funcin split.

Si p es una cadena separador y q es una lista de string
p.join(q) retorna un string con todas las palabras de la
lista q separadas por p.



Ejemplo:

p = ;

q = [juan,perez,rozas]
print(p.join(q))

IMPRIMIR:

juan;perez;rozas

Problemas

1. Escriba un algoritmo (funcin en Python de nombre
hayMayores) que reciba como parmetro una frase y
un nmero entero k y que retorne True o False
dependiendo si hay alguna palabra en la frase de
longitud mayor a k.

2. Escriba un algoritmo como funcin en Python
(cuentaNumeros) que reciba como parmetro una
frase y retorne cuantos nmeros tiene esa frase.



Ejemplo:

Dada la frase aca hay un 1, un 2, mas 205,
y nada mas, esta debe retornar 3.

50