Занимательные фигуры на Python в одну строку

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Однострочники подобны коанам в Дзэн-буддизме. Как и коаны, некоторые однострочники можно охарактеризовать как "выражения ставящие мозг в тупик". Сами по себе они не научат программировать, но при накопленном определённом опыте позволят постичь всю силу и красоту языка программирования Пайтон.

Существует поверье - если созерцать непонятный однострочник, рано или поздно наступит "просветление".


Квадрат

print("\n".join("* " * 4 for i in range(4)))

Или так:

print(*["* " * 4 for i in range(4)], sep='\n')

Прямоугольный треугольник

print("\n".join("* " * i for i in range(7)))

Или так:

print(*["* " * i for i in range(7)], sep='\n')

Перевёрнутый прямоугольный треугольник

print("\n".join("* " * i for i in range(7, 0, -1)))

Или так:

print(*["* " * i for i in range(7, 0, -1)], sep='\n')

Пирамида

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')

Повёрнутый тупоугольный треугольник

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')

Ромб

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')

Песочные часы

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')

Ель

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')

Сердце

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)])))
Источник: https://habr.com/ru/post/591591/

Интересные статьи

Интересные статьи

В бытовом языке этот фразеологизм означает нечто заумное, переусложненное и бесполезное. Выражение восходит к роману писателя Германа Гессе, за который тот получил Нобелевскую премию. Сегодня мы попро...
Привет! Я Рома, менеджер продукта в Яндекс.Практикуме, где развиваю курс «Мидл Python-разработчик». Мы делаем из начинающих разработчиков крепких мидлов с инженерным мышлением. Сегодня хо...
Битрикс24 — популярная в малом бизнесе CRM c большими возможностями даже на бесплатном тарифе. Благодаря API Битрикс24 (даже в облачной редакции) можно легко интегрировать с другими системами.
C 2014 года, когда в Python появилась поддержка аннотаций типов, программисты работают над их внедрением в свой код. Автор материала, первую часть перевода которого мы публикуем сегодня, говорит,...
Python — это язык программирования, который отлично подходит для разработки самостоятельных скриптов. Для того чтобы добиться с помощью подобного скрипта желаемого результата, нужно написать неск...