Trabaja con cadenas de caracteres en Python

Aprende a trabajar con texto en Python. Accede a cualquier carácter o sección de una cadena mediante índices y segmentos (slices), recorre el texto con bucles para contar, buscar y construir cadenas nuevas, y descubre por qué una cadena nunca puede modificarse sobre el objeto original. Usa métodos de cadena para cambiar entre mayúsculas y minúsculas, limpiar datos de entrada, buscar, comprobar, dividir y unir texto. Termina dando formato a la salida con cadenas formateadas (f-strings): números redondeados, separadores de miles, porcentajes, fechas y horas al estilo estadounidense y columnas bien alineadas.

PrincipianteUnidad 5 de 10 del curso Curso de Introducción a la programación con Python

Lo que aprenderás

  1. Escribe literales de cadena, mide y combina cadenas, y usa índices y segmentos para acceder a cualquier carácter o sección de un texto.
    • Escribe literales de cadena y combina cadenas
      Crea cadenas con comillas, secuencias de escape y comillas triples, calcula su longitud con len() y combínalas con + y *.
    • Selecciona caracteres individuales mediante índices
      Usa índices positivos y negativos para leer cualquier carácter de una cadena y evita los errores de desfase de una unidad (off-by-one) y los de cadenas vacías que lanzan IndexError.
    • Extrae segmentos de una cadena
      Extrae subcadenas con [start:stop] y [start:stop:step], usa posiciones omitidas y negativas, y predice exactamente qué caracteres incluye un segmento.
  2. Recorre una cadena con un bucle para contar, buscar y construir texto, teniendo en cuenta que los caracteres de una cadena nunca pueden modificarse sobre el objeto original.
    • Recorre los caracteres de una cadena con un bucle
      Visita cada carácter con bucles for y while, usa las posiciones cuando sean relevantes y aplica al texto los patrones de conteo, búsqueda y acumulación.
    • Construye cadenas nuevas en lugar de modificar las existentes
      Explica qué significa que las cadenas sean inmutables y produce texto modificado mediante segmentos, concatenación y reasignación.
  3. Llama a métodos de cadena para cambiar entre mayúsculas y minúsculas y limpiar texto, buscar y contar subcadenas, y comprobar qué contiene una cadena antes de usarla.
    • Cambia entre mayúsculas y minúsculas y limpia texto con métodos
      Llama a métodos con notación de punto para cambiar entre mayúsculas y minúsculas, eliminar caracteres no deseados, sustituir texto y añadir relleno a las cadenas, y encadena varios métodos.
    • Busca texto dentro de una cadena
      Comprueba si aparece una subcadena, encuentra dónde empieza, cuenta cuántas veces aparece y usa las posiciones encontradas para extraer texto.
    • Comprueba y compara cadenas
      Comprueba cómo empieza o termina una cadena y de qué está formada, valida los datos de entrada antes de convertirlos y predice cómo compara y ordena Python las cadenas.
  4. Divide una línea de texto en palabras o campos con split() y vuelve a combinar las partes en una sola cadena con join().
    • Divide una cadena en una lista de partes
      Usa split() con y sin separador, limita el número de divisiones y convierte las partes de una línea en los valores que necesita un programa.
    • Une cadenas con un separador
      Combina muchas cadenas en una con join(), elige el separador, convierte primero los elementos que no sean cadenas y combina split() con join() para reorganizar el texto.
  5. Construye una salida clara insertando valores en el texto con cadenas formateadas, dando un formato legible a números, fechas y horas, y alineando los resultados en columnas.
    • Inserta valores en el texto con cadenas formateadas
      Escribe cadenas formateadas que incorporen al texto los valores de variables y expresiones, y reconoce los estilos anteriores con format() y % en código existente.
    • Da un formato legible a números, fechas y horas
      Añade especificadores de formato para controlar las cifras decimales, el redondeo, los separadores de miles, los porcentajes, los signos y el relleno con ceros, y construye fechas y horas al estilo estadounidense.
    • Alinea la salida en columnas
      Establece anchuras de campo, alineación y caracteres de relleno, acorta el texto largo y combina estas opciones para imprimir tablas y recibos alineados.

Guía de estudio de Cadenas de caracteres en Python

5 capítulos

1

Crea cadenas y selecciona sus partes

El texto de un programa tiene tanto contenido como posición. Un nombre puede contener un espacio, un mensaje puede contener un salto de línea y un código puede mantener sus dos primeras letras separadas de su número. Puedes crear estas cadenas, combinarlas y seleccionar exactamente los caracteres que necesitas. Empieza por distinguir cómo se escribe el texto en Python del valor que contiene y después usa un esquema de posiciones para predecir el comportamiento de los índices y los segmentos.

1.1 Escribe literales de cadena y combina cadenas

Una cadena de caracteres es una secuencia de caracteres de tipo str. Puede contener un nombre, una oración, un código o ningún carácter. Python conserva los caracteres en orden, incluidos los espacios y los signos de puntuación.

Escribe el valor entre comillas del mismo tipo

Las comillas simples y dobles crean el mismo tipo de valor: 'hello' y "hello" son iguales. Las comillas externas marcan los límites; no son caracteres del valor. Elige unas comillas que permitan leer fácilmente las que haya dentro:

message = "It's late"
reply = 'She said "yes"'
empty = ""

En 'It's late', el apóstrofo cierra la cadena demasiado pronto y provoca un SyntaxError. Las comillas dobles lo resuelven, o puedes escribir 'It\'s late'. Usa comillas rectas en el código.

Almacena saltos de línea y barras inversas

Una secuencia de escape empieza con una barra inversa. Python interpreta \n como un salto de línea, \t como una tabulación y \\ como una barra inversa. Las comillas con escape, \' y \", introducen caracteres de comillas en el texto.

text = "a\nb"
print(len(text))  # 3
print(text)

La última llamada imprime a y b en líneas separadas. El valor tiene tres caracteres: a, un salto de línea y b. Las secuencias de escape se procesan cuando Python lee el literal. La consola muestra una representación con comillas y secuencias de escape donde hacen falta; print() muestra los propios caracteres. Por ejemplo, "\x41" se convierte en "A", por lo que la consola no necesita mostrar la secuencia de escape original.

Las comillas triples permiten que un literal ocupe varias líneas. Cada salto de línea de su interior se convierte en un carácter de salto de línea:

notice = """Door closed
Use side entrance"""

Una cadena sin procesar tiene una r antes de sus comillas. En r"C:\new", la barra inversa y la n se mantienen separadas, lo que da seis caracteres. En "C:\new", \n se convierte en un salto de línea, lo que da cinco. Los literales sin procesar son útiles cuando las barras inversas forman parte del texto.

Mide y combina texto

len() cuenta todos los caracteres, incluidos los espacios: len("Hi there!") es 9, y len("") es 0. Más exactamente, cuenta puntos de código Unicode. len("café") es 4 cuando é es un solo punto de código; len("👍🏽") es 2, aunque el emoji parezca un solo símbolo.

Usa + para concatenar cadenas y * para repetir una:

first = "Ada"
last = "Lovelace"
full = first + " " + last  # "Ada Lovelace"
rule = "-" * 10           # ten dashes

La concatenación no inserta nada por ti. Sin " ", los nombres se convierten en "AdaLovelace". Repetir "ab" cero veces da la cadena vacía.

Decide si los dígitos son texto o números

Ambos operandos de una concatenación de cadenas deben ser cadenas. "Age: " + 30 lanza TypeError; "Age: " + str(30) da "Age: 30". A la inversa, input() devuelve texto: "3" + "4" da "34". Para sumar sus valores numéricos, conviértelos primero: int("3") + int("4") da 7.

Puntos clave

  • Una cadena almacena una secuencia ordenada de caracteres; sus comillas externas forman parte de la sintaxis.
  • es un carácter de salto de línea, mientras que los literales sin procesar mantienen separadas la barra inversa y la letra que la sigue.
  • len() cuenta puntos de código, incluidos los espacios y los signos de puntuación.
  • + une cadenas sin añadir espacios; * repite una cadena.
  • Convierte el texto en números para hacer operaciones aritméticas y los números en texto para concatenar.

1.2 Selecciona caracteres individuales mediante índices

Un índice selecciona un carácter por su posición. Python empieza a contar en cero, por lo que la posición de un carácter es una unidad menor que su lugar en un conteo habitual desde la izquierda.

Dibuja las posiciones

Para word = "Python", cada carácter tiene un índice no negativo y un índice negativo:

CarácterPython
Desde el inicio012345
Desde el final-6-5-4-3-2-1
word = "Python"
print(word[0])   # P
print(word[1])   # y
print(word[-1])  # n

Los corchetes situados después de la cadena seleccionan el carácter. El resultado es una cadena de longitud uno: Python no tiene un tipo independiente para caracteres. Puedes unir los caracteres seleccionados, por lo que word[0] + word[-1] da "Pn".

Para una longitud n, los índices válidos van de -n a n - 1 cuando n > 0. Los índices no negativos cuentan desde el inicio; los negativos cuentan desde el final. Un índice -k selecciona el mismo carácter que n - k; en esta palabra de seis caracteres, tanto -2 como 4 seleccionan "o".

Distingue la longitud del último índice

len(word) es 6, pero word[6] lanza IndexError: no hay un séptimo carácter. El último carácter es word[len(word) - 1] o, simplemente, word[-1]. Ir demasiado lejos desde cualquiera de los extremos falla; word[-7] también lanza IndexError.

Un índice debe ser un número entero. word[1.0] lanza TypeError aunque el número de coma flotante tenga un valor entero. Usa // al calcular una posición central:

word = "Pyt"
middle = len(word) // 2  # 1
print(word[middle])      # y

El operador / produciría 1.5, que no puede usarse como índice de una cadena. Para una longitud impar, len(word) // 2 selecciona el carácter central. Para una longitud par, selecciona el de la derecha de los dos caracteres centrales: "Python"[3] es "h".

Construye iniciales a partir de los primeros caracteres
first = "Grace"
last = "Hopper"
initials = first[0] + last[0]
print(initials)  # GH

Cada nombre aporta su carácter del índice 0. Usar first[-1] aportaría "e", la última letra. Este método requiere que cada nombre tenga al menos un carácter.

Comprueba si la entrada está vacía antes de usar un índice

La cadena vacía tiene longitud cero y ningún índice de carácter válido. ""[0] lanza IndexError. Una comprobación de longitud puede evitar que un programa lea un carácter que no existe:

line = input("Comment: ")
if len(line) > 0 and line[0] == "#":
    print("Comment line")

Python evalúa and de izquierda a derecha. Si la comprobación de longitud es falsa, omite line[0]. Invertir esas dos comprobaciones intentaría primero el acceso mediante el índice inseguro. Cuando solo necesitas saber si una línea empieza por "#", line.startswith("#") también funciona con una entrada vacía y devuelve False.

Puntos clave

  • El índice 0 selecciona el primer carácter; el índice -1 selecciona el último.
  • El último índice no negativo es len(text) - 1.
  • El acceso mediante índices devuelve una cadena de un carácter y lanza IndexError si la posición no existe.
  • Usa un índice entero y comprueba si la entrada está vacía antes de seleccionar un carácter.

1.3 Extrae segmentos de una cadena

Un segmento selecciona una secuencia continua de caracteres y la devuelve como una cadena. Te permite tomar un prefijo, eliminar un final o separar campos que ocupan posiciones fijas.

Se incluye el inicio y se excluye el final

Escribe text[start:stop]. Con s = "Monty Python", s[0:5] da "Monty", y s[6:12] da "Python". El espacio está en el índice 5, por lo que el segundo segmento empieza en 6.

Imagina los números del segmento como huecos. El hueco 0 está antes del primer carácter y el hueco 5 está después de los primeros cinco. Tomar todo lo que hay entre ellos da cinco caracteres. Para 0 <= start <= stop <= len(text), la longitud es stop - start.

word = "Monty"
print(word[0:4])  # Mont
print(word[0:5])  # Monty

La posición final es la primera posición que queda fuera. Sumar uno al último índice deseado incluye ese último carácter.

