Python Reverse Alphabet Pyramid Pattern (Build to A)

Beginner
6 min read
Updated: Sep 2026
3 programs
Live preview

What Is This Pattern?

A right-aligned reverse alphabet pyramid prints reverse suffixes (A, BA, CBA, …) on fixed-width rows, with leading spaces so the letters sit on the right.

Remember
Rule: scan top..A; print space while j > i, else print j

    A
   BA
  CBA
 DCBA
EDCBA     ← top = E

Unlike Program 2 (left-aligned reverse prefixes E, ED, EDC…), this pattern grows reverse suffixes from the right using the j > i space test.

How to Solve It

Pick a row peak, scan the full width downward, and print spaces until the peak — then print the reverse letters.

MethodIdeaBest for
Fixed-width scanInner j from top..A; j > i → space else letterLearning one-loop alignment
Explicit padPrint width - letters spaces, then i..AClearer reading once the shape is clear

Pseudocode

Pseudocode
for i from 'A' to top:
    for j from top down to 'A':
        if j > i:
            print space
        else:
            print j
    print newline

Cheat sheet

GoalPattern
Row peakfor i in range(ord('A'), top + 1):
Fixed-width scanfor j in range(top, ord('A') - 1, -1):
Space or letterprint(" " if j > i else chr(j), end="")
Explicit padpad = width - (i - ord('A') + 1)
Reverse suffixfor ch in range(i, ord('A') - 1, -1): print(chr(ch), end="")
End the rowprint()

Printing Letters vs Starting a New Line

APIEffectUse for
print(..., end="")Stays on the same lineEach space and each letter
print()Ends the current lineAfter the fixed-width scan

Print cells without a newline, then end the row once.

Live Preview

Change the top letter and the right-aligned reverse pyramid updates instantly — including width and row count.

Enter one letter A–J. Line width equals top - 'A' + 1; each row is that many columns.

Live result top E · width 5 · 5 rows
    A
   BA
  CBA
 DCBA
EDCBA

Worked Walkthrough — top = 'E'

Trace each peak i, how many pads print, and the reverse suffix that lands on the right.

iPadsSuffixPrinted row
A4AA
B3BABA
C2CBACBA
D1DCBADCBA
E0EDCBAEDCBA

Every row is width 5. Spaces appear while j > i; letters fill from the peak down to A.

Python Programs

Three complete programs: fixed top E, top-letter input(), and an explicit pad-then-suffix form. Use View Output to reveal sample results.

Example 1 — Fixed Top E

Outer i is the row peak. Inner j sweeps E down to A and prints a space until it reaches i.

Python
for i in range(ord('A'), ord('E') + 1):
    for j in range(ord('E'), ord('A') - 1, -1):
        if j > i:
            print(" ", end="")
        else:
            print(chr(j), end="")
    print()

How It Works

1. Outer loop picks the peak. i walks A..E — the first letter of the visible reverse suffix.

2. Inner loop scans fixed width. While j > i, print a space; otherwise print chr(j). When i is C, that is ··CBA.

3. Full bottom row. When i is E, every column is a letter → EDCBA.

Example 2 — Top Letter Input

The pattern keeps the line width fixed to the chosen top letter. Prefer validating a single A–Z character in real apps.

Python
top = ord(input("Enter the top letter (like E): ").strip().upper())

for i in range(ord('A'), top + 1):
    for j in range(top, ord('A') - 1, -1):
        print(" " if j > i else chr(j), end="")
    print()

How It Works

1. Same j > i rule. Only the shared bounds follow top instead of the literal ord('E').

2. Width scales with top. With top = ord('D') you get a 4-column right-aligned pyramid.

3. Safer input tip. Prefer a single uppercase letter:

Safer input
raw = input("Enter the top letter (like E): ").strip().upper()
if len(raw) != 1 or not ('A' <= raw <= 'Z'):
    print("Enter one letter A–Z.")
    raise SystemExit
top = ord(raw)

Example 3 — Pad Spaces, Then Reverse Suffix

Often clearer to read: print leading spaces first, then letters from the peak down to A.

Python
top = ord('E')
width = top - ord('A') + 1

for i in range(ord('A'), top + 1):
    letters = i - ord('A') + 1
    pad = width - letters

    print(" " * pad, end="")

    for ch in range(i, ord('A') - 1, -1):
        print(chr(ch), end="")

    print()

How It Works

1. Compute pad and length. Peak i needs i - ord('A') + 1 letters and width - letters leading spaces.

2. Two clear loops. First pad, then print i down to A — same visual pyramid as the scan version.

3. When to use which. Keep the scan form for exams that ask one inner loop; use explicit pad when readability matters more.

Edge Cases & Pitfalls

Check these before calling the solution done.

j from A

Forward letters

Scanning upward prints AB, ABC, … instead of reverse suffixes. Keep j descending from top.

No spaces

Left-aligned

Skipping the j > i space branch left-aligns the reverse suffixes — you lose the right-aligned pyramid.

print() early

Broken row

Call bare print() only after the scan. Inside the inner loop (or default print(chr(j))), each cell lands on its own line.

top = 'A'

Single A

Output is just A (no pads) — a good sanity check.

Wrong compare

j >= i spaces

Using j >= i for spaces skips the peak letter. Spaces belong only while j > i.

Empty input

Index / ValueError

Validate length before using raw[0] or ord(top). Prefer a single A–Z character.

Time and Space Complexity

ProgramTimeExtra space
Scan / explicit pad formsO(n²)O(1)

For n = top - ord('A') + 1 letters there are n rows and each row scans n columns — quadratic in n.

Key Takeaways

  • Fixed width: every row scans top..A so alignment stays consistent.
  • Space test: print space while j > i; otherwise print the reverse letter.
  • Vs Program 2: reverse suffixes on the right, not reverse prefixes on the left.
  • Complexity: O(n²) time; O(1) extra space.

One line: for each peak, scan top..A and print spaces until the peak, then the reverse suffix.

Frequently Asked Questions

j walks from E down to A. While j is above the current row peak i, print spaces; once j reaches i and below, print letters. That pushes the visible suffix (like CBA) to the right of a fixed-width line.
Because we print leading spaces for columns where j > i. That pushes the letters to the right and forms a right-aligned pyramid.
Descending j prints letters in reverse order (BA, CBA, DCBA). If j went upward, you would get AB, ABC, ABCD instead.
Update the loop bounds so the outer loop runs up to ord('H') and the inner scan starts from ord('H') down to ord('A').
print(ch, end="") or print(" ", end="") stays on the same line for each cell. print() ends the row after the fixed-width scan finishes.
Program 2 prints reverse prefixes left-aligned (E, ED, EDC…). This pattern prints reverse suffixes right-aligned with leading spaces (A, BA, CBA…).
O(n²) for n letters because there are n rows and each row scans n positions.
Use input().strip().upper(), take the first character, require A–Z, and reject empty tokens. Cap at Z if you only want alphabetic ranges.

Did you know?

Each line has fixed width (five columns for A…E). Scanning j from E down to A, letters higher than the row peak i turn into spaces, so the visible suffix (CBA, DCBA, …) sits on the right.

Next: Diamond with Stars

Alphabet diamond rows with stars filling the outer frame.

Program 21 tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

12 people found this page helpful