Вывести содержимое списка по 10 элементов в строке так, чтобы вывод происходил
как-бы по спирали: каждая вторая строка должна выводиться задом наперед.
**Решение задачи:**
Зная номер строки и то, что элементов в строке 10, можно вычислить индексы
первого и последнего элементов в строке. А далее в цикле вывести элементы либо
от первого к последнему, либо от последнего к первому в зависимости от
четности строки.
Номер первого элемента в строке можно определить по формуле i * 10, где i -
это номер строки. Действительно, если строка нулевая, то индекс первого
элемента будет 0, а если строка первая, то индекс будет 10. Индекс же
последнего элемента в строке отличается от первого на 9 единиц, хотя всего
элементов в строке 10.
"Счетчиком" в цикле, выводящем строку элементов задом наперед, является индекс
последнего элемента; он же используется при выводе элемента.
import random
a = []
for i in range(100):
a.append(round(random.random() * 50))
i = 1 # обычный вывод для сравнения
while i <= 100:
print('%4d' % a[i-1], end='')
if i%10 == 0: print()
i += 1
print()
i = 0 # вывод по спирали
while i < 10:
if i%2 == 0:
j = i * 10
k = j + 9
while j <= k:
print('%4d' % a[j], end='')
j += 1
print()
else:
j = i * 10
k = j + 9
while j <= k:
print('%4d' % a[k], end='')
k -= 1
print()
i += 1
Пример выполнения скрипта:
29 9 50 36 25 1 2 43 13 41
0 23 43 45 26 40 1 41 1 44
47 45 1 38 32 5 40 30 41 25
25 43 37 9 45 33 6 38 13 47
33 4 15 18 18 32 29 48 20 18
49 11 50 8 37 23 25 3 18 5
50 19 24 44 5 11 25 30 39 35
17 31 33 18 7 21 41 41 6 48
19 4 31 9 23 49 39 6 25 21
27 12 27 25 26 47 18 15 3 33
29 9 50 36 25 1 2 43 13 41
44 1 41 1 40 26 45 43 23 0
47 45 1 38 32 5 40 30 41 25
47 13 38 6 33 45 9 37 43 25
33 4 15 18 18 32 29 48 20 18
5 18 3 25 23 37 8 50 11 49
50 19 24 44 5 11 25 30 39 35
48 6 41 41 21 7 18 33 31 17
19 4 31 9 23 49 39 6 25 21
33 3 15 18 47 26 25 27 12 27