Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

2.4K
Views
Python program to print the pattern 1 121 12321 12 1 for n rows

When n = 5 the pattern must be:

    1
   121
  12321
   121
    1

What I tried till now:

# Pattern 1-121-12321 pyramid pattern

# Reading number of rows
row = int(input('Enter how many lines? '))

# Generating pattern
for i in range(1,row+1):
    
    # for space
    for j in range(1, row+1-i):
        print(' ', end='')
    
    # for increasing pattern
    for j in range(1,i+1):
        print(j, end='')
    
    # for decreasing pattern 
    for j in range(i-1,0,-1):
        print(j, end='')
    
    # Moving to next line
    print()

Output I am getting:

    1
   121
  12321
 1234321
123454321

I know the logic for similar such patterns like:

    *
   ***
  *****
 *******

But the number pattern seems to be confusing and I am not able to get the logic.

TL;DR

Python Program for generating the following Pattern for printing n rows:

eg. When n=7:

   1
  121
 12321
1234321
 12321
  121
   1 
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

How about this code:

for i in range(n):
    temp = 0 # Store the value of the number to square (so 1, 11,...)
    if (i < n / 2):
        for j in range(i + 1):
            temp += 10 ** j # Construct the number (1 = 1, 11 = 1 + 10, 111 = 1 + 10 + 10 ^ 2,...)
        for _ in range(int(n / 2 - i)):
            print(' ', end = '') # Add space indentation
    else:
        for j in range(n - i): # Count in reverse now
            temp += 10 ** j # Construct the number (1 = 1, 11 = 1 + 10, 111 = 1 + 10 + 10 ^ 2,...)
        for _ in range(int(i - n / 2) + 1):
            print(' ', end = '') # Add space indentation
    print(temp ** 2) # Square the temporary value

(Fun mathematical fact: the string you print have a property of:
1 = 1 ^ 2; 121 = 11 ^ 2; 12321 = 111 ^ 2;...)

over 4 years ago · Santiago Trujillo Report

0

I will also give my suggestion. So here I initially just outsource the production of the line into a method. I first calculate the length of the current line and depending on the maximum number of lines you want to print determine the padding to get this star shape. Then I produce the actual string, which is dependent on the middle point of the string, so as soon as I exceed this, I decrease the numbering again.

from math import ceil
def produce_line(line, maximum):
    middle = ceil(maximum / 2)
    padding = abs(middle - line)
    line_width = maximum - 2 * padding
    half_lw = ceil(line_width / 2)
    res = (" " * padding) + "".join([str(a) if a <= half_lw else str(abs(2 * half_lw - a)) for a in range(1, line_width + 1)])
    return res
    
lines = 9
for i in range(1, lines + 1):
    print(produce_line(i, lines))
over 4 years ago · Santiago Trujillo Report

0

You could add an if statement and start from a count with a new variable c:

row = int(input('Enter how many lines? '))
c = row // 2
for i in range(1,row+1):
    if i <= (row // 2 + 1):    
        # for space
        for j in range(1, row+1-i):
            print(' ', end='')
        
        # for increasing pattern
        for j in range(1,i+1):
            print(j, end='')
        
        # for decreasing pattern 
        for j in range(i-1,0,-1):
            print(j, end='')
    else:
        for j in range(1, i):
            print(' ', end='')
        
        # for increasing pattern
        for j in range(1, c):
            print(j, end='')
        
        # for decreasing pattern 
        for j in range(c, 0, -1):
            print(j, end='')
        c -= 1
        
        # Moving to next line
    print()

Output:

Enter how many lines? 7
      1
     121
    12321
   1234321
    12321
     121
      1
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!