Omite un límite
SegmentoSignificadoResultado para s
s[:5]Desde el inicio hasta la posición 4"Monty"
s[6:]Desde la posición 6 hasta el final"Python"
s[:]Cadena completa"Monty Python"
s[-6:]Últimos seis caracteres"Python"
s[:-1]Todo excepto el último carácter"Monty Pytho"

En cualquier posición de división k, s[:k] + s[k:] devuelve s. Los segmentos se encuentran en el mismo hueco, sin que falte ni se repita ningún carácter.

Los límites de un segmento que superan los extremos se ajustan. "cat"[1:100] es "at"; "cat"[5:] es "". Para un segmento que avanza hacia delante, un inicio situado en el límite final o después da una cadena vacía, como en s[4:2]. A diferencia de un índice de un solo carácter, un segmento fuera de rango no lanza IndexError.

Elige un paso

La tercera posición de text[start:stop:step] establece cuánto avanzar entre las posiciones seleccionadas:

letters = "abcdefgh"
print(letters[::2])   # aceg
print(letters[1::2])  # bdfh
print(letters[::-1])  # hgfedcba

Un paso negativo retrocede. Con ambos límites omitidos, [::-1] empieza en el último carácter y visita todos los caracteres en orden inverso. Un paso de cero lanza ValueError. La dirección debe concordar con los límites: la regla anterior del resultado vacío cuando «el inicio está en el límite final o después» corresponde a un paso positivo.

Aplica segmentos a una estructura fija
d = "2026-07-04"
year = d[:4]
month = d[5:7]
day = d[8:10]
print(month + "/" + day + "/" + year)  # 07/04/2026

Las posiciones funcionan porque esta estructura siempre usa cuatro dígitos para el año y dos para el mes y el día. El texto con campos de longitud variable necesita una búsqueda o una división.

La inversión también permite comprobar si una palabra es un palíndromo: word == word[::-1]. "level" cumple la condición, pero "Level" no, porque se distingue entre mayúsculas y minúsculas. Asigna clean = word.lower() y comprueba clean == clean[::-1] para ignorar esa distinción.

Puntos clave

  • Un segmento incluye su inicio y excluye su límite final.
  • Los límites omitidos y las posiciones negativas facilitan seleccionar prefijos y finales.
  • Los límites de un segmento fuera de rango se ajustan; un paso de cero lanza ValueError.
  • Un paso negativo retrocede; [::-1] invierte la cadena completa.
  • Los segmentos de posiciones fijas dependen de que el texto tenga una estructura uniforme.
2

Procesa cadenas carácter a carácter

Un bucle puede examinar cada carácter, mantener un conteo acumulado, detenerse en la primera coincidencia o construir un mensaje nuevo. Los mismos patrones sencillos sirven para muchas tareas con texto: contar vocales, encontrar un dígito u ocultar determinadas letras. Las cadenas también tienen un valor fijo una vez creadas. Seguir un bucle pasada a pasada te mostrará cómo puede un programa producir texto modificado mientras la cadena original permanece intacta, y por qué asignar un valor a una variable es distinto de editar un carácter.

2.1 Recorre los caracteres de una cadena con un bucle

Usa un bucle cuando haya que tomar una decisión sobre cada carácter. El bucle puede contar coincidencias, usar sus posiciones, detenerse en la primera coincidencia o recoger los caracteres que deban formar parte de un resultado.

Visita los caracteres directamente
for ch in "hi!":
    print(ch)

El cuerpo se ejecuta tres veces, con ch igual a "h", "i" y "!" por turno. La cadena vacía ejecuta el cuerpo cero veces. Un bucle que recorre directamente los caracteres no necesita un índice cuando solo usas el carácter actual.

Para contar, inicializa el contador antes del bucle e increméntalo solo cuando se supere la comprobación:

text = "Programming in Python"
count = 0
for ch in text.lower():
    if ch in "aeiou":
        count += 1
print(count)  # 5

Convertir a minúsculas hace que también coincidan las vocales mayúsculas. La cadena de comprobación define las vocales que se cuentan; no incluye y. Reiniciar count dentro del bucle haría perder el total de las pasadas anteriores.

Usa posiciones cuando importen los caracteres vecinos

range(len(text)) proporciona los índices desde cero hasta el último índice válido. Para una tarea que necesite tanto la posición como el carácter, enumerate(text) los proporciona juntos:

for i, ch in enumerate("abc"):
    print(i, ch)

Esto imprime 0 a, después 1 b y después 2 c. Las dos variables del bucle reciben el índice y el carácter de cada par.

Para comparar caracteres vecinos, el último índice no puede ser la posición actual porque no tiene un carácter siguiente:

text = "bookkeeper"
pairs = 0
for i in range(len(text) - 1):
    if text[i] == text[i + 1]:
        pairs += 1
print(pairs)  # 3

Las coincidencias son oo, kk y ee. Con range(len(text)), la última pasada intentaría acceder a text[len(text)] y lanzaría IndexError.

Gestiona una posición con while
i = 0
while i < len(text):
    print(text[i])
    i += 1

La comprobación usa estrictamente <: la posición len(text) está más allá del final. El incremento acerca el bucle a su terminación; omitirlo hace que se lea el mismo carácter indefinidamente si el texto no está vacío. Para recorrer hacia atrás, empieza en len(text) - 1, continúa mientras i >= 0 y resta uno en cada pasada.

Busca o recoge caracteres

Para encontrar el primer dígito de "Room 42B", detente después de usar una coincidencia:

for ch in "Room 42B":
    if ch.isdigit():
        print(ch)  # 4
        break

Sin break, se imprimirían ambos dígitos. Para una comprobación sencilla de presencia, "4" in text ya responde sí o no.

Para recoger texto, empieza con result = "" y añade cada carácter deseado. Para "a b c", añadir solo cuando ch != " " construye "abc". Asignar ch = ch.upper() dentro de un bucle cambia solo la variable del bucle; no cambia los caracteres almacenados en text.

Puntos clave

  • Un bucle for directo visita cada carácter en orden.
  • Inicializa los contadores y acumuladores antes del bucle.
  • enumerate() proporciona cada índice junto con su carácter.
  • Detente una posición antes cuando leas text[i + 1].
  • Un bucle while necesita un límite seguro y una actualización de la posición.
  • break detiene una búsqueda en su primera coincidencia.

2.2 Construye cadenas nuevas en lugar de modificar las existentes

Las cadenas son inmutables: sus caracteres no pueden cambiarse una vez que existe la cadena. Un programa que parece editar texto está construyendo otra cadena y eligiendo qué variable se referirá a ella.

Lee un carácter, pero no le asignes un valor
name = "Jane"
name[0] = "D"  # TypeError

El acceso mediante el índice permite leer "J", pero no puede ser el destino de una asignación. del name[0] también lanza TypeError. Para obtener "Dane", combina el primer carácter deseado con el final sin modificar:

name = "Jane"
name = "D" + name[1:]
print(name)  # Dane

Python evalúa primero el lado derecho y produce una cadena nueva. Después hace que name se refiera a ese resultado.

Sustituye o inserta en una posición conocida

Para un índice no negativo válido i, estas expresiones usan segmentos distintos en la parte derecha:

TareaExpresión
Sustituir el carácter de itext[:i] + new + text[i + 1:]
Insertar antes del carácter de itext[:i] + new + text[i:]

La sustitución omite el carácter anterior; la inserción lo conserva. Con text = "cat", i = 1 y new = "X", la sustitución da "cXt", mientras que la inserción da "cXat".

Convierte un índice negativo en su equivalente no negativo antes de usar este patrón de sustitución. Para el último carácter de "cat", i = len(text) - 1 es 2. Si introduces -1 directamente en text[i + 1:], se convierte en text[0:], lo que añade toda la cadena anterior y da "caXcat".

Conserva el resultado de un método

Los métodos de transformación siguen la misma regla de inmutabilidad:

msg = "hello"
msg.upper()
print(msg)       # hello
msg = msg.upper()
print(msg)       # HELLO

La primera llamada calcula un resultado que el programa descarta. La asignación conserva el segundo resultado. Los métodos de cadena nunca cambian la cadena original, pero sus tipos de retorno varían: upper() devuelve una cadena, find() un número entero e isdigit() un booleano.

Sigue dos nombres que se refieren a un valor

Tras a = "cat" y b = a, ambas variables se refieren a "cat". Ejecutar a = a + "s" da a a el nuevo valor "cats"; b sigue refiriéndose a "cat". Ningún carácter de la cadena anterior compartida ha cambiado. a += "s" realiza el mismo tipo de reasignación para una cadena.

Construye un valor modificado en un bucle
word = "secret"
masked = ""
for ch in word:
    if ch in "aeiou":
        masked += "*"
    else:
        masked += ch
print(masked)  # s*cr*t
print(word)    # secret

Cada pasada amplía masked con un carácter elegido. Colocar cada carácter delante, con result = ch + result, invierte el texto: las pasadas por "drawer" construyen "d", "rd", "ard", "ward", "eward" y "reward".

La concatenación repetida es práctica para ejemplos breves. Cuando las partes ya existen en una lista, "".join(pieces) construye directamente un resultado y también puede colocar un separador entre ellas.

Puntos clave

  • Una cadena no puede cambiarse asignando o eliminando elementos.
  • La sustitución y la inserción construyen cadenas nuevas a partir de segmentos.
  • Conserva el resultado de una transformación asignándolo.
  • Reasignar una variable deja a las otras variables apuntando al valor anterior.
  • Un acumulador construye una cadena nueva añadiendo una parte elegida cada vez.
3

Transforma, busca y comprueba texto con métodos de cadena

Los métodos de cadena te permiten hacer preguntas útiles sobre el texto y producir versiones limpias de él. Un programa puede necesitar aceptar espacios adicionales en una respuesta, encontrar un separador o comprobar que una cantidad puede convertirse en un número. Elige un método según el resultado que necesites: texto modificado, una posición, un conteo o una comprobación booleana. Presta atención a las coincidencias exactas, al valor que se devuelve cuando falla una búsqueda y a la diferencia entre el orden del texto y el orden numérico.

3.1 Cambia entre mayúsculas y minúsculas y limpia texto con métodos

Un método es una función asociada a un valor. Los métodos de cadena realizan tareas habituales, como cambiar entre mayúsculas y minúsculas, recortar los extremos de los datos de entrada y sustituir texto. Cada llamada devuelve un resultado y deja intacta la cadena original.

Llama a un método con notación de punto

Escribe value.method(arguments), como en "hello".upper(). Los paréntesis hacen que se realice la llamada. name.upper sin paréntesis se refiere al propio método; no produce texto en mayúsculas. Escribir upper(name) no encuentra una función independiente llamada upper. Usa dir("") para enumerar los métodos de cadena y help(str.upper) para leer sobre uno.

Elige una operación de mayúsculas y minúsculas
MétodoResultado del ejemplo
"Hello".upper()"HELLO"
"Hello".lower()"hello"
"Hello".swapcase()"hELLO"
"the old man".title()"The Old Man"
"hELLO wORLD".capitalize()"Hello world"

capitalize() cambia el primer carácter y pone el resto en minúsculas; title() vuelve a empezar palabras después de caracteres que no son letras. Esto hace que "they're".title() se convierta en "They'Re", por lo que puede ser necesario revisar el uso automático de mayúsculas iniciales.

Para comparar sin distinguir entre mayúsculas y minúsculas, casefold() maneja más casos entre distintos idiomas que lower(). "Straße".lower() es "straße", mientras que "Straße".casefold() es "strasse". Aplica esta normalización a ambas cadenas antes de compararlas.

Limpia los extremos del texto

strip() elimina los caracteres de espacio en blanco iniciales y finales, incluidos espacios, tabulaciones y saltos de línea. Conserva el espaciado interno: " New York \n".strip() es "New York". lstrip() limpia solo el extremo izquierdo; rstrip() limpia solo el derecho.

Con un argumento, la eliminación retira repetidamente de los extremos cualquiera de esos caracteres. No elimina una palabra exacta:

print("...Wow!!!".strip(".!"))          # Wow
print("report.txt".rstrip(".txt"))     # repor
print("report.txt".removesuffix(".txt"))  # report

