Open in App
Not now

# Python Program to print digit pattern

• Difficulty Level : Basic
• Last Updated : 13 Mar, 2023

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.

My Personal Notes arrow_drop_up
Related Articles