PyQuiz 18 – f-strings vs format() en Python
El reto
nombre = 'Python'
version = 3.13
a = f'{nombre} {version}'
b = '{} {}'.format(nombre, version)
print(a == b)
¿Cuál es el resultado?
- a) True
- b) False
- c) Error
Piensa tu respuesta antes de seguir leyendo…
Concepto: f-strings vs format()
Las f-strings (cadenas formateadas, disponibles desde Python 3.6) y el método .format() son dos formas de insertar valores en cadenas. Ambas producen exactamente el mismo texto final, aunque su sintaxis es diferente.
Con f-strings se usa el prefijo f antes de las comillas y se colocan las expresiones directamente entre llaves: f'{variable}'. Con .format() se usan llaves vacías {} como marcadores de posición y se pasan los valores como argumentos al método.
El resultado de ambas es una cadena de texto ordinaria (str). Como el contenido generado es idéntico, la comparación con == devuelve True. Las f-strings son más modernas, concisas y ligeramente más rápidas; .format() es compatible con Python 2 y útil cuando la plantilla está en una variable.
Paso a paso
nombre = 'Python'— cadena asignada.version = 3.13— número float asignado.a = f'{nombre} {version}'— la f-string evalúanombreyversiondirectamente. Resultado:'Python 3.13'.b = '{} {}'.format(nombre, version)—.format()sustituye los marcadores{}por'Python'y3.13en orden. Resultado:'Python 3.13'.print(a == b)— se comparan dos cadenas con el mismo contenido:'Python 3.13' == 'Python 3.13'. El resultado esTrue.
Solución
Respuesta correcta: A) True
Ambas formas producen el mismo string 'Python 3.13'. f-strings y format() son equivalentes aquí.
Sabías que…
Las f-strings permiten incluir expresiones completas, llamadas a funciones, formateo de números y hasta condiciones, todo dentro de las llaves:
precio = 19.9
stock = 3
# Expresión directa en la f-string
print(f'Precio con IVA: {precio * 1.21:.2f}€') # 'Precio con IVA: 24.08€'
# Llamada a función
nombre = 'python'
print(f'Lenguaje: {nombre.upper()}') # 'Lenguaje: PYTHON'
# Condicional inline
print(f'Stock: {"disponible" if stock > 0 else "agotado"}') # 'Stock: disponible'
# .format() con nombres (más legible para plantillas largas)
plantilla = 'Hola, {nombre}. Tienes {mensajes} mensajes.'
print(plantilla.format(nombre='Ana', mensajes=5))
Prueba tú mismo
Escribe una f-string que muestre el precio de un producto con exactamente 2 decimales y el símbolo € al final, dado precio = 9.5.
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Cadenas de caracteres en Python
