Форум сайта python.su
0
Доброго времени суток. Подскажите, как мне исправить код, потому что я уже путаюсь. Мой код должен печатать матрицу в таком виде:
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()
Офлайн
568
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))
Офлайн