๐ Python Pattern Challenge — Day 14
Pattern printing is a great way to strengthen your Python logic, nested loops, conditions, spacing, and problem-solving skills. For Day 14, let's create a Number Pyramid Diamond where every row increases toward the center and then decreases symmetrically.
This pattern is interesting because each row contains numbers that increase toward the center and then decrease, creating a mirror-like structure.
Today's Challenge
Write a Python program to print:
1
1 2 11 2 3 2 1 1 2 3 4 3 2 1 1 2 3 2 1 1 2 1 1
Best and cleanest code will be rewarded! ๐
Solution 1 — Using Nested for Loops
n = 4 for i in range(1, n + 1): print(" " * (n - i), end=" ") for j in range(1, i + 1): print(j, end=" ") for j in range(i - 1, 0, -1): print(j, end=" ") print() for i in range(n - 1, 0, -1): print(" " * (n - i), end=" ") for j in range(1, i + 1): print(j, end=" ") for j in range(i - 1, 0, -1): print(j, end=" ") print()
How it works
The first part creates the increasing half:
11 2 1 1 2 3 2 1 1 2 3 4 3 2 1
The second part reverses the rows:
1 2 3 2 11 2 1 1
For each row, we use two loops:
for j in range(1, i + 1):This prints the numbers in increasing order.
Then:
for j in range(i - 1, 0, -1):prints them in decreasing order.
Solution 2 — Using a Single Main Loop
n = 4 for i in list(range(1, n + 1)) + list(range(n - 1, 0, -1)): print(" " * (n - i), end=" ") for j in range(1, i + 1): print(j, end=" ") for j in range(i - 1, 0, -1): print(j, end=" ") print()
How it works
Instead of writing two separate outer loops, we create the sequence:
[1, 2, 3, 4, 3, 2, 1]Each value determines the size of that row.
For example, when:
i = 4the inner loops produce:
1 2 3 4 3 2 1This keeps the solution compact while still using clear logic.
Solution 3 — Using a Function
def number_diamond(n): for i in list(range(1, n + 1)) + list(range(n - 1, 0, -1)): print(" " * (n - i), end=" ") for j in range(1, i + 1): print(j, end=" ") for j in range(i - 1, 0, -1): print(j, end=" ") print() number_diamond(4)
How it works
Putting the pattern inside a function makes it reusable.
Try:
number_diamond(5)and you'll get a larger pattern.
This is a good way to combine functions + loops + pattern logic in Python.
⚡ Short & Clean Code
n = 4 for i in list(range(1, n + 1)) + list(range(n - 1, 0, -1)): print(" " * (n-i), *range(1, i+1), *range(i-1, 0, -1))
๐ฅ A single outer loop generates the complete number diamond.
๐ Challenge Yourself
Can you modify this pattern:
- Take n using input()?
- Create the same pattern using a while loop?
- Replace numbers with letters?
- Create a hollow number diamond?
- Make the pattern work for any size?
- Print the numbers in reverse order?
- Create the same pattern using only one loop?
Drop your solution below! ๐
14 Days. 14 Patterns. Stronger Python Logic. ๐๐ฅ
Learn • Practice • Grow with CLCODING ๐

