![](https://habrastorage.org/getpro/habr/upload_files/92a/227/2b2/92a2272b2f1825587d27e43494b7ce12.png)
Однострочники подобны коанам в Дзэн-буддизме. Как и коаны, некоторые однострочники можно охарактеризовать как "выражения ставящие мозг в тупик". Сами по себе они не научат программировать, но при накопленном определённом опыте позволят постичь всю силу и красоту языка программирования Пайтон.
Существует поверье - если созерцать непонятный однострочник, рано или поздно наступит "просветление".
Квадрат
![](https://habrastorage.org/getpro/habr/upload_files/85c/dad/116/85cdad1162289c8e0a11162de7db6e14.jpg)
print("\n".join("* " * 4 for i in range(4)))
Или так:
print(*["* " * 4 for i in range(4)], sep='\n')
Прямоугольный треугольник
![](https://habrastorage.org/getpro/habr/upload_files/dc5/7d4/3c4/dc57d43c4df04f1c269d1f1ba9ed7ddb.jpg)
print("\n".join("* " * i for i in range(7)))
Или так:
print(*["* " * i for i in range(7)], sep='\n')
Перевёрнутый прямоугольный треугольник
![](https://habrastorage.org/getpro/habr/upload_files/a47/d70/c02/a47d70c02b1d473611ac2e432733bf0e.jpg)
print("\n".join("* " * i for i in range(7, 0, -1)))
Или так:
print(*["* " * i for i in range(7, 0, -1)], sep='\n')
Пирамида
![](https://habrastorage.org/getpro/habr/upload_files/c24/0db/904/c240db904c2722e3773297b9992d3037.jpg)
print("\n".join(('* ' * i + '*').rjust(7 * 2 + i) for i in range(7)))
Или так:
print(*[" " * (8-i) + " *" * i for i in range(1, 8)], sep='\n')
Повёрнутый тупоугольный треугольник
![](https://habrastorage.org/getpro/habr/upload_files/3bc/a60/643/3bca60643264bfe78d9e9c7a603f5843.jpg)
from itertools import chain
print("\n".join(chain(("* " * i for i in range(7)), ("* " * i for i in range(7, 0, -1)))))
Или так:
print(*["* " * i for i in range(7)], *["* " * i for i in range(7, 0, -1)], sep='\n')
Ромб
![](https://habrastorage.org/getpro/habr/upload_files/2e2/1ce/ba1/2e21ceba1069fbf26be3da25a4eeaef3.jpg)
from itertools import chain
print("\n".join(chain((('* ' * i + '*').rjust(7 * 2 + i) for i in range(6)), (('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, -1, -1)))))
Или так:
print("\n".join(*[(*(('* ' * i + '*').rjust(7 * 2 + i) for i in range(6)), *(('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, -1, -1)))]))
Или так:
print(*[('* ' * i + '*').rjust(7 * 2 + i) for i in range(6)], *[('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, -1, -1)], sep='\n')
Песочные часы
![](https://habrastorage.org/getpro/habr/upload_files/0e3/63e/36b/0e363e36b420e599c24c1de53e5e2df6.jpg)
from itertools import chain
print("\n".join(chain((('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, 0, -1)), (('* ' * i + '*').rjust(7 * 2 + i) for i in range(7)))))
Или так:
print(*[('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, 0, -1)], *[('* ' * i + '*').rjust(7 * 2 + i) for i in range(7)], sep='\n')
Ель
![](https://habrastorage.org/getpro/habr/upload_files/37f/6cf/9aa/37f6cf9aa0750c04e8f98f08c9d58353.jpg)
from itertools import chain
print("\n".join(chain((('* ' * i + '*').rjust(7 * 2 + i) for i in range(5)), (('* ' * i + '*').rjust(7 * 2 + i) for i in range(1, 7)), (('* ' * i + '*').rjust(7 * 2 + i) for i in range(1, 9)))))
Или так:
print(*[('* ' * i + '*').rjust(7 * 2 + i) for i in range(5)], *[('* ' * i + '*').rjust(7 * 2 + i) for i in range(1, 7)], *[('* ' * i + '*').rjust(7 * 2 + i) for i in range(1, 9)], sep='\n')
Сердце
![](https://habrastorage.org/getpro/habr/upload_files/a78/ee8/d72/a78ee8d72f127b70ada91254a7ef6541.jpg)
print('\n'.join(' '.join(*zip(*row)) for row in ([["*" if row==0 and col%3!=0 or row==1 and col%3==0 or row-col==2 or row+col==8 else " " for col in range(7)] for row in range(6)])))
Комментарии (6)
valkumei
26.11.2021 01:43+3"Тема сисек не раскрыта" (С)
pulsatrix
26.11.2021 21:24+1«Тема сисек не раскрыта» (С)
Легко переделывается из сердца:print('\n'.join(' '.join(*zip(*row)) for row in ([["*" if row==0 and col%3!=0 or row==1 and col%3==0 or row-col==2 or row+col==8 or col==1 and row==1 or col==5 and row==1 else " " for col in range(7)] for row in range(3,-1,-1)]))) * * * * * * * * * * * * *
ya_ne_znau
26.11.2021 14:37необязательно использовать генератор списков и сразу распаковывать – можно и обычный генератор в скобки обернуть
XMack
Кольцо всевластия. С переносами строк правда "костыльно" получилось.