Skip to content

Conversation

@Saurabh6266
Copy link

@Saurabh6266 Saurabh6266 commented Oct 28, 2025

This pull request introduces a new Python script named pyramid_of_stars.py that prints a beautiful pyramid pattern made of stars (*) based on user input.

The script is simple, interactive, and designed to demonstrate the fundamentals of loops, string formatting, and user input handling in Python.
It is a perfect beginner-friendly contribution for learning pattern generation and console output formatting.

🚀 Features

  • Prompts the user to enter the number of rows.
  • Prints a centered pyramid pattern using nested for loops.
  • Automatically adjusts spacing to maintain symmetry.
  • Clean, well-commented, and formatted for readability.
  • Requires no external dependencies — runs on standard Python 3.

💻 Code Overview
The core logic uses:

  • input() to capture user input.
  • A for loop to iterate through each row.
  • String multiplication and alignment for formatting each line.

🧠 Concepts Demonstrated

  • Nested loops
  • String concatenation and alignment
  • Basic pattern printing logic
  • User interaction through console I/O

🧾 Example Output
Enter number of rows: 5
*





Thank you so much!

Summary by Sourcery

Introduce a new Python script to interactively generate a centered pyramid of stars based on user-specified rows

New Features:

  • Prompt for and validate positive integer input
  • Render a centered star pyramid with adjustable rows using nested loops and string formatting

@sourcery-ai
Copy link

sourcery-ai bot commented Oct 28, 2025

Reviewer's Guide

Adds a new pyramid_of_stars.py script that interactively builds and prints a centered star pyramid using modular functions for input validation and pattern generation.

Class diagram for pyramid_of_stars.py functions

classDiagram
    class get_positive_int {
        +int get_positive_int(prompt: str)
        "Prompt user for positive integer input"
    }
    class draw_pyramid {
        +void draw_pyramid(rows: int)
        "Print centered pyramid of stars"
    }
    class main {
        +void main()
        "Entry point: gets input and draws pyramid"
    }
    main --> get_positive_int
    main --> draw_pyramid
Loading

File-Level Changes

Change Details Files
Added get_positive_int for robust user input validation
  • Implemented loop to prompt until a positive integer is provided
  • Handled non-integer input with ValueError exception
  • Displayed user-friendly error messages for invalid entries
pyramid_of_stars.py
Implemented draw_pyramid to generate centered star pattern
  • Iterated over row indices to calculate leading spaces
  • Used string multiplication for spaces and stars
  • Applied rstrip to remove trailing spaces
pyramid_of_stars.py
Structured script entrypoint with main function
  • Created main() to orchestrate input and pyramid drawing
  • Added if name == "main" guard for script execution
pyramid_of_stars.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there - I've reviewed your changes - here's some feedback:

  • Consider simplifying the star generation by using '' * (2 * i - 1) for each row instead of ' ' * i and rstrip to avoid trailing spaces more directly.
  • For greater flexibility and ease of automation, consider adding an optional command-line argument (via argparse) for the number of rows instead of relying solely on interactive input.
  • The diff shows an unintended duplicate entry (“Pyramid of stars”) after the main script – please remove or correct it so only the intended .py file is added.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Consider simplifying the star generation by using '*' * (2 * i - 1) for each row instead of '* ' * i and rstrip to avoid trailing spaces more directly.
- For greater flexibility and ease of automation, consider adding an optional command-line argument (via argparse) for the number of rows instead of relying solely on interactive input.
- The diff shows an unintended duplicate entry (“Pyramid of stars”) after the main script – please remove or correct it so only the intended .py file is added.

## Individual Comments

### Comment 1
<location> `pyramid_of_stars.py:5-13` </location>
<code_context>
+
+def get_positive_int(prompt: str) -> int:
+    """Prompt the user until they provide a positive integer (> 0)."""
+    while True:
+        try:
+            value = int(input(prompt).strip())
+            if value <= 0:
+                print("Please enter a positive integer greater than zero.")
+                continue
+            return value
+        except ValueError:
+            print("Invalid input. Please enter a valid integer.")
+
+
</code_context>

<issue_to_address>
**suggestion:** Consider handling KeyboardInterrupt to allow graceful exit.

Currently, pressing Ctrl+C results in an unhandled exception. Catching KeyboardInterrupt would allow the program to exit cleanly.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines +5 to +13
while True:
try:
value = int(input(prompt).strip())
if value <= 0:
print("Please enter a positive integer greater than zero.")
continue
return value
except ValueError:
print("Invalid input. Please enter a valid integer.")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Consider handling KeyboardInterrupt to allow graceful exit.

Currently, pressing Ctrl+C results in an unhandled exception. Catching KeyboardInterrupt would allow the program to exit cleanly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant