Рассмотрим этот подход (Обновлено):
def create_grid(num_squares, num_stars):
holder = ""
a = '+ ' + ("- " * num_stars + "+ " + "- " * num_stars + '+ ')*(
num_squares // 2) + ("- " * num_stars + "+ ") * (num_squares % 2)
b = ('| ' + '* ' * num_stars + '| ' + " " * num_stars)*(num_squares//2) \
+ ('| ' + '* ' * num_stars) * (num_squares % 2)
for column in range(num_squares):
holder += a + "\n"
for row in range(num_stars):
holder += (b + '|' if (column % 2) == 0 else '|' + b[::-1]) + "\n"
holder += a + "\n"
print(holder)
Поэтому приведем несколько иллюстративных примеров печати:
create_grid(1,1)
:
+ - +
| * |
+ - +
create_grid(1,2)
:
+ - - +
| * * |
| * * |
+ - - +
create_grid(1,3)
:
+ - - - +
| * * * |
| * * * |
| * * * |
+ - - - +
create_grid(2,1)
:
+ - + - +
| * | |
+ - + - +
| | * |
+ - + - +
create_grid(2,2)
:
+ - - + - - +
| * * | |
| * * | |
+ - - + - - +
| | * * |
| | * * |
+ - - + - - +
create_grid(2,3)
:
+ - - - + - - - +
| * * * | |
| * * * | |
| * * * | |
+ - - - + - - - +
| | * * * |
| | * * * |
| | * * * |
+ - - - + - - - +
create_grid(3,1)
:
+ - + - + - +
| * | | * |
+ - + - + - +
| * | | * |
+ - + - + - +
| * | | * |
+ - + - + - +
create_grid(3,2)
:
+ - - + - - + - - +
| * * | | * * |
| * * | | * * |
+ - - + - - + - - +
| * * | | * * |
| * * | | * * |
+ - - + - - + - - +
| * * | | * * |
| * * | | * * |
+ - - + - - + - - +
create_grid(3,3)
:
+ - - - + - - - + - - - +
| * * * | | * * * |
| * * * | | * * * |
| * * * | | * * * |
+ - - - + - - - + - - - +
| * * * | | * * * |
| * * * | | * * * |
| * * * | | * * * |
+ - - - + - - - + - - - +
| * * * | | * * * |
| * * * | | * * * |
| * * * | | * * * |
+ - - - + - - - + - - - +