La t final de report también pertenece al conjunto de caracteres que se eliminan, por lo que desaparece. removeprefix() y removesuffix() eliminan un texto exacto en un extremo; están disponibles en Python 3.9 y versiones posteriores.

Sustituye coincidencias y encadena cambios

replace(old, new) sustituye cada coincidencia exacta. Un tercer argumento limita cuántas coincidencias cambian: "a-b-c".replace("-", "", 1) da "ab-c". Una sustitución vacía elimina las coincidencias. Se distingue entre mayúsculas y minúsculas, por lo que "Cat cat".replace("cat", "dog") da "Cat dog".

answer = "  YES \n"
answer = answer.strip().lower()
print(answer == "yes")  # True

Las llamadas se ejecutan de izquierda a derecha: strip() devuelve "YES" y después lower() devuelve "yes". Un encadenamiento funciona cuando el siguiente método es compatible con el tipo del resultado anterior. El resultado de una búsqueda es un número entero, por lo que no admite métodos de limpieza de cadenas.

Para añadir relleno, "7".zfill(3) da "007", "Total".ljust(8) añade tres espacios a la derecha y "Hi".center(8, "*") da "***Hi***". rjust() añade relleno a la izquierda. Estas anchuras son mínimas; el texto más largo se conserva completo.

Puntos clave

  • Usa notación de punto y paréntesis para llamar a un método de cadena.
  • Las operaciones de mayúsculas y minúsculas tienen distintas funciones; casefold() permite comparar texto de distintos idiomas.
  • strip(chars) elimina un conjunto de caracteres de los extremos; los afijos exactos necesitan removeprefix() o removesuffix().
  • replace() busca texto exacto y puede limitar el número de cambios.
  • Los encadenamientos de transformaciones se ejecutan de izquierda a derecha sobre cada cadena devuelta.
  • El relleno añade caracteres hasta alcanzar una anchura mínima.

3.2 Busca texto dentro de una cadena

La búsqueda puede responder a tres preguntas distintas: si aparece un texto, dónde empieza y cuántas veces aparece. Elige el resultado que se ajuste a la decisión que deba tomar tu programa.

Elige un resultado de búsqueda
HerramientaResultadoCuando no hay coincidencias
sub in textPresencia como True o FalseFalse
text.find(sub)Índice inicial de la primera coincidencia-1
text.rfind(sub)Índice inicial de la última coincidencia-1
text.index(sub)Índice inicial de la primera coincidenciaLanza ValueError
text.count(sub)Número de coincidencias sin solapamiento0

Una subcadena es una secuencia de caracteres consecutivos. "py" in "happy" es True, pero "hpy" in "happy" es False. Las coincidencias distinguen entre mayúsculas y minúsculas: "Py" in "python" es False. not in invierte la comprobación de presencia. La cadena vacía aparece en todas las cadenas.

Encuentra la aparición adecuada
text = "banana"
print(text.find("an"))     # 1
print(text.find("an", 2))  # 3
print(text.rfind("an"))    # 3

La posición inicial opcional omite los posibles resultados anteriores. El índice devuelto sigue contando desde el principio de la cadena completa. index() devuelve la misma posición cuando hay una coincidencia, pero el error que lanza si no la hay lo hace útil cuando la ausencia indica un problema inesperado.

Comprueba una posición antes de extraer segmentos
email = "maria.lopez@example.org"
at = email.find("@")
if at != -1:
    user = email[:at]
    domain = email[at + 1:]
    print(user)    # maria.lopez
    print(domain)  # example.org

La búsqueda devuelve 11. El primer segmento se detiene antes de @; el segundo empieza un carácter después. Si faltara el marcador, at sería -1. Usarlo como límite de un segmento seleccionaría texto cercano al final sin avisar, así que maneja la ausencia del marcador antes de extraer las partes.

No uses if text.find("x"): como comprobación de presencia. Una coincidencia en el índice 0 se considera falsa en una condición, mientras que el valor -1 que indica ausencia se considera verdadero. Usa if "x" in text: o compara la posición explícitamente con -1.

Busca desde un marcador conocido

Para line = "Order #4521 shipped", el número va después de # y termina en el espacio siguiente:

start = line.find("#") + 1
end = line.find(" ", start)
number = line[start:end]
print(number)  # 4521

Aquí existen ambos marcadores. Empezar la segunda búsqueda en start omite el espacio anterior, situado después de Order. Si pueden faltar marcadores, comprueba el resultado original de cada búsqueda antes de sumar uno o extraer segmentos; sumar uno a -1 ocultaría el fallo de la búsqueda al convertirlo en 0.

Cuenta coincidencias completas

"banana".count("a") es 3, y "banana".count("ana") es 1. Las dos coincidencias posibles de ana se solapan, por lo que count() no cuenta ambas. Del mismo modo, "aaaa".count("aa") es 2.

Para ignorar las diferencias entre mayúsculas y minúsculas, busca en una versión convertida, como "python" in sentence.lower(). La búsqueda sigue buscando coincidencias exactas dentro de esa versión. Los conteos y las comprobaciones de presencia pueden usar directamente la cadena convertida; un índice pertenece a la cadena concreta en la que se ha buscado.

Puntos clave

  • Usa in para comprobar la presencia, un método de búsqueda para la posición y count() para la frecuencia.
  • find() y rfind() devuelven -1 cuando falta el texto; index() lanza ValueError.
  • Comprueba el resultado de una búsqueda antes de usarlo como índice o límite de un segmento.
  • Un argumento de inicio omite las coincidencias anteriores y conserva los índices de la cadena completa.
  • count() cuenta coincidencias sin solapamiento.

3.3 Comprueba y compara cadenas

Las comprobaciones de cadenas devuelven booleanos que pueden guiar una condición. Te ayudan a aceptar datos de entrada que cumplan una regla y a comparar texto de manera uniforme.

Comprueba los extremos o los caracteres

startswith() y endswith() comprueban texto exacto en los extremos. Una tupla permite que una comprobación acepte varios finales: name.endswith((".jpg", ".png")). "photo.PNG", con su extensión en mayúsculas, no supera esa comprobación a menos que la conviertas primero a minúsculas.

ComprobaciónVerdadera cuando la cadena no vacía tiene…
isalpha()Solo letras
isalnum()Solo letras o dígitos
isdigit()Solo caracteres de dígitos Unicode
isdecimal()Solo caracteres de dígitos decimales
isspace()Solo caracteres de espacio en blanco

Las cinco devuelven False para "". Las letras no tienen que ser del inglés: "café".isalpha() es True. El espacio de "hello world" hace que isalpha() sea falso.

isupper() e islower() examinan los caracteres que tienen mayúscula y minúscula y requieren al menos uno. "ABC1".isupper() es True; el dígito no invalida las letras mayúsculas. "123" no tiene caracteres con mayúscula y minúscula, por lo que ambas comprobaciones son falsas.

Valida antes de convertir

Una comprobación de dígitos no describe todos los números que Python puede leer. "-5".isdigit(), "3.5".isdigit() y " 42".isdigit() son falsas porque un signo, un punto o un espacio no son dígitos. Además, "²".isdigit() es verdadera aunque int("²") falle. isdecimal() rechaza ese superíndice y resulta adecuada para introducir un número entero no negativo escrito solo con dígitos.

text = input("Tickets: ").strip()
if text.isdecimal() and int(text) > 0:
    print("Accepted")
else:
    print("Enter a positive whole number")

La comprobación de la cadena se ejecuta primero. Cuando es falsa, and omite la conversión, evitando errores con entradas vacías o no numéricas. " 12 " se convierte en "12" y supera la comprobación; "0" se convierte sin problemas, pero no supera la comprobación de valor positivo. Esta regla rechaza deliberadamente las entradas con signo o punto decimal.

Una regla para nombres de usuario puede combinar comprobaciones de longitud y caracteres: 3 <= len(name) <= 12 and name.isalnum(). "ada99" se acepta, "ada 99" no supera la comprobación de caracteres y "ad" no supera la de longitud.

Compara texto limpio

La igualdad requiere los mismos caracteres en el mismo orden. "Yes" == "yes" y "yes " == "yes" son falsas. Para respuestas en las que deban ignorarse las diferencias entre mayúsculas y minúsculas y los espacios en blanco de los extremos, compara typed.strip().casefold() con expected.strip().casefold().

La ordenación funciona carácter a carácter. El primer punto de código Unicode distinto decide. ord("A") es 65, ord("Z") es 90 y ord("a") es 97; chr(97) da "a". Por tanto, "Zebra" < "apple" es verdadera. Cuando una cadena es un prefijo de la otra, la más corta va primero: "app" < "apple".

Las cadenas de dígitos también usan el orden de los caracteres: "10" < "9" es verdadera porque "1" va antes que "9". Convierte los valores a números al comparar cantidades. Las letras acentuadas también requieren cuidado: ord("é") es 233, por lo que "école" > "zoo" es verdadera. Esta ordenación incorporada sigue los puntos de código, no el orden de un diccionario de un idioma.

Puntos clave

  • Las comprobaciones de cadenas devuelven booleanos; las de caracteres también comprueban que la cadena no esté vacía.
  • isdecimal() es más estricta que isdigit() para datos de entrada destinados a int().
  • Usa una comprobación de caracteres antes de una conversión numérica protegida por una condición.
  • Limpia ambas cadenas de manera uniforme cuando no deban importar las mayúsculas, las minúsculas y los espacios de los extremos.
  • La ordenación de cadenas usa el primer punto de código distinto; el orden numérico necesita valores numéricos.
4

Divide texto en partes y une las partes para formar texto

Una línea de texto suele contener varias partes útiles: palabras de un mensaje, campos de un registro o partes de un código. La división convierte esa línea en una colección ordenada que puedes examinar, contar y convertir. La unión construye una cadena a partir de partes con un separador que tú eliges. Las reglas del separador determinan si se conservan los campos vacíos y el espaciado original, por lo que la elección es relevante cuando limpias texto o necesitas reconstruirlo exactamente.

4.1 Divide una cadena en una lista de partes

split() convierte una cadena en una lista de cadenas. Una lista es una colección ordenada escrita entre corchetes. Puedes leer un elemento mediante su índice, recorrer los elementos con un bucle o contarlos con len().

Elige espacios en blanco o un separador exacto

Sin argumentos, split() trata una secuencia de caracteres de espacio en blanco como un solo límite e ignora los de ambos extremos:

words = "  the quick  brown fox ".split()
print(words)       # ['the', 'quick', 'brown', 'fox']
print(len(words))  # 4
print(words[0])    # the

Con un separador explícito, cada aparición exacta produce un corte. Los separadores consecutivos conservan un campo vacío:

fields = "red,green,,blue".split(",")
# ["red", "green", "", "blue"]

El tercer elemento vacío puede representar un valor que se ha dejado en blanco. Sigue contando como un elemento de la lista.

ExpresiónResultado
"a b".split()["a", "b"]
"a b".split(" ")["a", "", "b"]
"a,b".split(", ")["a,b"]

Un separador puede contener varios caracteres, pero todos deben coincidir. Si no aparece ningún separador, el resultado contiene la cadena original completa como un solo elemento. Por tanto, dividir por coma y espacio es distinto de dividir por una coma.

Limita cuánto texto se divide

El segundo argumento, maxsplit, limita el número de cortes, no el número de elementos resultantes:

print("key=value=more".split("=", 1))
# ["key", "value=more"]
print("archive.tar.gz".rsplit(".", 1))
# ["archive.tar", "gz"]

split() empieza por la izquierda; rsplit() empieza por la derecha. Un corte desde la derecha separa la última extensión del archivo sin cortar en los puntos anteriores.

Lee campos y convierte cantidades
line = "Lovelace,Ada,1815"
parts = line.split(",")
if len(parts) == 3:
    last = parts[0]
    first = parts[1]
    year = int(parts[2])
    print(f"{first} {last} was born in {year}.")

La salida es "Ada Lovelace was born in 1815.". La comprobación de longitud evita que un elemento ausente provoque IndexError. No comprueba que el año sea numérico; eso necesita una regla de entrada independiente cuando los datos puedan ser inválidos.

