๐ Python Pattern Challenge — Day 9
Pattern printing is a great way to strengthen your Python logic, loops, conditions, and problem-solving skills. Today’s challenge is a little different from the previous patterns. We’ll create a unique hourglass-style star pattern by changing the number of stars across different rows.
The key is to understand how the number of stars can decrease, increase, and repeat in a controlled sequence.
Today's Challenge
Write a Python program to print:
Best and cleanest code will be rewarded! ๐
Solution 1 — Using a for Loop
rows = [5, 3, 1, 3, 5, 3, 1, 3, 5] for stars in rows: spaces = (5 - stars) // 2 print(" " * spaces + "* " * stars)
How it works:
The important part is the list:
[5, 3, 1, 3, 5, 3, 1, 3, 5]It controls how many stars appear in each row.
The pattern follows:
5 → 3 → 1 → 3 → 5 → 3 → 1 → 3 → 5Then:
spaces = (5 - stars) // 2
calculates how much indentation is required before printing the stars.
Solution 2 — Using Nested Loops
rows = [5, 3, 1, 3, 5, 3, 1, 3, 5] for stars in rows: spaces = (5 - stars) // 2 for _ in range(spaces): print(" ", end="") for _ in range(stars): print("*", end=" ") print()
How it works:
Here, nested loops separately control the two parts:
- First loop → creates the leading spaces.
- Second loop → prints the required number of *.
- Outer loop → moves through the pattern sequence.
This makes the relationship between spaces, stars, and rows easier to understand.
Solution 3 — Using a Pattern Formula
Instead of manually writing every row, we can generate the sequence using a repeating pattern.
pattern = [5, 3, 1] for block in range(3): for stars in pattern: spaces = (5 - stars) // 2 print(" " * spaces + "* " * stars)
How it works:
The pattern:
[5, 3, 1]is repeated three times.
The outer loop:
for block in range(3):controls the number of repetitions.
This makes the code more structured and reusable.
⚡ Short & Clean Code
for s in [5,3,1,3,5,3,1,3,5]: print(" "*((5-s)//2) + "* "*s)
๐ฅ A single loop is enough to generate the complete pattern!
๐ Challenge Yourself
Can you modify this pattern:
- Replace * with numbers?
- Take the maximum width using input()?
- Generate the sequence without manually writing the list?
- Use a while loop?
- Create a similar pattern using letters?
- Solve it using the shortest possible Python code?
Drop your solution below! ๐
Learn • Practice • Grow with CLCODING ๐๐ป
