Si estás empezando a programar en Python este artículo te será de mucha utilidad. Uno de los primeros ejercicios que se pueden hacer, con independencia del lenguaje que utilicemos, es la realización de tablas de multiplicar. Es una forma fantástica de practicar los bucles, una estructura de control importantísima.
En Python, la manera más cómoda de crear una tabla de multiplicar es utilizar un bucle for
que recorra todos los valores entre 1 y 10, los multiplique por el factor deseado y los muestre. Por ejemplo, la tabla del 7 se obtiene así: for f in range(1,11): print(f'7 x {f} = {7 * f}')
.
Te explico a continuación cómo funciona este bucle, cómo hacer para obtener todas las tablas de multiplicar entre dos números dados, cómo obtener una tabla con formato de cuadro y alguna cosilla más.
Contenidos
- Tabla de multiplicar sencilla
- Tablas de multiplicar entre dos números dados
- Tabla de multiplicar en forma de cuadro
Tabla de multiplicar sencilla
Si estás aprendiendo a manejar los bucles (ciclos o loops) este es un ejercicio ideal. Ten en cuenta que los bucles los utilizamos cuando queremos realizar una tarea repetitiva sin necesidad de repetir código. Esta idea es fundamental para lograr código de calidad.
Si nos paramos a analizar qué es una tabla de multiplicar y cómo podríamos generarla, nos daremos cuenta de que existen en la manera de crearla varias tareas repetitivas:
- Realizar una multiplicación. Es la tarea principal y se va a repetir 10 veces (en una tabla normal que va del 1 al 10), aunque podría repetirse más. Tenemos que realizar tantas multiplicaciones de un número dado, por ejemplo el 7, por todos los números naturales existentes entre el 1 y el 10.
- Mostrar el resultado de cada una de las multiplicaciones. Esta tarea también se repite 10 veces, una vez por cada una de las multiplicaciones que contenga la tabla.
Ya hemos determinado el número de repeticiones, que es 10. Y sabemos que para cada repetición vamos a ejecutar las dos tareas que acabo de mencionar. Además, necesitaremos en cada vuelta del bucle una variable que contenga los valores del 1 al 10. En la primera vuelta del bucle esa variable tendrá el valor 1, para así poder multiplicar nuestro factor por 1. En la segunda vuelta, la variable tomará el valor 2, para poder multiplicarlo nuevamente por nuestro factor. Y así sucesivamente hasta llegar al 10. Después del 10 el bucle se detendrá.
Python nos proporciona una función de mucha utilidad llamada range
. Esta función recibe dos valores enteros, que son un límite inferior y un límite superior y nos genera todos los números existentes consecutivos entre esos dos valores, incluyendo el límite inferior y excluyendo el límite superior.
Es muy sencillo recorrer todos los números generados por range
con un bucle for
de la siguiente manera:
for f in range(1,11):print(f)
Lo que hace este bucle es dar tantas vueltas como números genere range
. Además, en cada vuelta del bucle cada uno de esos números y por orden se va guardando en la variable f
, de forma que en el cuerpo del bucle se puede acceder a ese valor fácilmente. Así, te puedes imaginar fácilmente que lo que hace el código anterior es tomar cada uno de los valores generados e imprimirlos por pantalla. El resultado es el siguiente:
12345678910
Pues perfecto, ya tenemos el bucle que da 10 vueltas y cada uno de los números por el que multiplicar nuestro factor. Solo nos queda entonces hacer la multiplicación y mostrar el resultado. En cada vuelta del bucle mostraremos el resultado de una multiplicación, en este caso del número 7 (ya que queremos la tabla del 7) por el número que haya en la variable f
:
for f in range(1,11):multiplicacion = 7 * f #hacemos la multiplicaciónprint(f'7 x {f} = {multiplicacion}') #mostramos el resultado
Con lo que obtendremos el siguiente resultado perfecto:
7 x 1 = 77 x 2 = 147 x 3 = 217 x 4 = 287 x 5 = 357 x 6 = 427 x 7 = 497 x 8 = 567 x 9 = 637 x 10 = 70
Para mejorarlo un poco solo nos queda parametrizar este código para:
- Poder calcular la tabla de cualquier factor, no solo del 7.
- Poder realizar las multiplicaciones entre dos números cualesquiera y o solo entre el 1 y el 10.
Lo vemos:
factor = 5 #factor deseado, en este caso, haremos la tabla del 5desde = 1 #límite inferior (incluido)hasta = 15 #límite superior (incluido también)for f in range(desde, hasta + 1):print(f'{factor} x {f} = {factor * f}')
Si te fijas, he añadido tres nuevas variables. Una es factor
, que es la variable en la que podemos almacenar el valor de la tabla deseada. En este caso, como quiero hacer la tabla del 5, pues guardo un 5. Este valor se le podría pedir al usuario, por ejemplo. Puedes mirar en este artículo cómo pedir un valor al usuario hasta que sea válido en Python.
Las otras dos variables, desde
y hasta
contendrán, respectivamente, el límite inferior y el superior entre los cuales queremos calcular la tabla. En este caso, por comodidad, hago que ambos sean incluidos, es decir, si quiero la tabla entre el 1 y el 15, como en este caso, pues pongo 1 y 15. Como range
no incluye el límite superior me encargo de sumarle uno a la variable hasta
en la llamada a la función.
Otra mejora que he realizado ha sido eliminar la variable multiplicacion
pues realmente no hace falta porque puedo realizar la operación directamente entre las llaves del print
con formato ({factor * f}).
Si ejecuto el código anterior obtengo lo siguiente:
5 x 1 = 55 x 2 = 105 x 3 = 155 x 4 = 205 x 5 = 255 x 6 = 305 x 7 = 355 x 8 = 405 x 9 = 455 x 10 = 505 x 11 = 555 x 12 = 605 x 13 = 655 x 14 = 705 x 15 = 75
Tablas de multiplicar entre dos números dados
Es habitual querer obtener más de una tabla. Por ejemplo, a los niños en el colegio les suelen pedir que memoricen todas las tablas de multiplicar entre el 1 y el 10.
Hacer esto es muy sencillo. Hasta ahora sabemos cómo obtener una tabla sencilla. Ahora nos encontramos con otra tarea repetitiva que es la creación de varias tablas. Inmediatamente tenemos que pensar en otro bucle.
La manera de resolver esto es tener un bucle más externo que genere todos los factores entre 1 y 10 (ya sabemos cómo hacerlo) y en el cuerpo del bucle generaremos la tabla para cada uno de esos factores.
Vamos a aprovechar para hacer un código que sirva para generar las tablas entre dos números cualesquiera y las multiplicaciones entre dos números cualesquiera (como hicimos antes). Ahora ya no necesitamos la variable factor
porque se va a generar en el bucle más externo. Lo que sí haré es añadir dos variables para indicar qué tablas quiero generar, que son tabla_desde
y tabla_hasta
:
tabla_desde = 1 #tablas del 1...tabla_hasta = 10 #...al 10desde = 1 #multiplicaciones desde el 1...hasta = 10 #...hasta el 10for factor1 in range(tabla_desde, tabla_hasta + 1):print(f'Tabla de multiplicar del {factor1}:') #mostramos una cabecera para cada tablafor factor2 in range(desde, hasta + 1):print(f'{factor1} x {factor2} = {factor1 * factor2}')print() #línea en blanco al final de cada tabla
Para que la salida por pantalla de nuestro programa quede más bonita, dentro del bucle externo y antes de mostrar cada tabla imprimo por pantalla una cabecera que indica qué tabla viene a continuación. Al final de cada tabla imprimo una línea en blanco para separarla de la siguiente.
Si ejecuto el código anterior, parte de la salida por pantalla será la siguiente:
Tabla de multiplicar del 1:1 x 1 = 11 x 2 = 21 x 3 = 31 x 4 = 41 x 5 = 51 x 6 = 61 x 7 = 71 x 8 = 81 x 9 = 91 x 10 = 10Tabla de multiplicar del 2:2 x 1 = 22 x 2 = 42 x 3 = 62 x 4 = 82 x 5 = 102 x 6 = 122 x 7 = 142 x 8 = 162 x 9 = 182 x 10 = 20Tabla de multiplicar del 3:3 x 1 = 33 x 2 = 63 x 3 = 93 x 4 = 123 x 5 = 153 x 6 = 183 x 7 = 213 x 8 = 243 x 9 = 273 x 10 = 30...
Si lo que quieres es generar la tablas del 5 al 7 y que las multiplicaciones sean entre el 2 y el 4, cambiaremos respectivamente las variables tabla_desde
, tabla_hasta
, desde
y hasta
y obtendremos el siguiente resultado por pantalla:
Tabla de multiplicar del 5:5 x 2 = 105 x 3 = 155 x 4 = 20Tabla de multiplicar del 6:6 x 2 = 126 x 3 = 186 x 4 = 24Tabla de multiplicar del 7:7 x 2 = 147 x 3 = 217 x 4 = 28
Tabla de multiplicar en forma de cuadro
Una manera compacta de mostrar todas las tablas de multiplicar entre dos números concretos es en formato de cuadro. Es decir, una tabla con tantas filas y columnas como tablas necesitamos donde en la primera fila y en la primera columna se disponen todos los factores. Te lo muestro:
1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100
De esta manera, si queremos calcular 5 x 7 basta con localizar el 5 en la primera fila, la superior, y el 7 en la primera columna, la de la izquierda (o viceversa), para después buscar donde se cruzan esa fila y esa columna, que cómo ves es el valor 35, justo el resultado de la multiplicación 5 x 7.
Como ves, en un espacio tan reducido tenemos mucha información, es una representación de las tablas más conveniente. ¿Cómo la hacemos? Muy fácil.
Nuevamente necesitamos dos bucles, uno para mostrar cada valor de una fila y otro para mostrar cada fila. Haré aquí el ejemplo para hacer las tablas estándar del 1 al 10 y te queda a ti como ejercicio parametrizarlo para generar las tablas entre dos números cualesquiera. Piensa también que el número de filas puede ser diferente del número de columnas.
Lo que tengo que hacer es imprimir cada multiplicación en formato de cuadro, para lo cual hago el siguiente código, donde utilizo el formato {:3}
para que cada valor ocupe un espacio de tres posiciones y esté alineado a la derecha dentro de esas tres posiciones. Así, la representación sera más bonita, exactamente como el ejemplo de más arriba. Además, separo los valores con un espacio y no con un salto de línea (parámetro end
de la función print
). Finalmente, después de cada línea, sí que imprimo un salto de línea et voilà!
for i in range(1,11):for j in range(1,11):print('{:3}'.format(i*j), end=' ')print()
Y con esto termino, espero que te haya resultado de utilidad y hayas aprendido un poco mejor a manejar los bucles en este fantástico lenguaje de programación que es el Python. Déjame recordarte que estas no son las únicas formas de generar las tablas y puede haber muchas más. Por ejemplo, te puedes plantear el uso de bucles while
en lugar de bucles for
. ¿Te atreves?
Si te interesan este tipo de ejercicios clásicos echa un ojo a este otro artículo donde te explico cómo resolver ecuaciones de segundo grado en Python.
🎁 Tutorial Básico Interactivo y La Hoja de Referencia de Python – ¡Gratis!
