Cadenas: trabajar con texto
Python cuenta las letras de "Python" desde 0, así que "Python"[5] es la última letra, n, y "Python"[6] es un error.
Una etiqueta con un nombre necesita texto armado con piezas
Piensa en las etiquetas con nombre de un evento escolar o de una reunión de club. Cada etiqueta tiene el mismo diseño y un nombre distinto, así que un programa puede imprimirlas todas a partir de un solo patrón. El texto en Python es una cadena, y la forma más rápida de armar una con piezas es una f-string: pon la letra f delante de la comilla de apertura y escribe nombres de variables entre llaves. Python cambia cada {name} por el valor de esa variable.
name = "Mina"
club = "Robotics"
print(f"Hello, {name}!")
print(f"{name} joined {club}.")Hello, Mina!
Mina joined Robotics.Hay dos formas más antiguas de unir texto. El operador + une cadenas una a continuación de otra, y * repite una cadena. Los dos lados de + deben ser cadenas, así que un número debe convertirse antes en texto con str(). Las f-strings hacen esa conversión por ti, y esa es una de las razones por las que son la opción habitual.
item = "gimbap"
count = 2
print(item + " x " + str(count))
print("-" * 12)
print(f"{item} x {count}")gimbap x 2
------------
gimbap x 2Cada carácter tiene un número de posición, que empieza en 0
Una cadena es una fila de caracteres, y cada uno tiene un índice. El primer carácter está en el índice 0, no en el 1. Los corchetes eligen un carácter: word[0] es el primero. Los índices negativos cuentan desde el final, así que word[-1] es siempre el último carácter, sea cual sea la longitud. len() da el número de caracteres, incluidos espacios y signos de puntuación.
word = "Python"
print(word[0], word[5], word[-1])
print(len(word))
print(word[0:2], word[2:])P n n
6
Py thonword[0:2] es un segmento: empieza en el índice 0 y se detiene justo antes del índice 2, y da "Py". Si omites el final, como en word[2:], el segmento llega hasta el final de la cadena. La regla de detenerse antes parece rara al principio, pero significa que word[0:2] + word[2:] siempre devuelve la palabra completa.
Los métodos de cadena devuelven una cadena nueva
Las cadenas vienen con herramientas integradas llamadas métodos, que se escriben después de un punto. upper() y lower() cambian entre mayúsculas y minúsculas, replace(old, new) cambia cada copia de un trozo de texto por otro, y strip() quita los espacios de ambos extremos, lo que ayuda cuando alguien escribe un espacio de más en un formulario. La palabra clave in comprueba si una cadena aparece dentro de otra y da True o False. Ninguno de estos métodos cambia la cadena original. Una cadena no puede modificarse una vez creada; cada método devuelve una nueva, y la conservas asignándola a un nombre.
menu = " tteokbokki "
clean = menu.strip()
print(clean.upper())
print(clean.replace("k", "K"))
print("bok" in clean, len(menu), len(clean))TTEOKBOKKI
tteoKboKKi
True 14 10Para poner una comilla dentro de una cadena, usa el otro tipo de comilla para rodearla: "It's fine". Una barra invertida inicia una secuencia de escape: \n dentro de una cadena significa «empieza una línea nueva aquí», así que un solo print puede mostrar dos líneas.
print("It's lunch time.")
print("Line one\nLine two")It's lunch time.
Line one
Line two| f-string | f"...{name}..." pone valores dentro del texto |
| índice | Número de posición de un carácter, empezando en 0 |
| segmento | s[a:b]: desde el índice a hasta el b sin incluirlo |
| len() | Número de caracteres de una cadena |
| método | Una herramienta que se escribe después de un punto, como s.upper() |
| \n | Secuencia de escape para una línea nueva |
| in | "a" in "cat" da True |
- ¿Qué imprime esto?
word = "banana" print(word[1]) - ¿Qué imprime esto?
word = "banana" print(word[-2]) - ¿Qué imprime esto?
print(len("Hi there!")) - ¿Qué imprime esto?
word = "school" print(word[1:4]) - ¿Qué imprime esto?
name = "Jun" print(f"Hi {name}, you are {13 + 1}.") - ¿Qué imprime esto?
print("ab" * 3) - ¿Qué imprime esto?
s = "hello" s.upper() print(s)HELLOhelloHelloUn error
- ¿Qué imprime esto?
print("rice" in "fried rice") - ¿Qué imprime esto?
name = "Mina" print(f"{name}") print("{name}")Mina
MinaMina
{name}{name}
Mina{name}
{name}
- ¿Qué imprime esto?
print("Total: " + str(3 * 1000))Total: 3000Total: 3 * 1000Total: 31000Un error
- «La primera letra es word[1]». Los índices empiezan en 0, así que word[1] es la segunda letra. El último índice válido es len(word) - 1; "Python"[6] se detiene con IndexError: string index out of range.
- «"Age: " + 15 imprime Age: 15» Una cadena y un int no se pueden unir con +. Python se detiene con TypeError: can only concatenate str (not "int") to str. Usa str(15) o una f-string.
- «Puedo corregir una letra con word[0] = "J"». Las cadenas no se pueden cambiar en el sitio: TypeError: 'str' object does not support item assignment. En su lugar, arma una cadena nueva, por ejemplo "J" + word[1:].
- f"...{x}..." pone valores dentro del texto.
- Los índices empiezan en 0; -1 es el último carácter.
- s[a:b] va desde a hasta b sin incluir b.
- Los métodos como upper() devuelven una cadena nueva; la original no cambia.
- "\n" es un salto de línea dentro de una cadena.
Fuentes de este curso (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Fecha de consulta: 2026-10-19