Найти - Пользователи
Полная версия: Матрица змейкой по кругу изнутри
Начало » Python для новичков » Матрица змейкой по кругу изнутри
1
wywa
Доброго времени суток. Подскажите, как мне исправить код, потому что я уже путаюсь. Мой код должен печатать матрицу в таком виде:
7 8 9
6 1 2
5 4 3
 print('Input n --> ')
# 6 - квадратная спираль снаружу
n = int(input())
v = [[0] * n for i in range(n)]
m = n
i = 0
j = n - 1
value = n * n
while n != 0:
    k = 0
    while k <= n - 1:
        value -= 1
        j -= 1
        v[i][j] = value
        k += 1
    for k in range(0, n - 1):
        i += 1
        value -= 1
        v[i][j] = value
    for k in range(0, n - 1):
        j += 1
        value -= 1
        v[i][j] = value
    for k in range(0, n - 1):
        i -= 1
        value -= 1
        v[i][j] = value
    i += 1
    j -= 1
    if n < 2:
        n = 0
    else:
        n = n-2
for i in range(m):
    for j in range(m):
        print(v[i][j], end=' ' * 3)
    print()
FishHook
wywa
я бы разбил задачу на две: в рамках первой задачи вам надо получать следующий элемент матрицы по порядку, а вторая задача - отрисовать элементы в правильном порядке. Так вы будете меньше путаться
Первую часть я вам помогу решить

    
def matrix_generator(matrix):
    last_row = len(matrix) - 1
    last_col = len(matrix[0]) - 1
    r = 0
    c = 0
    while True:
        if c > last_col:
            c = 0
            r += 1
        if r > last_row:
            return
        yield matrix[r][c]
        c += 1
matrix = [
    [1, 5, 6, 3, 4, 5],
    [5, 7, 3, 5, 6, 7],
    [7, 4, 3, 4, 2, 0],
]
generator = matrix_generator(matrix)
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB