Создание узора через цикл

Xочю научиться вышивать крестиком и сделать орнаменты на вышивки.
Появилась идея написать программу, которая будет делать орнамент нужной ширины и длины, которые можно будет использовать в качестве примера для вышивки.

Вышивка – это прямоугольник m×n.
Орнаменты — это два луча, выходящих из верхних углов вышивки и имеющих углы 45 градусов.
Луч отражается, когда прикасается к вертикальному краю. Когда луч прикасается к нижнему краю, он исчезает.

Помогите, пожалуйста, написать такую программу, которая согласно заданной ширине n и длине m выведет пример орнамента.

Входные данные Первая строка содержит два целых числа m и n (3≤n,m≤1000) - высота и ширина соответственно.

Выходные данные Выведите орнамент размерами n×m.


Для лучшего понимания вы можете посмотреть примеры.

Входные данные: 6 4

Входные данные:

x..x
.xx.
.xx.
x..x
.xx.
.xx.

Входные данные: 12 5

Входные данные:

x...x
.x.x.
..x..
.x.x.
x...x
.x.x.
..x..
.x.x.
x...x
.x.x.
..x..
.x.x.

Входные данные: 21 12

Входные данные:

x..........x
.x........x.
..x......x..
...x....x...
....x..x....
.....xx.....
.....xx.....
....x..x....
...x....x...
..x......x..
.x........x.
x..........x
.x........x.
..x......x..
...x....x...
....x..x....
.....xx.....
.....xx.....
....x..x....
...x....x...
..x......x..

main.py:


m,n = map (int, input(). split())

vishivanka = []

for x in range(m):
    vishivanka.append([])
    for y in range(n):
        vishivanka[x].append(".")

for x in range(m):
    print()
    for y in range(n):
        if x==y:
            vishivanka[x][y] = "x"

for y in range(n):
    vishivanka[y][n-y-1] = "x"

for x in range(m):
    print()
    for y in range(n):
        print(vishivanka[x][y], end=" ")

Написанный код не работает как надо, помогите пожалуйста.


Ответы (1 шт):

Автор решения: S. Nick

Попробуйте так:

flag = True
while flag:
    m, n = map(int, input('\nВведите количество строк и столбцов \n'\
        'например: 6 4 или 0 0 для выхода: ').split())
    if not m:
        break
    vishivanka = []

    print(f'\nстрок={m}; столбцов={n}') #

    for x in range(m):
        vishivanka.append([])
        for y in range(n):
            vishivanka[x].append(".")

    for x in range(m):
        if not (x % (n-1)):                        
            _y = -1
            _x = 0

        vishivanka[x][_x] = "x"
        vishivanka[x][_y] = "x"                 
                
        _y -= 1
        _x += 1

    for x in range(m):
        print()
        for y in range(n):
            print(vishivanka[x][y], end=" ")           
    print()            

введите сюда описание изображения

→ Ссылка