Son el tipo de dato usado para representar texto en Python.
Anteriormente, los strings se utilizaron en entradas y salidas de datos.
nombre = input("Ingrese su nombre: ")
nombre
print("Mi nombre es",nombre)
Los valores literales ''
y ""
representan strings vacíos, es decir, un texto que no contiene caracteres.
print("")
""
''
Un string (que no es el string vacío) se compone de varios elementos, llamados caracteres.
"hola mundo!"
Es posible enumerar los caracteres de un string, desde cero para el primer caracter y aumentándo la enumeración en sentido izquierda-derecha.
h | o | l | a | m | u | n | d | o | ! | |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Cuando una variable es de tipo string, es posible acceder al caracter que se encuentra en en índice i-ésimo usando corchetes.
a = "hola mundo!"
#obtiene el caracter que esta en el indice 5 y lo muestra por pantalla
print(a[5])
#evalua el valor del índice 5 en la variable a
a[5]
También es posible enumerar los caracteres de un string usando índices negativos:
h | o | l | a | m | u | n | d | o | ! | |
-11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
a = "hola mundo!"
#obtiene el ultimo caracter y lo muestra por pantalla
print(a[-1])
#evalua el valor del índice -1 en la variable a
a[-1]
Utilizando los corchetes es posible obtener una parte de un string (substring), es decir, algunos de sus caracteres.
s[inicio:fin]
entrega un string con todos los caracteres desde el índice inicio
, hasta el índice fin-1
.
Por ejemplo, a[3:7]
, donde a = "hola mundo!"
corresponde al substring 'a mu'
h | o | l | a | m | u | n | d | o | ! | |
3 | 4 | 5 | 6 |
a = "hola mundo!"
b = a[3:7]
print(b)
Omitiendo inicio
, se asume que el substring parte desde el inicio del string original.
Ejemplo, a[:6]
, donde a = "hola mundo!"
corresponde al substring 'hola m'
.
h | o | l | a | m | u | n | d | o | ! | |
0 | 1 | 2 | 3 | 4 | 5 |
a = "hola mundo!"
b = a[:6]
print(b)
Omitiendo fin
, se asume que el substring termina cuando termina el string original.
Ejemplo, a[2:]
, donde a = "hola mundo!"
corresponde al substring 'la mundo!'
.
h | o | l | a | m | u | n | d | o | ! | |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
a = "hola mundo!"
b = a[2:]
print(b)
¿Qué ocurre en los siguientes casos?
a = "hola mundo!"
a[5:7]
a[-3:-1]
a[2:-1]
a[-1:4]
Algunos operadores definidos anteriormente para números, pueden utilizarse sobre strings.
+
)*
)Algunos ejemplos:
"hola" + "mundo"
x = 4
c = 4**2
mensaje = str(4)+"al cuadrado es"+str(c)
print(mensaje)
x = 4
c = 4**2
mensaje = str(4)+" al cuadrado es "+str(c)
print(mensaje)
"waka"*2
"fizz"*3
"fizz"+"buzz"*4
in
permite saber si un substring está contenido dentro de un string. Es similar a un operador de comparación, por lo que entrega valores True
o False
. Se puede negar con el operador lógico not
."pollo" in "repollos"
"pollo" in "gallinero"
"agua" not in "paraguas"
len(s)
entrega como resultado la cantidad de caracteres del string s
pasado como parámetro.len("casa")
len("hola mundo!")
len("")
Los operadores de comparación se pueden utilizar sobre strings.
"a" > "z"
"avion" == "barco"
"Casa" < "casa"
¿Cómo se decide el orden de los caracteres?
El código ASCII asocia con un número decimal a los caracteres imprimibles (letras, números y símbolos) y se utilizan para decidir el ordenamiento.
decimal | caracter | decimal | caracter |
48 | "0" | 65 | "A" |
49 | "1" | 66 | "B" |
... | ... | ... | ... |
61 | "=" | 97 | "a" |
62 | ">" | 98 | "b" |
... | ... | ... | ... |
Los strings tienen su propio ordenamiento, que considera el siguiente orden creciente:
#las minusculas son mayores que las minusculas. Vienen despues en el codigo ASCII
"a" > "A"
Ya se ha visto que un mismo caracter escrito en mayúsculas es distinto que el mismo caracter en minúsculas.
#letras mayusculas son distintas de letras minusculas
"a" == "A"
IMPORTANTE: No es posible alterar directamente un string. Se dice que es un tipo de dato inmutable.
palabra = "Casa"
palabra[0] = "c"
Los métodos s.upper()
y s.lower()
permiten cambiar el string s
a mayúsculas y minúsculas, respectivamente.
Un método es una función que opera directamente sobre una variable que es de cierto tipo de dato.
pal = "Progra"
pal.lower()
pal.upper()
s.upper()
y s.lower()
generan un nuevo string a partir del valor de s
. NO MODIFICAN A s
.
print(pal)
¿Qué significa iterable?
Un tipo de dato que se puede iterar es aquel que se puede recorrer sobre cada uno de sus "elementos" constituyentes en un ciclo.
Ejemplo: un string está compuesto por caracteres. Luego con un ciclo for se puede recorrer cada caracter de este string.
a = "hola mundo!"
for s in a:
print("s = "+str(s))
Sintaxis genérica de un Ciclo For
for variable in secuencia:
#codigo
a = operacion(variable)
secuencia
.secuencia
debe ser un tipo de dato iterable.1. Escriba un programa que indique si una palabra existe dentro de una oración. Tanto la palabra, como la oración serán ingresadas como entrada de datos.
oracion = input("Ingrese una oracion: ")
palabra = input("Ingrese una palabra")
if palabra in oracion:
print("La palabra '"+ str(palabra)+ "' esta contenida en '"+str(oracion)+"'")
2. Modifique el programa anterior para se acepte encontrar palabras dentro de una oración, sin importar si están escritas en diferente combinación de mayúsculas/minúsculas.
oracion = input("Ingrese una oracion: ")
palabra = input("Ingrese una palabra")
if palabra.lower() in oracion.lower():
print("La palabra '"+ str(palabra)+ "' esta contenida en '"+str(oracion)+"'")
3. Escriba un programa que pida al usuario dos palabras, y que indique cuál de ellas es la más larga y por cuántas letras lo es.
palabra1 = input("Palabra 1: ")
palabra2 = input("Palabra 2: ")
largo1 = len(palabra1)
largo2 = len(palabra2)
if largo1 > largo2:
print("La palabra",palabra1,"tiene",largo1-largo2,"letras mas que la palabra",palabra2)
elif largo1 < largo2:
print("La palabra",palabra2,"tiene",largo2-largo1,"letras mas que la palabra",palabra1)
else:
print("La palabra",palabra1,"tiene el mismo largo que la palabra",palabra2)
4. Escriba la función contar(letra, palabra)
que retorna cuántas veces aparece la letra en la palabra.
>>> contar(‘a’, ‘abracadabra’)
5
>>> contar(‘z’, ‘abracadabra’)
0
def contar(letra, palabra):
contador = 0
for i in palabra:
if i == letra:
contador +=1
return contador
s = "paralelepipedo"
print(contar("a",s))
print(contar("p",s))