[#] Списки, кортежи
vit01(mira, 1) — All
2015-12-04 04:13:27


Вывести содержимое списка по 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