Open In App
Related Articles

# Python Program to print digit pattern

The program must accept an integer N as the input. The program must print the desired pattern as shown in the example input/ output. Examples:

Input : 41325 Output : |**** |* |*** |** |***** Explanation: for a given integer print the number of *’s that are equivalent to each digit in the integer. Here the first digit is 4 so print four *sin the first line. The second digit is 1 so print one *. So on and the last i.e., the fifth digit is 5 hence print five *s in the fifth line. Input : 60710 Output : |****** | |******* |* |

Approach Read the input For each digit in the integer print the corresponding number of *s If the digit is 0 then print no *s and skip to the next line

## Python3

 `# function to print the pattern ``def` `pattern(n): `` ` `    ``# traverse through the elements ``    ``# in n assuming it as a string ``    ``for` `i ``in` `n: `` ` `        ``# print | for every line ``        ``print``(``"|"``, end ``=` `"") `` ` `        ``# print i number of * s in ``        ``# each line ``        ``print``(``"*"` `*` `int``(i)) `` ` `# get the input as string         ``n ``=` `"41325"``pattern(n) `

Output:

```|****
|*
|***
|**
|*****```

Time complexity: O(n) since one traversal of the array is required to complete all operations hence the overall time required by the algorithm is linear
Auxiliary Space: O(1) since no extra array is used so the space taken by the algorithm is constant

Alternate solution that takes integer as input :

## Python3

 `n ``=` `41325``x ``=` `[] ``while` `n>``0``: ``    ``x.append(n``%``10``) ``    ``n ``/``/``=` `10``for` `i ``in` `range``(``len``(x)``-``1``,``-``1``,``-``1``): ``    ``print``(``'|'``+``x[i]``*``'*'``) `` ` `# code contributed by Baivab Dash `

Output:

```|****
|*
|***
|**
|*****```

Time complexity: O(n) since one traversal of the array is required to complete all operations hence the overall time required by the algorithm is linear
Auxiliary Space: O(n) since an extra list is used so in the worst case the space taken by the algorithm will be linear

Using List comprehension and join():

Another approach that could be used to solve this problem is to use a list comprehension to generate the desired output.

Here is an example of how this could be implemented:

## Python3

 `def` `pattern(n):``    ``# Convert the input number to a string``    ``n ``=` `str``(n)``     ` `    ``# Use a list comprehension to generate the desired output``    ``pattern ``=` `[``"|"` `+` `"*"` `*` `int``(digit) ``for` `digit ``in` `n]``     ` `    ``# Join the elements of the pattern list and print the result``    ``print``(``"\n"``.join(pattern))`` ` `# Test the function``pattern(``41325``)`` ` `#This code is contributed by Edula Vinay Kumar Reddy`

Output

```|****
|*
|***
|**
|*****```

This approach has a time complexity of O(n) and a space complexity of O(n), as it requires one traversal of the input and creates a new list to store the generated pattern.