Cadenas
Contents
1.4. Cadenas#
1.4.1. Tipo texto: cadenas (string)#
Secuencia de
letras, caracteres especiales y de puntuación, espacios y dígitos (Símbolos UNICODE https://en.wikipedia.org/wiki/Unicode)
entre comillas, simples o dobles
El tipo de las cadenas es
str
.
saludo = 'Hola a todos'
saludo1 = "Hola a todos"
falso = "it's not true"
falso_escape = 'it\'s not true'
falso_otra_comilla_1 = 'it´s not true'
falso_otra_comilla_2 = 'it`s not true'
saludo, saludo1, falso, falso_escape, falso_otra_comilla_1, falso_otra_comilla_2
('Hola a todos',
'Hola a todos',
"it's not true",
"it's not true",
'it´s not true',
'it`s not true')
otra = '¿es esto una cadena?'
otra
'¿es esto una cadena?'
type('hola')
str
Observación str
también funciona como operador de conversión a cadena
str(4.5)
'4.5'
A su vez, int
y float
convierten cadenas que son números entre comillas en números:
int('402')
402
int('4.02')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Input In [8], in <cell line: 1>()
----> 1 int('4.02')
ValueError: invalid literal for int() with base 10: '4.02'
float('4.04')
4.04
1.4.2. Operadores para cadenas#
Enlaces
1.4.2.1. Concatenación de dos cadenas#
'hola' + 'Antonio'
'holaAntonio'
'hola' + ' Antonio'
'hola Antonio'
'hola' + '24'
'hola24'
'bienvenido' +' ' + 'a' + ' ' + 'Python'
'bienvenido a Python'
1.4.2.2. Repetición de una cadena un número de veces determinado#
Concatenación múltiple
3 * 'hola'
'holaholahola'
3 * 'hola '
'hola hola hola '
'a ' * 3
'a a a '
1.4.2.3. Longitud de una cadena#
La función len
len('hola')
4
1.4.2.4. Pertenencia#
'o' in 'hola'
True
'hl' in 'hola'
False
Ejemplo
Dado el texto Hoy hace un día fantástico para disfrutar en los pinares de Valsaín
, hacemos un programa que busque una palabra dada por el usuario en dicho texto
palabra = input('¿Qué palabra quieres buscar en el texto?: ')
texto = 'Hoy hace un día fantástico para disfrutar en los pinares de Valsaín'
if palabra in texto:
print('')
print(' Eureka, la palabra que has escrito está en el texto')
print('')
else:
print('')
print(' Lo siento, la palabra que has escrito no está en el texto')
print('')
print('Acabó la bifurcación')
1.4.3. Indexación de cadenas#
Las cadenas son secuencia de caracteres ordenados e indexados
'hola'[0]
'h'
'hola'[1]
'o'
'hola'[4]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Input In [23], in <cell line: 1>()
----> 1 'hola'[4]
IndexError: string index out of range
'Hoy hace un día estupendo'[1:10]
'oy hace u'
P |
y |
t |
h |
o |
n |
---|---|---|---|---|---|
0 |
1 |
2 |
3 |
4 |
5 |
-6 |
-5 |
-4 |
-3 |
-2 |
-1 |
p = 'Python'
p[-1]
'n'
saludo = 'Hola Madrid'
H |
o |
l |
a |
_ |
M |
a |
d |
r |
i |
d |
---|---|---|---|---|---|---|---|---|---|---|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
-11 |
-10 |
-9 |
-8 |
-7 |
-6 |
-5 |
-4 |
-3 |
-2 |
-1 |
saludo[4]
' '
saludo[-7]
' '
1.4.3.1. Subcadenas: el operador de corte (slicing)#
saludo[1:5]
'ola '
saludo[:5]
'Hola '
saludo[4:]
' Madrid'
saludo[-5:]
'adrid'
# Letras en posición par o, equivalentemente, que tienen índice impar
saludo[::2]
'Hl ard'
# Letras en posición impar o, equivalentemente, que tienen índice par
saludo[1:8:2]
'oaMd'
saludo[::3]
'Haai'
1.4.4. La función print
con cadenas#
numero = 1
print('Mi número favorito es el número ' + str(numero))
Mi número favorito es el número 1
La función print
nos permite combinar cadenas con variables
print('Mi número favorito es el número: ', numero, '. El siguiente es: ', numero+1)
Mi número favorito es el número: 1 . El siguiente es: 2
1.4.5. Orden y comparación de caracteres#
Python usa Unicode
Para saber el código UNICODE de un carácter ejecutamos ord
ord('#')
35
ord('a')
97
ord(' ')
32
En particular, tenemos que:
Las letras están ordenadas alfabéticamente: ‘a’ < ‘b’ < … < ‘z’
Los números tienen el orden natural
Las letras son mayores que los números
Las letras y números son mayores que los símbolos
El orden de los simbolos está determinado por el código ASCI que les corresponde (esto es así para todos los caracteres).
'b' > 'e'
False
'b' > '4'
True
'p' > '%'
True
'q' < '#'
False
'#' > '&'
False
1.4.5.1. Comparación de cadenas#
La cadena vacía es menor que todas las otras cadenas:
'' > 'ab'
False
Las cadenas se comparan elemento a elemento comenzando por la izquierda. Una cadena es mayor que otra, si para cada posición (índice) el elemento de la primera cadena es mayor o igual que el de la segunda.
El orden alfabético es para letras sin acentos que no incluyan la ñ, siendo todas o bien mayúsculas o bien minúsculas
'escuela' > 'escolar'
True
'lia' > 'lio'
False
'entusiasmado' > 'entusiasmados'
False
Los restantes operadores de comparación ==, !=, <, >=, <= se definen como para los números:
'deseo' < 'deseos'
True
'cabrilla mediterránea' > 'cabrilla mediterranea'
True
En ese ejemplo vemos que las letras con tilde con mayores:
'á' > 'a'
True
Sin embargo, las mayúsculas son menores y observad el orden que tienen respecto a las acentuadas
'A' < 'a' < 'Á' < 'á'
True
1.4.6. Ejemplos#
Ejemplo 1
Determinar el número de caracteres del texto La aparición de las hormigas es una muestra inequívoca del fin de la temporada de lluvias
, contando los espacios en blanco.
len('La aparición de las hormigas es una muestra inequívoca del fin de la temporada de lluvias')
89
Ejemplo 2
Determinar el elemento con índice 11 de la cadena ‘a8&x2wdmaciehnttooslle@ñ’
'a8&x2wdmaciehnttooslle@ñ'[11]
'e'
Ejemplo 3
Escribir el trozo de la cadena ‘esperanzador’ que da como resultado ‘ranzad’
'esperanzador'[4:10]
'ranzad'
Ejemplo 4
Dibujar un cuadrado de 3x3 ceros
print('0 0 0')
print('0 0 0')
print('0 0 0')
0 0 0
0 0 0
0 0 0
print(8*'0 ')
print(8*'0 ')
print(8*'0 ')
print(8*'0 ')
print(8*'0 ')
print(8*'0 ')
print(8*'0 ')
print(8*'0 ')
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Ejemplo 5
Dibujar un cuadrado de 5x5 ceros donde falte el cero del centro, pero que conserve la forma de cuadrado.
print(5*'0 ')
print(5*'0 ')
print('0 0 0 0')
print(5*'0 ')
print(5*'0 ')
0 0 0 0 0
0 0 0 0 0
0 0 0 0
0 0 0 0 0
0 0 0 0 0
1.4.7. Ejercicios#
Pide introducir la contraseña de cuatro caracteres (que hemos definido de antemano) y compara la introducida con la que había sido definida. Debe imprimir
Contraseña aceptada
en caso de coincidir. En caso de que no, debe imprimirError
Haz un programa que pida el número de DNI y calcule e imprima la letra correspondiente.