Strings
General
Considere frase = 'Solo vuela el que se atreve a hacerlo'
- ¿Cuál es la longitud de este string?
- ¿Cuáles son los índices válidos?
- ¿Cómo se expresa siempre el mayor índice en términos de la longitud?
- ¿Cómo completaría el siguiente while para recorrer todos los índices del string?
i = 0 while i < ???: i += 1
Solución
- \(37\)
- De \(0\) a \(36\) o de \(-37\) a \(-1\)
len(frase) - 1
-
i = 0 while i < len(frase): i += 1
Casting
- ¿Podemos convertir el string
"23515"
a unint
? ¿cómo? - ¿Podemos hacer lo mismo con
"veintitrés mil quinientos quince"
?
Solución
int("23515")
- No directamente.
Tabla ASCII y orden lexicográfico
¿Cuál es el resultado de estas comparaciones?. Considere la Tabla ASCII.
'perro' < 'gato'
'perro' == 'Perro'
'perro' < 'Perro'
Solución
False
,'p'
no está antes que'g'
.False
, diferencia la mayúscula.False
, las mayúsculas van primero en ASCII.
Inmutabilidad
- ¿Qué imprime el siguiente programa?
nombre = 'Juan Carlos Bodoque' nombre.upper() print(nombre)
- ¿qué hace esto?
print(nombre[3])
- ¿y esto?
nombre[3] = 'A'
Solución
Juan Carlos Bodoque
. Para que tenga efecto el método utilizado hay que cambiar el código a:nombre = 'Juan Carlos Bodoque' nombre = nombre.upper() print(nombre)
n
- Produce un error. Los
strings
son inmutables.
Pertenencia
¿Cuál es el resultado en las siguientes instrucciones?
-
vocales = 'aeiou' 'e' in vocales
'E' in 'perro'
'pollo' in 'Vaca Pollo Cerdo Tomate Lechuga Repollo Zapallo'
Solución
True
False
True
Recuperación de elementos
Suponga texto = 'gato grande, negro y gordo'
- ¿Qué retorna
texto[4]
? - ¿
len(texto[5:8])
? - ¿
texto[:4]
? - ¿
texto[-5:]
?
Solución
' '
3
'gato'
'gordo'
Recorrido de strings
: for
- ¿Qué realiza el siguiente programa?
texto = 'gato grande, negro y gordo' for x in texto: if x in 'aeiou': print(x)
- ¿Cómo lo hacemos con
while
en vez defor
?
Solución
- Muestra las vocales que hay en el texto.
-
texto = 'gato grande, negro y gordo' i = 0 while i < len(texto): if texto[i] in 'aeiou': print(texto[i]) i += 1
Otros métodos para strings
replace
texto.replace(buscado, nuevo)
Retorna un nuevo string
a partir de texto
, pero reemplazando todas las ocurrencias de buscado
por nuevo
. Si no existe,
retorna el string
original texto
.
Ejemplo
texto = 'hola'
texto = texto.replace('o', 'x')
print(texto) # hxla
index
texto.index(buscado)
Retorna el índice de la primera ocurrencia de buscado
dentro de texto
. Si no existe produce un error.
Ejemplo
print('hola mundo'.index('o')) # 1
Métodos y funciones
La característica que diferencia a los métodos de las funciones es la forma de llamarlos. En una función aplicada a un string
, como len(s)
, se escribe el nombre de la función y el string
va dentro de los paréntesis. En un método aplicado a un string
, se comienza con el string
, seguido de un punto, seguido del nombre del método y dentro de los paréntesis se incluyen parámetros adicionales.
Ruteo
Rutear el siguiente programa para el texto: 'En un lugar de La Mancha'
. Indicar además,
con pocas palabras, la tarea que lleva a cabo.
texto = input('Texto: ')
inicio = True
convertido = ''
for c in texto:
if inicio:
convertido = convertido + c.upper()
inicio = False
elif c == ' ':
inicio = True
else:
convertido = convertido + c
print(convertido)