# How to Display a 1D and 2D Multiplication Table in Python?

## 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=11` for which the multiplication table should be calculated.
• Set `limit=10` to 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=11` for which the multiplication table should be calculated.
• Set `limit=10` to 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 operator `i += 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. 