Cada parte obtenida al dividir empieza siendo una cadena. Para sumar "3 14 15", inicializa total = 0, recorre line.split() con un bucle y añade int(part). El resultado es 32; concatenar las partes sin convertir uniría los dígitos.

Un separador explícito conserva los espacios de alrededor. "a, b".split(",") da ["a", " b"]. Llama a strip() en cada parte si no quieres esos espacios.

Reconoce dos resultados relacionados

splitlines() separa por los saltos de línea: "line one\nline two".splitlines() da dos cadenas. partition("=") siempre devuelve una tupla de tres partes: el texto anterior al primer separador, el separador y el texto posterior. "user=ada".partition("=") da ("user", "=", "ada"); con "user", da ("user", "", "").

Puntos clave

  • split() devuelve una lista ordenada de cadenas.
  • La división por espacios en blanco agrupa las secuencias; los separadores explícitos conservan los campos vacíos.
  • maxsplit limita los cortes y rsplit() empieza por la derecha.
  • Comprueba el número de campos antes de acceder mediante índices y convierte los campos numéricos antes de hacer operaciones aritméticas.
  • splitlines() separa líneas; partition() devuelve el texto anterior, el separador y el texto posterior.

4.2 Une cadenas con un separador

join() construye una cadena a partir de una secuencia de cadenas. La cadena situada antes del punto proporciona el separador, que aparece entre elementos contiguos.

Pon primero el separador
colors = ["red", "green", "blue"]
text = ", ".join(colors)
print(text)  # red, green, blue

Lee esto como «usa coma y espacio para unir los colores». No hay separador antes del primer elemento ni después del último. Puedes cambiar la estructura de la salida modificando solo el separador:

ExpresiónResultado
"".join(["a", "b", "c"])"abc"
"-".join(["a", "b", "c"])"a-b-c"
"\n".join(["a", "b", "c"])Un elemento en cada línea

join() pertenece a la cadena separadora. Escribir ["a", "b"].join(",") lanza AttributeError porque la lista no tiene un método join. Una sola llamada también se adapta al número de partes; no necesitas escribir una nueva cadena de operaciones + para cada longitud de lista distinta.

Convierte primero las partes que no sean cadenas

Todas las partes deben ser ya cadenas. ", ".join([1, 2, 3]) lanza TypeError. map(str, items) aplica str() a cada elemento, por lo que esto funciona:

items = [1, 2, 3]
text = " ".join(map(str, items))
print(text)  # 1 2 3

El str que se pasa a map() es la función de conversión. join() recibe las partes convertidas y devuelve una cadena.

Una cadena es en sí misma una secuencia de cadenas de un carácter, por lo que " ".join("ABC") da "A B C". Esto puede resultar útil, pero pasar una sola palabra cuando querías pasar una lista de palabras coloca separadores entre sus caracteres.

Reorganiza el espaciado y los separadores
text = "too   many    spaces"
cleaned = " ".join(text.split())
print(cleaned)  # too many spaces

Primero, la división por espacios en blanco produce las tres palabras. Unirlas con un espacio establece una separación uniforme y no deja espacios en los extremos. El espaciado original se pierde en el paso de división.

Con un separador explícito, los campos vacíos conservan información suficiente para reconstruir el texto exacto. Si s = "a,,b,", entonces s.split(",") da ["a", "", "b", ""], y ",".join(...) vuelve a dar "a,,b,". El separador debe ser el mismo para lograr esa reconstrucción exacta.

Cambiar el separador cambia la estructura: "-".join("2026/07/04".split("/")) da "2026-07-04". Aquí, replace("/", "-") también es una solución directa.

Recoge un resultado breve a partir de palabras

Para formar una sigla, divide "portable network graphics", empieza con acronym = "" y añade word[0].upper() por cada palabra. La división por espacios en blanco proporciona palabras no vacías, por lo que sus primeros caracteres existen. Esto construye "PNG". Si las letras ya están en una lista, ".".join(["P", "N", "G"]) construye "P.N.G" sin punto final.

Puntos clave

  • Llama a join() sobre el separador y pasa las partes como argumento.
  • Los separadores aparecen solo entre las partes, y cada parte debe ser una cadena.
  • Dividir por espacios en blanco y unir con un espacio uniformiza el espaciado.
  • Unir con el mismo separador explícito permite reconstruir el texto, incluidos los campos vacíos.
5

Da formato a la salida con cadenas formateadas

Una salida útil combina un valor correcto con una estructura legible. Una cadena formateada coloca valores y expresiones directamente dentro del texto y te permite elegir cómo se muestra cada campo: cifras decimales, agrupación, signos, fechas o columnas alineadas. Mantén separados el cálculo y la presentación. Un campo puede mostrar dos cifras decimales o un nombre abreviado mientras la variable original conserva su valor completo, listo para cálculos posteriores o para otra presentación.

5.1 Inserta valores en el texto con cadenas formateadas

Una cadena formateada es un literal de cadena con f o F antes de su comilla de apertura. En su interior, las llaves contienen expresiones cuyos valores se insertan en el texto.

Inserta variables y expresiones
name = "Ada"
age = 36
message = f"{name} is {age} years old."
print(message)  # Ada is 36 years old.

Los números se convierten en texto automáticamente dentro de un campo. El mismo mensaje podría usar concatenación y str(age), pero la cadena formateada mantiene visible la estructura final en un solo lugar.

Las llaves pueden contener operaciones aritméticas, llamadas a métodos o llamadas a funciones:

price = 4.5
qty = 3
print(f"Cost: {price * qty}")  # Cost: 13.5
print(f"Name: {name.upper()}")  # Name: ADA
word = "Python"
print(f"{len(word)} letters")  # 6 letters

Python evalúa cada expresión al ejecutar la línea. Una cadena guardada no permanece conectada a las variables usadas para construirla. Si qty cambia después de construir message, esa cadena conserva los caracteres que ya tiene.

Distingue el texto normal de los campos

Sin el prefijo, "Hello {name}" es texto normal y conserva sus llaves. La falta de f es una causa habitual de que un programa imprima el nombre de la variable en lugar de su valor. Con el prefijo, un nombre al que no se haya asignado un valor lanza NameError al evaluar la expresión.

Para mostrar una llave literal, duplícala:

x = 5
print(f"{{x}} = {x}")  # {x} = 5

Las llaves duplicadas proporcionan el texto literal {x}. El par simple que rodea la última x proporciona su valor.

Facilita la lectura de las expresiones con comillas

Usa el otro tipo de comillas dentro de un campo:

print(f"Shout: {'hi'.upper()}")  # Shout: HI

Este estilo funciona en todas las versiones de Python con cadenas formateadas, que se introdujeron en la versión 3.6. Python 3.12 y versiones posteriores también permiten reutilizar dentro del campo el tipo de comillas externas. Las secuencias de escape siguen funcionando en las cadenas formateadas: f"Name: {name}\nAge: {age}" imprime en dos líneas.

Para mostrar información rápidamente durante la depuración, Python 3.8 y versiones posteriores aceptan = después de una expresión. Con x = 5, f"{x=}" da "x=5"; con total = 12, f"{total = }" da "total = 12". Los espacios escritos alrededor de la expresión y del signo igual aparecen en la salida.

Interpreta estilos de formato anteriores

El código Python existente puede construir el mismo texto de otras maneras:

EstiloEjemploResultado
Cadena formateadaf"{name} is {age}""Ada is 36"
Método de cadena"{} is {}".format(name, age)"Ada is 36"
Formato con porcentaje"%s is %d" % (name, age)"Ada is 36"

str.format() rellena los campos entre llaves con sus argumentos. Los campos numerados pueden reutilizar un argumento: "{0} {1} {0}".format("a", "b") da "a b a". En el formato con porcentaje, %s inserta texto y %d un número entero. Reconocer esos campos te ayuda a leer un programa aunque se escribiera antes de que las cadenas formateadas fueran habituales.

Puntos clave

  • Una cadena formateada necesita el prefijo f y llaves alrededor de cada expresión.
  • Los campos se evalúan al ejecutar la cadena formateada; el texto guardado no se actualiza después.
  • Las llaves duplicadas muestran llaves literales.
  • str.format() y el formato con porcentaje son formas anteriores de insertar valores.

5.2 Da un formato legible a números, fechas y horas

Un especificador de formato controla cómo se muestra un valor. Coloca dos puntos después de la expresión y, a continuación, las instrucciones: f"{value:spec}". Dar formato devuelve texto y deja intacto el valor numérico original.

Establece las cifras decimales y comprende el redondeo

.Nf muestra exactamente N dígitos después del punto decimal. f"{3.14159:.2f}" da "3.14", f"{2/3:.3f}" da "0.667" y f"{5:.2f}" da "5.00". .0f no muestra punto decimal: f"{7.6:.0f}" da "8".

El redondeo usa el valor realmente almacenado. La mayoría de las fracciones decimales son aproximaciones binarias muy cercanas. El número de coma flotante 2.675 está ligeramente por debajo de ese decimal exacto, por lo que f"{2.675:.2f}" da "2.67". Los valores situados exactamente a mitad de camino se redondean hacia una cifra final par: 0.125 se muestra como "0.12", mientras que 0.375 se muestra como "0.38" con dos cifras decimales. f"{2.5:.0f}" da "2". Los programas que necesitan cálculos monetarios exactos suelen almacenar los centavos enteros como números enteros.

Añade agrupación y porcentajes
EspecificadorResultado de ejemplo
f"{1234567:,}""1,234,567"
f"{1234567:_}""1_234_567"
f"{1234567.891:,.2f}""1,234,567.89"
f"{0.256:.1%}""25.6%"

Una coma agrupa los miles; el punto introduce la precisión decimal. Para un importe en dólares, deja el signo del dólar fuera del campo: con amount = 1250.5, f"${amount:,.2f}" da "$1,250.50".

El tipo % multiplica por 100 y añade %. Usa una fracción como 0.256 para mostrar 25.6%. Si proporcionas 25.6, el porcentaje mostrado se multiplica de nuevo. Sin una precisión explícita, % muestra seis cifras decimales.

Da formato a números enteros y partes de fechas

d es para números enteros. f"{42:d}" funciona, pero f"{3.0:d}" lanza ValueError porque un número de coma flotante no es un número entero. Un cero inicial antes de una anchura añade relleno con ceros; un signo más solicita un signo visible:

print(f"{7:03d}")   # 007
print(f"{5:+d}")    # +5
print(f"{-5:+d}")   # -5

Para el mes 7, el día 4 y el año 2026, f"{month:02d}/{day:02d}/{year}" construye "07/04/2026". Para la hora 9 y el minuto 5, f"{hour}:{minute:02d}" construye "9:05". El relleno con ceros evita que un minuto de un dígito aparezca como "9:5".

Combina las instrucciones en orden

El orden es relleno, alineación, signo, cero, anchura, agrupación, precisión y tipo. Puedes omitir las partes que no necesites. f"{12345.678:>12,.2f}" usa alineación a la derecha, anchura 12, agrupación con comas y dos decimales, lo que da " 12,345.68".

La precisión puede proceder de otra variable: con places = 3, f"{3.14159:.{places}f}" da "3.142". Los mismos especificadores funcionan en format(value, spec) y en los campos de str.format(). Conserva el número original para los cálculos; round(value, 2) devuelve un número redondeado cuando eso es lo que necesita el cálculo.

Puntos clave

  • Los dos puntos introducen instrucciones de presentación; el valor almacenado no cambia.
  • La precisión del formato de coma fija determina las cifras decimales, y el redondeo sigue el valor almacenado.
  • Una coma agrupa los miles; % multiplica una fracción por 100.
  • d requiere un número entero; el relleno con ceros mantiene legibles las partes de fechas y horas.
  • Conserva los números para las operaciones aritméticas y dales formato al mostrarlos.

5.3 Alinea la salida en columnas

Una anchura de campo reserva un número mínimo de posiciones de caracteres para un valor. Combinar anchuras hace que las tablas breves y los recibos sean legibles en una terminal.

Elige la anchura y la alineación

