Sei sulla pagina 1di 3

Clase 7: Strings

B. Bustos 1
String. Secuencia de 0 o ms caracteres (letras, dgitos, signos)

Sintaxis: o "..."

Ejemplos:
>>>nombre=Bernardo
>>>apellidos="OHiggins Riquelme"
>>>apodo="padre de la patria"

n de caracteres (largo) de un string?
>>> len(nombre)
8
>>> len(apellidos)
18 (espacio tambin cuenta)
>>> len(apodo)
20
>>> len("")
0




Comparacin de strings
Sintaxis: string1 operador-de-relacin string2
Semntica: True/False de acuerdo a resultado de comparacin
ejemplo: pera>manzana entrega True

comparacin?
lexicogrfica: extensin de comparacin alfabtica (diccionario)
para incluir todos los caracteres
cada caracter tiene una representacin numrica (binaria)
orden entre caracteres: espacio<dgitos<maysculas<minsculas
signos y otros caracteres tienen representaciones arbitrarias

facilidades adicionales
funciones min y max
ej: max(pera,Pera) entrega pera pq p>P
operador in: cadainabracadabra entrega True

Problema. Leer una lista de palabras y escribir la mayor y la ms
larga (de ms letras). El fin de la lista se indica con la palabra fin

Ejemplo:

palabra(o fin)?gabriela
palabra(o fin)?jose
palabra(o fin)?rosa
palabra(o fin)?matias
alabra(o fin)?fin
mayor=rosa
ms larga=gabriela
#leer una lista de palabras(que termina con fin) y
#escribir la mayor (alfabeticamente) y la ms larga

#incializar strings vacos (de largo 0)
mayor=""; masLarga=""
#leer palabras hasta fin
while True:
palabra=raw_input("palabra(o fin)?")#lee string
if palabra=="fin": break
#mantener la palabra mayor
if palabra>mayor:
mayor=palabra
#mantener la palabra ms larga
if len(palabra)>len(masLarga):
masLarga=palabra
#escribir resultados
print "mayor=",mayor
print "mas larga=",masLarga
Partes de un string
>>> s='abracadabra'
Caracteres individuales
>>> s[1]
'b'
>>> s[0]
'a'
Substrings (slices)
>>> s[0:4] #entre ndices 0 y 3
'abra'
>>> s[4:8] #entre ndices 4 y 7
'cada'
>>> s[:4] #desde el comienzo
'abra'
>>> s[4:] #hasta el final
'cadabra'
sintaxis: string[ndice:indice]
ndice? entero con 0<=ndice<=len(string)


Prob : contar las apariciones de un caracter en un string
Ej:
>>>cuenta(a,abracadabra)
>>>5

Solucin
def cuenta(x,y):
n=0 #contador de caracteres
i=0 #indice para recorrer caracteres
while i<len(y):
if y[i]==x:
n=n+1
i=i+1
return n;

Clase 7: Strings
B. Bustos 2
Prob : contar las apariciones de un caracter en un string
Ej:
>>>cuenta(a,abracadabra)
>>>5

Solucin 2
def cuenta(x,y):
n=0
for c in y:
if c==x:
n=n+1
return n;

for c in y:
para todos los caracteres de y, ejecute las instrucciones sgtes
en cada iteracin, la variable c toma el valor de un caracter
Prob : contar las apariciones de un caracter en un string
Ej:
>>>cuenta(a,abracadabra)
>>>5

Solucin recursiva
def cuenta(x,y):
if len(y)==0:
return 0
elif y[0]==x:
return 1+cuenta(x,y[1:])
else:
return cuenta(x,y[1:])


cuenta(x,y[1:])?
cuenta apariciones de x desde el 2 caracter de y (el de ndice 1)
Concatenacin de Strings

>>>pera+manzana
'peramanzana'
>>>pera+ +manzana
'pera manzana'
>>> s="ja"
>>> s
'ja'
>>> s+s+s
'jajaja'
>>> s*3
'jajaja'
>>> 3*s
'jajaja'



Mtodos adicionales
ejemplos: para s=abracadabra
x.find(y) busca y en x. Entrega ndice
de 1 aparicin (-1 si no est)
s.find(abra)
s.find(Abra)
0
-1
x.count(y) cuenta apariciones de y en x s.count(abra) 2
x.isalpha() True si x es alfabtico s.isalpha() True
x.isdigit() True si x es numrico s.isdigit() False
x.islower() True si x en minsculas s.islower() True
x.isupper() True si x en maysculas s.isupper() False
x.upper() reemplaza minsculas por
maysculas
casa.upper() CASA
x.lower() reemplaza maysculas por
minsculas
Casa.lower() casa
x.strip() elimina espacios al comienzo
y fin
a b .strip() a b
x.replace(y,z) reemplaza todos los y por z s.replace(abra,*) *cad*

Sintaxis: string.nombre(parmetros)
Lista completa se obtiene con help(str)

Problema. Obtener una respuesta si o no

Ejemplo de dilogo

me quieres? si o no? mmm
me quieres? si o no? no s
me quieres? si o no? si
yo no

Programa usando una funcin que obtenga una respuesta si o no

if siOno(me quieres?)==si:
print yo no
else:
print adios mundo cruel





Solucin iterativa
def siOno(x):
while True:
resp=raw_input(x+" si o no?") #leer respuesta
resp=resp.strip() #eliminar espacios
resp=resp.lower() #traducir a minsculas
if resp=="si" or resp=="no":
break
return resp

Solucin recursiva (y encadenando mtodos)
def siOno(x):
resp=raw_input(x+" si o no?").strip().lower()
if resp=="si" or resp=="no":
return resp
else:
return siOno(x)

Clase 7: Strings
B. Bustos 3
Ejercicio. Implemente una funcin que reciba por parmetro un string s
y retorne un string que contenga slo los dos primeros y los dos ltimos
caracteres de s. Si s tiene menos de 2 caracteres, la funcin debe
retornar el string vaco (). Luego, implemente un programa que pida
palabras al usuario (fin de datos: string vaco) y muestre el resultado
retornado por la funcin.

# Ejemplos:
# procesarString(string) retorna stng
# procesarString(huachimingo) retorna hugo
# procesarString(a) retorna
def procesarString(s):


# Programa principal





Solucin.

# Ejemplos:
# procesarString("string") retorna "stng"
# procesarString("huachimingo") retorna "hugo"
# procesarString("a") retorna ""
def procesarString(s):
if len(s)<2: return ""
a=s[0:2]
b=s[len(s)-2:]
return a+b

# Programa principal
while True:
s=raw_input("Palabra? ")
if s=="": break
print procesarString(s)




Conversin de nmeros a String

>>> str(123)
'123'
>>> str(4.5)
'4.5'

Conversin de Strings a nmeros

>>> int("123")
123
>>> float("4.5")
4.5

Potrebbero piacerti anche