PyQuiz 15 – String Slicing en Python
El reto
texto = 'ElPythonista'
resultado = texto[2:8]
print(resultado)
¿Cuál es el resultado?
- a) 'Python'
- b) 'Pytho'
- c) 'lPytho'
Piensa tu respuesta antes de seguir leyendo…
Concepto: String Slicing
El slicing (rebanado) en Python permite extraer una porción de una cadena usando la sintaxis cadena[inicio:fin]. El índice inicio es inclusivo (se incluye ese carácter) y el índice fin es exclusivo (no se incluye ese carácter). Los índices empiezan en 0.
Para la cadena 'ElPythonista', los índices son: E=0, l=1, P=2, y=3, t=4, h=5, o=6, n=7, i=8, s=9, t=10, a=11. Por tanto, texto[2:8] extrae desde el índice 2 hasta el 7 (inclusive), dando 'lPytho'.
Contando posición a posición: índice 2 es 'l' (la ‘l’ minúscula de El), índice 3 es 'P', 4 es 'y', 5 es 't', 6 es 'h', 7 es 'o'. El índice 8 no se incluye. El resultado es 'lPytho', 6 caracteres.
Paso a paso
texto = 'ElPythonista'— se crea la cadena con 12 caracteres. Los índices van del 0 al 11.resultado = texto[2:8]— Python extrae los caracteres en las posiciones 2, 3, 4, 5, 6, 7. El índice 8 queda excluido. Eso es:l(2),P(3),y(4),t(5),h(6),o(7).print(resultado)— se imprimelPytho. Seis caracteres, comenzando en el índice 2 y terminando en el 7 (inclusive).
Solución
Respuesta correcta: C) 'lPytho'
texto[2:8] va del índice 2 ('l') al 7 ('o'). Resultado: 'lPytho'.
Sabías que…
El slicing admite un tercer parámetro opcional llamado paso (step): cadena[inicio:fin:paso]. Con paso negativo puedes invertir una cadena al vuelo.
texto = 'ElPythonista'
# Invertir toda la cadena
print(texto[::-1]) # 'atsinohtyPlE'
# Solo caracteres en posiciones pares
print(texto[::2]) # 'EPtoiа' (0,2,4,...)
# Desde el final con índices negativos
print(texto[-5:]) # 'nista'
print(texto[-5:-2]) # 'nis'
Prueba tú mismo
¿Qué devuelve 'ElPythonista'[4:10]? Y sin mirar el intérprete, ¿puedes decir qué caracteres quedan en las posiciones 4 a 9?
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Cadenas de caracteres en Python