Las cadenas se alinean a la izquierda de forma predeterminada y los números a la derecha. f"{'cat':6}" da "cat ", mientras que f"{42:6}" da " 42". Usa un carácter de alineación para elegirla explícitamente:

CarácterSignificadoEjemplo
<Izquierdaf"{'hi':<6}" da "hi "
>Derechaf"{'hi':>6}" da " hi"
^Centrof"{'hi':^6}" da " hi "

Cuando al centrar queda un número impar de espacios, la alineación de las cadenas formateadas coloca el espacio adicional a la derecha: f"{'hi':^7}" da " hi ".

La anchura es un mínimo. f"{'elephant':4}" sigue dando "elephant"; no recorta la palabra. Por tanto, una entrada larga puede desalinear las columnas posteriores.

Añade un carácter de relleno o limita el texto

Un carácter de relleno va inmediatamente antes de la alineación. f"{'hi':*^10}" da "****hi****", y f"{7:0>3}" da "007". El relleno necesita un carácter de alineación. f"{'':-^20}" rellena un campo vacío con veinte guiones.

La precisión de cadena limita el número de caracteres que se muestran:

place = "Washington"
print(f"{place:.4}")      # Wash
print(f"|{place:10.4}|")  # |Wash      |

La precisión limita primero el texto mostrado a cuatro caracteres; después, la anchura lo rellena hasta diez. Usa una anchura y una precisión iguales cuando el texto deba permanecer dentro de una columna fija. El valor original de place sigue siendo "Washington".

Construye una fila de un recibo
item = "Apples"
qty = 3
price = 4.50
row = f"{item:<8}{qty:>4}{qty * price:>9.2f}"
print(row)

El resultado es "Apples 3 13.50". El campo del artículo tiene seis letras y dos espacios. El campo de cantidad añade tres espacios antes de 3. El campo de importe añade cuatro espacios antes de 13.50, que tiene cinco caracteres. Juntos, los campos ocupan 21 caracteres.

Reutiliza esas anchuras para el pan (1 a 2,25) y el café (2 a 11,00). Sus filas son "Bread 1 2.25" y "Coffee 2 22.00". Una fila de total puede combinar los dos primeros campos:

print(f"{'Total':<12}{37.75:>9.2f}")
# "Total           37.75"

El campo de importe empieza en la misma posición y tiene la misma precisión decimal, por lo que los importes quedan alineados.

Adapta la estructura a su presentación

Elige anchuras que dejen espacio para las entradas más largas y su separación, o acorta el texto de forma deliberada. Una variable puede proporcionar una anchura: con w = 10, f"{name:<{w}}" rellena name hasta diez caracteres.

Las columnas basadas en caracteres necesitan una fuente monoespaciada, como la que usa una terminal. Para añadir relleno fuera de una cadena formateada, ljust() y rjust() se comportan como < y >. center() y ^ centran el texto, pero pueden repartir de forma distinta un relleno impar: "hi".center(7) da " hi ", mientras que f"{'hi':^7}" da " hi ".

Puntos clave

  • La anchura establece un mínimo; la alineación decide dónde va el relleno.
  • El relleno precede a la alineación, y la precisión de cadena limita los caracteres mostrados.
  • Usa las mismas anchuras de campo y la misma precisión decimal en todas las filas.
  • Elige una presentación monoespaciada para las columnas basadas en caracteres.
  • center() y el centrado de las cadenas formateadas pueden colocar de forma distinta un relleno impar.

Ejemplos de Cadenas de caracteres en Python

5 Lecciones Interactivas

1

Descompón un código carácter a carácter

14 pasos
Crea una etiqueta, lee posiciones y extrae o invierte las secciones seleccionadas.
  1. 1
    IntroducciónLee una etiqueta de almacenamiento

    Una etiqueta de almacenamiento contiene letras, un guion y dígitos: "Box-482". Esto es una cadena, y cada carácter tiene un índice. Un programa puede necesitar la primera letra, el último dígito o toda la sección numérica (una rebanada).

    Construirás la etiqueta, dibujarás sus posiciones y seleccionarás sus partes. Sigue los caracteres exactos en cada paso; un espacio o un separador afecta a las posiciones igual que una letra.

  2. 2
    ExplicaciónDistingue la sintaxis del texto almacenado

    Una cadena de caracteres es una secuencia ordenada de caracteres. Las comillas externas le indican a Python dónde empieza y termina un literal; no forman parte de su valor.

    label = "Box-482"
    print(len(label))  # 7
    

    El guion es uno de los siete caracteres. Las comillas simples podrían delimitar el mismo valor. También puedes almacenar texto vacío con "", que tiene longitud cero.

  3. 3
    EjemploConstruye la etiqueta a partir de partes

    Empieza con la palabra y un código numérico:

    kind = "Box"
    number = 482
    label = kind + "-" + str(number)
    

    str(number) produce "482" y después las dos concatenaciones construyen "Box-482". El guion aparece porque es una de las partes proporcionadas. Omitir str() intentaría concatenar una cadena y un número entero, lo que lanza TypeError.

  4. 4
    DesafíoCuenta los caracteres de un valor con una secuencia de escape

    Un aviso breve se almacena como notice = "A\nB!". ¿Cuál es su longitud y cuántas líneas muestra print(notice)?

    ---reveal---

    La longitud es 4: A, un salto de línea, B y !. La impresión muestra dos líneas, con A en la primera y B! en la segunda. La secuencia de escape se procesa al leer el literal; la impresión revela el salto de línea que ya está en su valor.

  5. 5
    AnalogíaAsigna un número a cada posición

    Imagina la etiqueta como siete casillas numeradas en una fila. La numeración empieza en cero:

    Character: B o x - 4 8 2
    Index:     0 1 2 3 4 5 6
    

    label[0] da "B", y label[4] da "4". El resultado es una cadena de un carácter, aunque parezca un número. La posición 7 sería la octava casilla, que no existe en esta etiqueta.

  6. 6
    ExplicaciónCuenta hacia atrás desde el último carácter

    Los índices negativos usan el final como punto de referencia. Para "Box-482", label[-1] es "2" y label[-3] es "4".

    El equivalente no negativo de -3 es len(label) - 3, es decir, 4. Ambos seleccionan el mismo carácter. No hay una posición de cero negativo al final: -0 es simplemente 0, por lo que sigue seleccionando el primer carácter.

  7. 7
    DesafíoSelecciona un carácter sin ejecutar código

    Para code = "Tin-739", ¿cuál es el valor de code[-2]? ¿Seleccionaría code[len(code)] el último carácter?

    ---reveal---

    code[-2] es "3", el carácter justo anterior al 9 final. code[len(code)] lanza IndexError: una longitud de siete significa índices de cero a seis. La expresión para el último carácter es code[len(code) - 1], o code[-1].

  8. 8
    ConsejoProtege la lectura de un carácter

    Una entrada vacía no tiene ningún carácter en el índice cero. Coloca la comprobación de longitud antes de la lectura del carácter:

    if len(label) > 0 and label[0] == "B":
        print("Begins with B")
    

    Cuando la primera comprobación es falsa, and omite la segunda. Este orden es relevante: colocar label[0] primero ya fallaría con una entrada vacía antes de que Python pudiera llegar a la comprobación de longitud.

  9. 9
    ExplicaciónSelecciona toda la sección numérica

    Un segmento incluye su inicio y excluye su límite final:

    label = "Box-482"
    number_text = label[4:7]
    print(number_text)  # 482
    

    Las posiciones 4, 5 y 6 proporcionan los dígitos. El límite final 7 es la frontera situada después del último carácter. Como la selección llega hasta el final, label[4:] da el mismo resultado. No se produce ninguna conversión; el segmento sigue siendo texto.

  10. 10
    EjemploHaz que los dos segmentos se encuentren

    La sección izquierda termina en el límite donde empieza la sección numérica:

    left = label[:4]   # "Box-"
    right = label[4:]  # "482"
    print(left + right)  # Box-482
    

    El límite común 4 hace que las partes se encuentren sin huecos ni solapamientos. Por eso, s[:k] + s[k:] reconstruye una cadena. Usar label[:3] dejaría el guion fuera del resultado reconstruido.

  11. 11
    Idea claveEl límite de un segmento puede superar el final

    Compara label[99] con label[4:99]. El índice individual lanza IndexError, pero el segmento da "482".

    Un segmento ajusta un límite situado más allá de la cadena a su extremo disponible. Por tanto, label[99:] da texto vacío. Esto resulta útil para tomar hasta cierta cantidad de texto, pero también significa que un segmento incorrecto puede devolver menos caracteres de los esperados sin avisar.

  12. 12
    EjemploInvierte solo los dígitos seleccionados

    Primero extrae los dígitos y después invierte esa cadena nueva:

    digits = label[4:]
    backward = digits[::-1]
    print(backward)  # 284
    

    Un paso negativo recorre hacia atrás. Con ambos límites omitidos, el segmento visita todos los caracteres del último al primero. Un paso positivo de dos, en cambio, saltaría posiciones alternas. Un paso de cero no es válido y lanza ValueError.

  13. 13
    DesafíoConstruye una etiqueta modificada

    Para label = "Jar-916", ¿cuál es el valor de label[:4] + label[4:][::-1]? Explica qué sección conserva su orden.

    ---reveal---

    El resultado es "Jar-619". El primer segmento conserva "Jar-" intacto. El segundo selecciona primero "916" y después [::-1] invierte solo esos dígitos para obtener "619". La concatenación coloca los dos resultados juntos sin añadir otro separador.

  14. 14
    RepasoDistingue las posiciones de los límites

    Usa un índice para un carácter y un segmento para una sección. Las posiciones empiezan en cero; los índices negativos cuentan desde el final. Un segmento deja fuera su límite final, y su paso controla la dirección y la separación.

    Sigue primero los caracteres almacenados y después evalúa cada selección antes de combinar los resultados.

2

Construye un código con caracteres ocultos mediante un bucle

12 pasos
Sigue los contadores y la acumulación de cadenas y explica después por qué el texto original permanece intacto.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónConserva los dígitos y oculta las letras
  2. 2
    ExplicaciónPrepara los resultados acumulados
  3. 3
    EjemploToma una decisión por cada carácter
  4. 4
    EjemploSigue las pasadas restantes
  5. 5
    DesafíoSigue la ejecución con otra entrada
  6. 6
    ConexiónAñade posiciones solo cuando sean necesarias
  7. 7
    ConsejoDeja espacio para un carácter siguiente
  8. 8
    Idea claveLa cadena anterior no se ha editado
  9. 9
    EjemploConserva otro nombre para el valor anterior
  10. 10
    EjemploSustituye una posición con segmentos
  11. 11
    DesafíoSigue el valor y su copia guardada
  12. 12
    RepasoSigue cada variable a lo largo del bucle
3

Lee y valida un mensaje con etiquetas

16 pasos
Limpia el texto del usuario, localiza marcadores y aplica comprobaciones de entrada antes de la conversión numérica.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónProcesa una solicitud breve
  2. 2
    EjemploLimpia los espacios en blanco de los extremos
  3. 3
    ExplicaciónLlama a métodos y encadénalos
  4. 4
    DesafíoElige una operación para un final exacto
  5. 5
    ConexiónCompara texto con normalización de mayúsculas y minúsculas
  6. 6
    ExplicaciónPregunta si aparece, dónde o cuántas veces
  7. 7
    EjemploLocaliza el inicio del nombre
  8. 8
    EjemploBusca el final después del inicio
  9. 9
    ConsejoNo interpretes una posición como presencia
  10. 10
    DesafíoExtrae un campo entre marcadores
  11. 11
    EjemploExtrae el texto de los asientos
  12. 12
    ExplicaciónComprueba antes de convertir
  13. 13
    DesafíoAplica la misma regla de entrada
  14. 14
    Idea claveUna comparación de texto no compara cantidades
  15. 15
    DesafíoManeja un campo limpio y una búsqueda fallida
  16. 16
    RepasoUsa cada resultado para su función prevista
4

Convierte un registro en campos y texto legible

