PyQuiz 43 – Multiplicar strings en Python

El reto
resultado = 'Py' + 'thon' * 2
print(resultado)¿Cuál es el resultado?
- a) 'PythonPython'
- b) 'Pythonthon'
- c) 'Pythonthon2'
Piensa tu respuesta antes de seguir leyendo…
Concepto: Multiplicar strings
En Python, el operador * aplicado a strings realiza repetición: 'ab' * 3 produce 'ababab'. La clave de este quiz está en la precedencia de operadores: * tiene mayor precedencia que +, igual que en la aritmética normal.
Por tanto, en 'Py' + 'thon' * 2, primero se evalúa 'thon' * 2 = 'thonthon' y después se concatena: 'Py' + 'thonthon' = 'Pythonthon'. Si quisieras repetir el resultado de la concatenación, tendrías que usar paréntesis: ('Py' + 'thon') * 2 = 'PythonPython'.
print('Py' + 'thon' * 2) # 'Pythonthon'
print(('Py' + 'thon') * 2) # 'PythonPython'
print('=-' * 10) # '=-=-=-=-=-=-=-=-=-=-'
print('Hola ' * 3) # 'Hola Hola Hola 'Paso a paso
'Py' + 'thon' * 2— Python evalúa según precedencia.*tiene mayor prioridad que+.- Primero:
'thon' * 2→'thon'repetido 2 veces ='thonthon'. - Después:
'Py' + 'thonthon'→ concatenación ='Pythonthon'. resultado = 'Pythonthon'— Se asigna a la variable.print(resultado)— Se imprime'Pythonthon'.
📥 Llévate el cheatsheet de Python (gratis)
PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.
Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.
Solución
Respuesta correcta: B) 'Pythonthon'
* tiene más prioridad que +. 'thon' * 2 = 'thonthon', luego 'Py' + 'thonthon' = 'Pythonthon'.
Sabías que…
La repetición con * funciona también con listas y tuplas, y combinada con join es muy útil para crear separadores o plantillas:
# Repetición de listas
print([0] * 5) # [0, 0, 0, 0, 0]
print([1, 2] * 3) # [1, 2, 1, 2, 1, 2]
# Separadores con strings
separador = '-' * 40
print(separador) # ----------------------------------------
# Tabla ASCII con precedencia explícita
for i in range(1, 4):
print(str(i) + '. ' + '*' * i)
# 1. *
# 2. **
# 3. ***Prueba tú mismo
¿Qué imprime print('a' * 2 + 'b' * 3)? ¿Y print(('a' + 'b') * 2 + 'c')?
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Cadenas de caracteres en Python
¿Quieres aprender Python en orden, no a saltos?
Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
