Python Multiplication Table For Loop
To calculate the multiplication table for a given number, iterate over all values i=0, 1, ..., limit in a for loop and use the following statement as a loop body: print(number, 'x', i, '=', number * i). This prints all equations, line by line, in the form i x j = k.
The following code prints the multiplication table for 11, i.e., 0x11, 1x11, ..., 9x11 to an upper limit of 10 (excluded):
# Calculate Multiplication Table
# all multiples of this number
number = 11
# up to this number, excluded
limit = 10  
for i in range(limit):
    print(number, 'x', i, '=', number * i)
The output is as follows:
11 x 0 = 0 11 x 1 = 11 11 x 2 = 22 11 x 3 = 33 11 x 4 = 44 11 x 5 = 55 11 x 6 = 66 11 x 7 = 77 11 x 8 = 88 11 x 9 = 99
The code performs the following steps:
- Set 
number=11for which the multiplication table should be calculated. - Set 
limit=10to restrict the number of consecutive factors to 0, 1, …, 9. - Iterate over all factors 0, 1, …, 9 using a for loop.
 - In the loop body, print the multiplication equation and its result using a comma-separated list in the 
print()statement. 
But what if you’re required to use a while loop to print the multiplication table? Let’s modify our program accordingly!
Python Multiplication Table While Loop
To calculate the multiplication table for a given number, iterate over all values i=0, 1, ..., limit in a while loop and use the following statement as a loop body: print(number, 'x', i, '=', number * i). This prints all equations, line by line, in the form i x j = k.
The following code prints the multiplication table for 11, i.e., 0x11, 1x11, ..., 9x11 to an upper limit of 10 (excluded):
# Calculate Multiplication Table
# all multiples of this number
number = 11
# up to this number, excluded
limit = 10  
# set loop variable
i = 0
while i<limit:
    print(number, 'x', i, '=', number * i)
    i += 1
Again, the output is as follows:
11 x 0 = 0 11 x 1 = 11 11 x 2 = 22 11 x 3 = 33 11 x 4 = 44 11 x 5 = 55 11 x 6 = 66 11 x 7 = 77 11 x 8 = 88 11 x 9 = 99
The code performs the following steps:
- Set 
number=11for which the multiplication table should be calculated. - Set 
limit=10to restrict the number of consecutive factors to 0, 1, …, 9. - Iterate over all factors 0, 1, …, 9 using a while loop by explicitly defining a loop variable 
i. - In the loop body, print the multiplication equation and its result using a comma-separated list in the 
print()statement. Then increase the loop variable using the inline addition operatori += 1. 
Python Multiplication Table Nested For Loop
You can create a full multiplication table where cell (i,j) corresponds to the product i*j by using a nested for loop as follows:
number = 10
for i in range(number):
    print()
    for j in range(number):
        print(i*j, end='\t')
The output is the full multiplication table:
0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 2 4 6 8 10 12 14 16 18 0 3 6 9 12 15 18 21 24 27 0 4 8 12 16 20 24 28 32 36 0 5 10 15 20 25 30 35 40 45 0 6 12 18 24 30 36 42 48 54 0 7 14 21 28 35 42 49 56 63 0 8 16 24 32 40 48 56 64 72 0 9 18 27 36 45 54 63 72 81
Explanation: The code iterates in a nested for loop over each cell. Cell (i,j) in this table corresponds to the product i*j. After each cell, we add a tabular character '\t' as the end argument of the print() function. After each line, we print an empty line using the empty print() function.
Python Multiplication Table List Comprehension
You can create a full multiplication table where cell (i,j) corresponds to the product i*j by using a nested for loop, or better yet, a list comprehension statement as follows:
number = 10
for i in range(number):
    print(*[j*i for j in range(number)], sep='\t')
The output is the full multiplication table:
0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 2 4 6 8 10 12 14 16 18 0 3 6 9 12 15 18 21 24 27 0 4 8 12 16 20 24 28 32 36 0 5 10 15 20 25 30 35 40 45 0 6 12 18 24 30 36 42 48 54 0 7 14 21 28 35 42 49 56 63 0 8 16 24 32 40 48 56 64 72 0 9 18 27 36 45 54 63 72 81
Cell (i,j) in this table corresponds to the product i*j.
Explanation: The code iterates in a for loop over each line. It then generates the multiplication results line-wise in the list comprehension expression [j*i for j in range(number)]. This list is unpacked into the print() function using the asterisk prefix *. All values are separated using a tabular character '\t' in the separator argument of the print() function.