12 pasos
Divide un registro breve, convierte sus cantidades y une las partes eligiendo las reglas de separación.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónLee un registro sencillo
  2. 2
    ExplicaciónDivide por un separador exacto
  3. 3
    EjemploComprueba los campos antes de leerlos
  4. 4
    EjemploCalcula con los valores convertidos
  5. 5
    DesafíoConserva un valor ausente
  6. 6
    Idea claveLa división por espacios en blanco elige partes distintas
  7. 7
    ConsejoDetente después del corte que necesitas
  8. 8
    EjemploUne las partes de presentación con un separador
  9. 9
    DesafíoPredice una unión con partes vacías
  10. 10
    ConexiónElige entre limpieza y reconstrucción exacta
  11. 11
    DesafíoCorrige la presentación de un registro
  12. 12
    RepasoSigue los tipos a lo largo del registro
5

Da formato a un recibo breve

16 pasos
Construye cadenas formateadas, elige formatos numéricos y alinea una fila de un recibo sin cambiar los datos originales.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónDa una estructura legible a un cálculo
  2. 2
    EjemploInserta el importe de la línea
  3. 3
    DesafíoObserva cuándo se evalúa la expresión
  4. 4
    ConsejoMantén visible la sintaxis de los campos
  5. 5
    ExplicaciónElige dos cifras decimales
  6. 6
    Idea claveRedondea el valor que realmente se almacena
  7. 7
    EjemploMuestra una tasa como porcentaje
  8. 8
    DesafíoCombina agrupación y decimales
  9. 9
    ConexiónRellena partes de fechas y horas
  10. 10
    ExplicaciónReserva los campos del recibo
  11. 11
    EjemploCuenta los espacios de una fila
  12. 12
    ConsejoLa anchura no acorta un artículo largo
  13. 13
    DesafíoInterpreta un campo centrado con relleno
  14. 14
    DesafíoConstruye una segunda fila del recibo
  15. 15
    ConexiónAdapta la fuente a la estructura
  16. 16
    RepasoMantén separados el cálculo y la presentación

Ejercicios de Cadenas de caracteres en Python

50 Preguntas de Práctica en 5 sets

Set 1: Interpreta literales, índices y segmentos10 Preguntas de Práctica

Pregunta 1 de 10

¿Cuál es el valor de len("x\ty!")?
  1. 5
  2. 4
  3. 6
  4. 3
Mostrar respuestaOcultar respuesta
Respuesta: B
La secuencia de escape de tabulación es un carácter, por lo que el valor contiene x, una tabulación, y y !. Las comillas externas y los dos símbolos escritos que se usan para \t no son caracteres adicionales del valor. Contar la secuencia de escape como una barra inversa más una letra daría cinco.

Pregunta 2 de 10

¿Qué texto produce "Tag: " + str(8 * 2)?
  1. "Tag: 82"
  2. "Tag: 8 * 2"
  3. "Tag: 16.0"
  4. "Tag: 16"
Mostrar respuestaOcultar respuesta
Respuesta: D
La multiplicación se ejecuta primero y da el número entero 16, y str() lo convierte en "16". Después, la concatenación lo añade tras "Tag: ". Unir los dígitos escritos como "82" requeriría operandos de cadena; aquí la expresión multiplica dos números enteros antes de convertir.

Pregunta 3 de 10

¿Qué almacena r"D:\temp" después de los dos puntos?
  1. Una barra inversa seguida de temp.
  2. Una tabulación seguida de emp.
  3. Dos barras inversas seguidas de temp.
  4. Un salto de línea seguido de temp.
Mostrar respuestaOcultar respuesta
Respuesta: A
El prefijo de cadena sin procesar conserva la barra inversa como un carácter literal, por lo que permanece antes de las letras de temp. En un literal normal, el \t inicial se convertiría en una tabulación. La sintaxis de cadena sin procesar no añade una segunda barra inversa a la cadena almacenada; la única barra inversa escrita sigue siendo un carácter.

Pregunta 4 de 10

Con code = "R7K2", ¿cuál es el valor de code[-2]?
  1. "7"
  2. "2"
  3. "K"
  4. "R"
Mostrar respuestaOcultar respuesta
Respuesta: C
Los índices negativos cuentan desde el final: -1 selecciona "2" y -2 selecciona "K". El valor es una cadena de un carácter. Contar dos caracteres desde la izquierda seleccionaría "7", pero el signo negativo hace que el final de la cadena sea el punto de referencia inicial.

Pregunta 5 de 10

Con word = "orbit", ¿qué devuelve word[len(word) // 2]?
  1. "r"
  2. "i"
  3. Lanza TypeError.
  4. "b"
Mostrar respuestaOcultar respuesta
Respuesta: D
La longitud es cinco, por lo que la división entera con redondeo hacia abajo entre dos da el índice entero 2. Los índices 0, 1 y 2 seleccionan o, r y b, de modo que "b" es el carácter central. TypeError se produciría con un índice de coma flotante, pero aquí // produce un número entero.

Pregunta 6 de 10

¿Qué ocurre cuando se ejecuta este código con line = ""?

if len(line) > 0 and line[0] == ";":
    print("Skip")
  1. Lanza IndexError antes de comprobar la longitud.
  2. No imprime nada y no lanza ningún error.
  3. Imprime "Skip" una vez y se detiene.
  4. Lanza TypeError en la condición.
Mostrar respuestaOcultar respuesta
Respuesta: B
La comprobación de longitud es falsa, por lo que and omite la lectura del carácter y el cuerpo no se ejecuta. La cadena vacía provocaría IndexError si se evaluara line[0]. Aquí, el orden de las comprobaciones evita que se use ese índice con una entrada vacía.

Pregunta 7 de 10

¿Cuál es el valor de "notebook"[2:5]?
  1. "teb"
  2. "tebo"
  3. "ote"
  4. "te"
Mostrar respuestaOcultar respuesta
Respuesta: A
El segmento selecciona los índices 2, 3 y 4: t, e y b. El índice final 5 queda excluido, por lo que su o no aparece. Incluir ese carácter daría "tebo", lo que resulta de tratar el límite final como incluido en lugar de como la primera posición que queda fuera.

Pregunta 8 de 10

¿Cuál es el resultado de "map"[1:50]?
  1. "a"
  2. ""
  3. "ap"
  4. Lanza IndexError.
Mostrar respuestaOcultar respuesta
Respuesta: C
El segmento empieza en el índice 1 y continúa hasta el final porque el límite final excesivo se ajusta. Esto conserva a y p, lo que da "ap". Una lectura de un solo carácter como "map"[50] lanzaría IndexError, pero los límites de los segmentos pueden superar los caracteres disponibles.

Pregunta 9 de 10

¿Qué devuelve "0123456789"[1:8:3]?
  1. "148"
  2. "147"
  3. "1357"
  4. "1478"
Mostrar respuestaOcultar respuesta
Respuesta: B
Empieza en el índice 1 y avanza tres posiciones cada vez: 1, 4 y 7. La siguiente posición sería 10, más allá del límite final excluido 8. "1357" usa un paso de dos; el tercer argumento del segmento es la distancia entre las posiciones seleccionadas, no el número de caracteres deseados.

Pregunta 10 de 10

Con s = "red-blue", ¿cuál es el valor de s[-4:][::-1] + s[:3]?
  1. "derblue"
  2. "eulb-red"
  3. "eulbred"
  4. "blueeulb"
Mostrar respuestaOcultar respuesta
Respuesta: C
Los últimos cuatro caracteres son "blue"; invertir ese segmento da "eulb". El prefijo s[:3] es "red", por lo que la concatenación da "eulbred". El guion del índice 3 no pertenece a ninguno de los segmentos seleccionados y no se inserta automáticamente al unir las cadenas.
Set 2: Sigue la ejecución de bucles y los nuevos valores de cadena10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

¿Cuántas veces se ejecuta el cuerpo de for ch in "a b!":?
  1. 2
  2. 3
  3. 4
  4. 5
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

¿Qué se imprime?

total = 0
for ch in "Route 68":
    if ch.isdecimal():
        total += int(ch)
print(total)
  1. 14
  2. 2
  3. 68
  4. 8
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

¿Qué se imprime?

for ch in "Cab 53A":
    if ch.isdigit():
        print(ch)
        break
  1. 3
  2. 53
  3. 5 y después 3 en líneas separadas
  4. 5
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

¿Qué se imprime?

for i, ch in enumerate("lamp"):
    if i % 2 == 1:
        print(ch, end="")
  1. lm
  2. ap
  3. am
  4. lp
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

¿Qué valor se imprime?

s = "aaabb"
pairs = 0
for i in range(len(s) - 1):
    if s[i] == s[i + 1]:
        pairs += 1
print(pairs)
  1. 2
  2. 3
  3. 4
  4. 1
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

¿Qué texto se imprime?

s = "north"
i = len(s) - 1
result = ""
while i >= 0:
    result += s[i]
    i -= 2
print(result)
  1. hrn
  2. htr
  3. nrt
  4. hon
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

¿Qué contiene b después de este código?

a = "pine"
b = a
a = a.upper()
  1. "PINE" (todo en mayúsculas)
  2. "Pine" (solo la inicial en mayúscula)
  3. "" (texto vacío)
  4. "pine" (el texto original)
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Con s = "stone", ¿qué produce s[:2] + "X" + s[3:]?
  1. "stXone"
  2. "sXone"
  3. "stXne"
  4. "stXo"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

¿Qué par de valores se imprime?

word = "muse"
result = ""
for ch in word:
    if ch in "aeiou":
        result = ch.upper() + result
    else:
        result = ch + result
print(word, result)
  1. muse mUsE (palabra intacta, resultado con vocales en mayúsculas en orden original)
  2. mUsE EsUm (palabra con vocales en mayúsculas, resultado modificado e invertido)
  3. muse Esum (palabra intacta, una mayúscula en el resultado)
  4. muse EsUm (palabra intacta, resultado modificado e invertido)
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

¿Qué imprime este código?

s = "  west  "
s.strip()
s = s + "!"
print(len(s))
  1. 5
  2. 6
  3. 9
  4. 8
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 3: Limpia, busca y valida texto10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

¿Qué devuelve " Go Home ".strip().lower()?
  1. "gohome" (sin espacios)
  2. " go home " (espacios de los extremos conservados)
  3. "Go Home" (mayúsculas y minúsculas originales)
  4. "go home" (un espacio interno)
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

¿Qué devuelve "test.txt".rstrip(".txt")?
  1. "test"
  2. "test."
  3. "tes"
  4. "test.tx"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

¿Cuál es el valor de "A-a-a".replace("a", "x", 1).lower()?
  1. "a-x-a" (primera coincidencia en minúscula cambiada)
  2. "a-x-x" (ambas coincidencias en minúscula cambiadas)
  3. "x-a-a" (letra inicial cambiada)
  4. "A-x-a" (mayúscula inicial conservada)
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

¿Cuál es el valor de "cocoa".rfind("co")?
  1. 0
  2. 2
  3. 3
  4. 4
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

¿Qué se imprime?

s = "label"
p = s.find(":")
print(s[p:])
  1. l
  2. label
  3. Una línea vacía
  4. Lanza ValueError.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

¿Qué texto se extrae?

s = "Item [K9] ready [Q2]"
a = s.find("[")
b = s.find("]", a)
result = s[a + 1:b]
  1. "[K9"
  2. "Q2"
  3. "K9"
  4. "K9] ready [Q2"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

¿Cuál es el valor de "abababa".count("aba")?
  1. 3
  2. 1
  3. 0
  4. 2
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Un formulario usa s = raw.strip() y después s.isdecimal() and int(s) > 0. ¿Supera la entrada original " 08 " la comprobación y qué número entero representa?
  1. No la supera por los espacios de los extremos.
  2. La supera y representa 8.
  3. La supera y conserva el texto "08".
  4. No la supera por el cero inicial.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Para a = " Cedar " y b = "cedar", ¿qué par resulta de a == b y a.strip().casefold() == b.strip().casefold()?
  1. True, True
  2. False, False
  3. False, True
  4. True, False
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

¿Qué par resulta de "24" < "7" e int("24") < int("7")?
  1. False, False
  2. True, False
  3. False, True
  4. True, True
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 4: Divide registros y reconstruye texto10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

¿Cuál es el valor de len(" one\ttwo three ".split())?
  1. 4
  2. 3
  3. 5
  4. 6
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

¿Qué devuelve "A||C|".split("|")?
  1. ["A", "", "C", ""]
  2. ["A", "C"]
  3. ["A", "", "C"]
  4. ["A", "|C|"]
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

¿Cuál es el valor de "red;blue".split("; ")?
  1. ["red", "blue"]
  2. ["red", " blue"]
  3. ["red;blue"]
  4. ["red;", "blue"]
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

¿Qué se imprime?

parts = "Mina;4;6".split(";")
total = int(parts[1]) + int(parts[2])
print(f"{parts[0]}:{total}")
  1. Mina:46
  2. Mina:4
  3. Mina:6
  4. Mina:10
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

¿Cuál es el valor de "mode=fast=quiet".split("=", 1)[1]?
  1. "fast"
  2. "quiet"
  3. "fast=quiet"
  4. "mode=fast"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

¿Qué devuelve "status".partition(":")?
  1. ("", ":", "status")
  2. ("status", ":", "")
  3. ("status", "", "")
  4. ("", "", "status")
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

¿Qué produce " / ".join("ab")?
  1. "a / b"
  2. "ab"
  3. "a / b / "
  4. " / a / b"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

¿Cuál es el valor de "-".join("x::z:".split(":"))?
  1. "x-z"
  2. "x--z-"
  3. "x-z-"
  4. "x--z"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

¿Qué texto se almacena en result = " ".join(" bright\n blue sky ".split())?
  1. " bright blue sky "
  2. "brightblue sky"
  3. "bright blue sky"
  4. "bright blue sky"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

¿Qué produce ": ".join(map(str, [6, 11]))?
  1. "6: 11"
  2. "6:11"
  3. "6: 11: "
  4. Lanza TypeError.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 5: Construye valores y columnas legibles10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Con name = "Luca", ¿qué produce f"Hi, {name.upper()}!"?
  1. "Hi, Luca!" (mayúsculas y minúsculas originales del nombre)
  2. "Hi, {name.upper()}!" (campo sin evaluar)
  3. "Hi, LUCA!" (nombre en mayúsculas)
  4. "HI, LUCA!" (mensaje completo en mayúsculas)
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

¿Qué texto se imprime?

n = 4
label = f"{{n}}={n + 2}"
n = 9
print(label)
  1. {n}=11
  2. {n}=6
  3. 4=6
  4. 9=11
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

¿Cuál es el valor de f"{4826.5:,.2f}"?
  1. "4826.50"
  2. "4.826,50"
  3. "4,826.5"
  4. "4,826.50"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

¿Cuál es el valor de f"{0.0375:.1%}"?
  1. "0.0%"
  2. "3.8%"
  3. "3.7%"
  4. "37.5%"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Con n = 0.125, ¿qué par resulta de f"{n:.2f}" y n == 0.125?
  1. "0.12", True
  2. "0.13", True
  3. "0.12", False
  4. "0.13", False
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Con month = 11, day = 6, year = 2028, hour = 7 y minute = 3, ¿qué produce f"{month:02d}/{day:02d}/{year} {hour}:{minute:02d}"?
  1. "11/06/2028 7:03"
  2. "06/11/2028 7:03"
  3. "11/6/2028 7:3"
  4. "11/06/2028 07:03"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

¿Qué produce f"|{'owl':>5}|"?
  1. "|owl |"
  2. "| owl |"
  3. "| owl|"
  4. "| owl|"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Con name = "seahorse", ¿cuáles son el contenido y la longitud de f"{name:6.4}"?
  1. "seahorse", longitud 8
  2. "seah", longitud 4
  3. "seah ", longitud 6
  4. " seah", longitud 6
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Para item = "Tea", qty = 2 y price = 3.75, ¿cuál es el valor de f"{item:<5}{qty:>2}{qty * price:>7.2f}"?
  1. "Tea 2 3.75"
  2. "Tea 2 7.50"
  3. "Tea 2 7.50"
  4. "Tea 2 7.500"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

¿Qué produce f"{'otter':3}"?
  1. "ott"
  2. "ter"
  3. "otter"
  4. Lanza ValueError.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

¿Te atascas con una pregunta tuya? Ayuda con Tareas

Términos Clave

69 Términos Clave, cada uno con su definición

A

Acumulador
Un acumulador es una variable que construye un resultado progresivo a lo largo de las pasadas de un bucle, como un total numérico o una cadena nueva.
Un acumulador de cadena que empieza en "" puede recoger solo los caracteres que no sean espacios para construir "abc" a partir de "a b c".
Agrupación de cifras en miles
La agrupación de cifras en miles separa los números grandes en grupos legibles usando una coma o un guion bajo en un especificador de formato.
La agrupación de cifras en miles en f"{7654321:,}" muestra "7,654,321" y separa cada grupo de tres dígitos.
Alineación
La alineación decide dónde se sitúa un valor dentro de un campo con relleno: < lo coloca a la izquierda, > a la derecha y ^ lo centra.
La alineación a la derecha en f"{'hi':>5}" coloca tres espacios antes de la palabra; la alineación a la izquierda los coloca después.
Anchura de campo
Una anchura de campo establece un número mínimo de posiciones de caracteres para un valor con formato, añadiendo relleno y permitiendo que los valores más largos permanezcan completos.
Una anchura de campo de cinco da a "cat" dos espacios finales, pero una anchura de dos sigue conservando la palabra completa.
Aproximación binaria
Una aproximación binaria es un valor de coma flotante almacenado cercano a una cantidad decimal, que puede afectar al redondeo en un límite de presentación.
La aproximación binaria del número de coma flotante 2.675 es ligeramente inferior, por lo que darle formato con dos cifras decimales da "2.67".
Asignación a un elemento
La asignación a un elemento intenta sustituir un elemento de una secuencia en un índice; las cadenas la rechazan porque sus caracteres no pueden editarse sobre el objeto original.
La asignación a un elemento en word[1] = "x" lanza TypeError para una cadena, incluso cuando el índice uno es una posición válida.

B

break
La sentencia break sale inmediatamente del bucle actual, permitiendo que una búsqueda de caracteres se detenga tras procesar su primer carácter coincidente.
Una búsqueda del primer dígito en "Zone 81" puede imprimir 8 y ejecutar break, dejando el 1 posterior sin procesar.

C

Cadena de caracteres
Una cadena de caracteres es una secuencia ordenada de caracteres Unicode de tipo str, que se usa para almacenar texto, como nombres, mensajes y códigos.
La cadena "Hello, Nora" almacena el saludo, su coma y su espacio como parte de un único valor de texto ordenado.
Cadena formateada
Una cadena formateada es un literal de cadena marcado con f que evalúa expresiones en campos entre llaves e inserta sus valores en el texto resultante.
Con count = 7, la cadena formateada f"Found {count}" construye "Found 7" sin una conversión explícita de número a texto.
Campo de expresión
Un campo de expresión es una parte de una cadena formateada encerrada entre llaves cuya expresión se evalúa al construir la cadena.
El campo de expresión de f"Total: {3 * 4}" calcula doce antes de insertar el resultado después de la etiqueta.
Campo vacío
Un campo vacío es un elemento de cero caracteres que se conserva cuando los separadores explícitos son contiguos o aparecen al principio o al final de una cadena.
Dividir "a;;c" por ";" conserva un campo vacío en la segunda posición y mantiene un valor ausente del registro.
Carácter de relleno
Un carácter de relleno sustituye el relleno de espacios normales cuando se coloca justo antes de un símbolo de alineación en un especificador de formato.
Un asterisco como carácter de relleno en f"{'ok':*^6}" da "**ok**" y rellena las posiciones sin usar alrededor del texto.
Caracteres de espacio en blanco
Los caracteres de espacio en blanco son caracteres de espaciado, como espacios, tabulaciones y saltos de línea, que los métodos de texto pueden eliminar de los extremos o usar como límites.
La cadena " \t" contiene solo caracteres de espacio en blanco, y limpiar sus extremos elimina ambos caracteres y deja texto vacío.
Coincidencias sin solapamiento
Las coincidencias sin solapamiento son apariciones que no reutilizan ninguna posición de carácter; esta es la regla de coincidencia que usa count().
Las dos coincidencias sin solapamiento en "aaaa".count("aa") usan posiciones de caracteres distintas, por lo que el conteo es dos.
Comparación con distinción entre mayúsculas y minúsculas
Una comparación con distinción entre mayúsculas y minúsculas trata los caracteres de ambos tipos como distintos, por lo que palabras coincidentes pueden no ser iguales.
Una comparación con distinción entre mayúsculas y minúsculas hace que "Ready" == "ready" sea falsa hasta que ambos valores tengan un uso uniforme de mayúsculas y minúsculas.
Comprobación de caracteres
Una comprobación de caracteres comprueba si los caracteres de una cadena cumplen una regla y devuelve un booleano; comprobaciones como isalpha() también rechazan las cadenas vacías.
La comprobación de caracteres "lake9".isalnum() es verdadera, mientras que el espacio de "lake 9" hace que esa versión no la supere.
Comprobación de dígitos decimales
Una comprobación de dígitos decimales, isdecimal(), acepta cadenas no vacías de caracteres de dígitos decimales y rechaza signos, puntos decimales y espacios.
Tras eliminar los espacios de los extremos, la comprobación de dígitos decimales acepta "007", que se convierte en el número entero siete.
Comprobación de pertenencia
Una comprobación de pertenencia usa in o not in para comprobar si aparece una subcadena y devuelve un booleano sin indicar su posición.
La comprobación de pertenencia "ice" in "spice" es verdadera, mientras que "Ice", con mayúscula inicial, no coincide con el mismo texto.
Concatenación
La concatenación combina cadenas una a continuación de otra en una sola cadena, conservando todos sus caracteres sin insertar automáticamente un separador.
La concatenación con "rain" + "coat" da "raincoat"; añadir un espacio requiere una parte que lo contenga.
Contador
Un contador es una variable que registra cuántas veces se cumple una condición; normalmente empieza en cero y aumenta en uno por cada coincidencia.
Un contador de dígitos para "Bay 27" aumenta con 2 y 7 y termina con dos coincidencias después del bucle.
Conversión con map()
Una conversión con map() aplica una función a cada elemento de entrada, permitiendo que str proporcione las partes de tipo cadena que requiere join().
Una conversión con map() en ", ".join(map(str, [3, 8])) proporciona cadenas antes de unirlas como "3, 8".
Conversión de campos
La conversión de campos cambia una parte de texto al tipo necesario para seguir trabajando, como convertir una cantidad obtenida al dividir con int() antes de sumarla.
La conversión de campos transforma el texto obtenido al dividir "12" en un número entero antes de poder sumarlo numéricamente a cinco.
Conversión entre caracteres y puntos de código
La conversión entre caracteres y puntos de código usa ord() para obtener el número Unicode de un carácter y chr() para obtener el carácter de ese número.
La conversión a punto de código con ord("A") da 65, y la conversión inversa con chr(65) da "A".

E

Eliminación de caracteres en los extremos
La eliminación de caracteres en los extremos quita caracteres no deseados de los extremos de una cadena, usando espacios en blanco de forma predeterminada o un conjunto de caracteres especificado.
Eliminar caracteres de los extremos de "..hello!!" con el conjunto ".!" conserva "hello" y deja intacto el texto interno.
Encadenamiento de métodos
El encadenamiento de métodos llama a un método sobre el resultado de una llamada anterior, por lo que cada operación recibe el valor devuelto justo antes.
El encadenamiento de métodos en " OK ".strip().lower() devuelve primero "OK" y después convierte ese resultado en "ok".
enumerate()
La función enumerate() proporciona cada elemento de una secuencia junto con su índice, permitiendo que un bucle use ambos sin una consulta independiente.
Un bucle sobre enumerate("sun") recibe pares de índice y carácter que empiezan con 0, "s" y terminan con 2, "n".
Error de desfase de una unidad
Un error de desfase de una unidad usa un límite una posición antes o después de la correcta, a menudo al confundir la longitud de una secuencia con su último índice.
Un error de desfase de una unidad en text[len(text)] lee más allá del final; restar uno da el índice del último carácter.
Especificador de formato
Un especificador de formato es un conjunto de instrucciones de presentación situado después de los dos puntos de un campo, que controla detalles como la precisión, la agrupación o la anchura.
En f"{8.5:.2f}", el especificador de formato .2f selecciona dos cifras decimales y produce "8.50" para mostrarlo.
Evaluación en cortocircuito
La evaluación en cortocircuito omite un operando lógico cuando el resultado anterior ya decide la condición, permitiendo que una primera comprobación proteja una operación posterior.
La evaluación en cortocircuito en s.isdecimal() and int(s) > 0 omite la conversión cuando falla la comprobación de caracteres.

F

find()
El método find() devuelve el índice inicial de la primera subcadena coincidente, o -1 si el texto solicitado no aparece.
La búsqueda "lemon".find("mo") devuelve dos, mientras que "lemon".find("xy") devuelve menos uno para indicar que no hay coincidencias.
Formato de coma fija
El formato de coma fija usa el tipo f para mostrar un número con una cantidad elegida de cifras decimales, redondeando y añadiendo ceros finales cuando hace falta.
El formato de coma fija .3f muestra el número entero cinco como "5.000", con exactamente tres cifras decimales.
Formato porcentual
El formato porcentual usa % para multiplicar una fracción por 100 al mostrarla y añadir un signo de porcentaje, con una precisión decimal opcional.
El formato porcentual .0% muestra 0.18 como "18%"; proporcionar dieciocho multiplicaría el valor una segunda vez.
Fuente monoespaciada
Una fuente monoespaciada da a cada posición de carácter la misma anchura visual, permitiendo que campos repetidos de anchura fija se alineen como columnas de texto.
Una fuente monoespaciada en una terminal hace que los campos de importe de igual anchura se alineen porque cada posición de carácter ocupa el mismo espacio.

Í

Índice
Un índice es una posición entera que se usa para seleccionar un carácter de una cadena, con el primer carácter en la posición cero.
Para label = "desk", el índice 2 selecciona "s", ya que las posiciones empiezan con d en cero.
Índice negativo
Un índice negativo selecciona un carácter contando desde el final, donde -1 es el último y -len(text) es el primero.
En "cloud", el índice negativo -1 selecciona "d", mientras que -2 selecciona el carácter anterior, "u".

I

IndexError
Un IndexError indica que el índice al que se ha intentado acceder en una secuencia no tiene ningún elemento, como al seleccionar una posición más allá del final de una cadena.
La expresión "cup"[3] lanza IndexError, ya que sus tres caracteres ocupan las posiciones de cero a dos.
Inmutabilidad
La inmutabilidad significa que un valor no puede modificarse sobre el objeto original; una operación de cadena debe producir otro valor para dar a una variable un texto distinto.
La inmutabilidad de las cadenas hace que name[0] = "B" falle, mientras que name = "B" + name[1:] construye texto nuevo correctamente.

L

Límite del segmento
Un límite del segmento marca dónde empieza o termina la selección; un segmento hacia delante incluye su posición inicial y excluye su posición final.
En "garden"[:3], el límite de segmento tres es el final excluido, por lo que d queda fuera y el resultado es "gar".
Lista
Una lista es una colección ordenada de elementos escrita entre corchetes; dividir una cadena devuelve una lista cuyos elementos son cadenas.
Tras dividir "oak,elm" por una coma, la lista contiene dos elementos y el índice uno selecciona la cadena "elm".
Literal de cadena
Un literal de cadena es texto escrito directamente en código Python entre comillas del mismo tipo, que marcan sus límites sin formar parte del valor.
Los literales de cadena "open" y 'open' usan comillas externas distintas, pero almacenan los mismos cuatro caracteres.
Literal de cadena sin procesar
Un literal de cadena sin procesar tiene un prefijo r que conserva las barras inversas como caracteres literales en lugar de procesar las secuencias de escape habituales.
El literal de cadena sin procesar r"C:\new" conserva la barra inversa antes de new, evitando que ese par se convierta en un salto de línea.
Llave literal
Una llave literal es un carácter de llave que se muestra como texto en una cadena formateada al duplicarlo, distinguiéndolo de la sintaxis de los campos de expresión.
Una llave literal en f"{{open}}" muestra { alrededor de open sin pedir a Python que evalúe ese nombre.

M

Método de cadena
Un método de cadena es una función asociada a valores de cadena, que se llama con un punto y paréntesis para realizar una operación de texto y devolver su resultado.
La llamada al método de cadena "hello".upper() devuelve "HELLO"; omitir los paréntesis no lo llama.

N

Normalización de espacios en blanco
La normalización de espacios en blanco con " ".join(text.split()) limpia los extremos y sustituye las secuencias internas de espacios en blanco por un solo espacio normal.
La normalización de espacios en blanco con " ".join(text.split()) convierte " blue\n sky " en "blue sky", con un espaciado uniforme.
Normalización de mayúsculas y minúsculas
La normalización de mayúsculas y minúsculas elimina las distinciones entre ellas para comparar, incluidos algunos cambios propios de ciertos idiomas que la conversión habitual a minúsculas no realiza.
La normalización de mayúsculas y minúsculas convierte tanto "Straße" como "STRASSE" en "strasse", permitiendo que ambas formas se consideren iguales al compararlas.
Número máximo de divisiones
El argumento de número máximo de divisiones limita cuántos cortes realiza split() o rsplit(), dejando el resto junto en una parte sin dividir.
Establecer el número máximo de divisiones en uno corta "a=b=c" en "a" y "b=c" desde la izquierda y conserva los signos iguales posteriores.

O

Orden lexicográfico
El orden lexicográfico compara secuencias de izquierda a derecha, usando el punto de código del primer carácter distinto o colocando primero un prefijo más corto.
El orden lexicográfico coloca "19" antes de "3", porque sus primeros caracteres distintos deciden la comparación.

P

Palíndromo
Un palíndromo es un texto que se lee igual hacia delante y hacia atrás, por lo que comparar una cadena con su versión invertida permite comprobar esta propiedad.
El palíndromo "radar" supera word == word[::-1]; mezclar mayúsculas y minúsculas requiere normalizarlas cuando deba ignorarse esa distinción.
Partición
Una partición separa el texto una vez en una tupla de tres partes que contiene el texto anterior a un separador, el separador y el texto posterior.
La partición de "color=blue" por "=" es ("color", "=", "blue") y conserva el separador en el centro.
Paso del segmento
El paso del segmento es la distancia entera distinta de cero entre las posiciones seleccionadas; un valor negativo hace que la selección retroceda.
Un paso de segmento de dos en "abcdef"[::2] selecciona los índices cero, dos y cuatro, lo que produce "ace".
Posición inicial de búsqueda
Una posición inicial de búsqueda establece la primera posición que considera una búsqueda y mantiene los índices devueltos referidos a la cadena completa.
Una posición inicial de búsqueda de uno en "cocoa".find("co", 1) omite la coincidencia en cero y encuentra la de dos.
Precisión de cadena
La precisión de cadena limita cuántos caracteres de texto muestra un campo, permitiendo combinar una longitud máxima de texto con una anchura mínima.
La precisión de cadena en f"{'sunshine':6.3}" muestra "sun" y tres espacios sin cambiar la palabra original.
Punto de código Unicode
Un punto de código Unicode es un número asignado a un carácter; las cadenas de Python almacenan puntos de código y len() los cuenta.
El emoji "👍🏽" contiene dos puntos de código Unicode, por lo que su longitud de cadena en Python es dos pese a su apariencia.

R

Reasignación
La reasignación hace que una variable se refiera a un valor distinto, sin cambiar el valor al que se refería antes ni otros nombres que se refieran a él.
Cuando a contiene "red", la reasignación con a += "!" hace que a se refiera a "red!", mientras que otra variable puede seguir conteniendo "red".
Recorrido de una cadena
El recorrido de una cadena visita los caracteres en un orden elegido, normalmente con un bucle for directo o un bucle while que usa un índice.
El recorrido de la cadena "go!" visita g, después o y después !, lo que permite tomar una decisión independiente para cada carácter.
Redondeo al par
El redondeo al par elige la cifra conservada par cuando un valor almacenado se encuentra exactamente a mitad de camino entre dos posibles resultados redondeados.
El redondeo al par hace que los valores exactamente a mitad de camino 0.125 y 0.375 se muestren como "0.12" y "0.38" con dos cifras decimales.
Relleno
El relleno añade caracteres para alcanzar una anchura mínima de campo, usando espacios, ceros o un carácter elegido y conservando los valores más largos.
El relleno con "5".zfill(3) produce "005", mientras que "1234", que ya es más largo, permanece intacto con una anchura de tres.
Relleno con ceros
El relleno con ceros añade ceros iniciales para alcanzar una anchura numérica mínima, haciendo que los enteros cortos sean adecuados para códigos y partes de fechas u horas.
El relleno con ceros en f"{4:02d}" muestra "04", permitiendo que un minuto de un dígito ocupe un campo de dos dígitos.
removeprefix()
El método removeprefix() elimina un inicio que coincida exactamente con el indicado y devuelve el texto original cuando ese inicio no aparece.
La llamada "pretest".removeprefix("pre") da "test", mientras que un prefijo ausente deja el texto intacto.
removesuffix()
El método removesuffix() elimina un final que coincida exactamente con el indicado, conservando otros caracteres que la eliminación por conjunto podría quitar.
La llamada "report.txt".removesuffix(".txt") conserva "report", incluida la t final del nombre base.
rfind()
El método rfind() devuelve el índice inicial de la última subcadena coincidente, usando las posiciones de la cadena completa aunque busque desde la derecha.
La búsqueda "a-b-c".rfind("-") devuelve tres y localiza el último guion con una posición contada desde la izquierda.

S

Secuencia de escape
Una secuencia de escape usa una barra inversa y los caracteres siguientes de un literal para representar un carácter, como un salto de línea, una tabulación o una comilla.
En "up\ndown", la secuencia de escape \n almacena un salto de línea, por lo que la impresión coloca las palabras en dos líneas.
Segmento
Un segmento selecciona caracteres mediante un inicio, un límite final excluido y un paso opcional, y devuelve el texto seleccionado como una cadena.
El segmento "window"[1:4] devuelve "ind", seleccionando las posiciones de uno a tres y excluyendo la posición cuatro.
Separador
Un separador es la cadena exacta que marca un límite de división o que una unión coloca entre las partes, y puede contener varios caracteres.
El separador ", " coincide con una coma seguida de un espacio, por lo que no divide la cadena "oak,elm".
Separador vacío
Un separador vacío es la cadena de cero caracteres que se usa con join() para juntar partes sin caracteres adicionales entre ellas.
Usar un separador vacío en "".join(["a", "b", "c"]) da "abc" y conserva el orden de las partes.
str.format()
El método str.format() rellena campos entre llaves de una cadena usando sus argumentos, con los campos seleccionados por orden o por un índice de argumento explícito.
La llamada "{1}, {0}".format("Ada", "Lovelace") usa str.format() para colocar el segundo argumento antes del primero.
Subcadena
Una subcadena es una secuencia de caracteres consecutivos dentro de otra cadena, que puede seleccionarse mediante segmentos o encontrarse mediante una búsqueda.
El texto "light" es una subcadena de "daylight", pero "dyl" no lo es porque esas letras no son consecutivas.

U

Unión de cadenas
La unión de cadenas construye una cadena a partir de partes de tipo cadena y coloca un separador elegido entre partes consecutivas sin añadirlo en ninguno de los extremos.
Unir ["home", "nora"] con el separador "/" produce "home/nora", con una barra entre las partes.

V

Valor de retorno
Un valor de retorno es el resultado que una función o un método devuelve al código que lo llama, y que puede guardarse, comprobarse o pasarse a otra operación.
El valor de retorno de text.upper() es texto en mayúsculas; asignarlo a text lo conserva para usarlo después.

Sobre esta unidad

Por StudeliInformar de un error

Crea tus propios Materiales de Estudio

Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.

Comenzar