Рубрики
Без рубрики

Python One Line Quine

Большинство компьютерных ученых, программистов и хакеров даже не знают смысла слова «Крутин» в контексте программирования. Итак, первые вещи первыми: что такое корки? Грубо говоря, Quine – это самопровергающая программа: если вы запускаете ее, она генерирует себя. Вот отличное определение :: Quine: / KWI: N / /N./ [От имени … Python One Line Quine Подробнее »

Автор оригинала: Chris.

Большинство компьютерных ученых, программистов и хакеров даже не знают смысла слова «Крутин» в контексте программирования. Итак, первые вещи первыми:

Что такое креан?

Грубо говоря, Quine – это самопровергающая программа: если вы запускаете ее, она генерирует себя.

Вот отличное определение:

: поручитель :/KWI: N//N./[От имени логика Willard Van Orman Quine, через Douglas Hofstadter] программа, которая генерирует копию собственного источника текста в качестве полного вывода. Устройство кратчайшего возможного каната в некотором данном языке программирования – это обычное развлечение. ( источник )

Название «Quine» было придумано Дуглас Хофштадтер, в его популярной научной книге Гендель, Эшер, Бах В честь философа Философ Виллард Ван Орман Круина (1908-2000), который сделал обширное изучение косвенного самосвязки, и, в частности, для следующего парадоксального выражения, известного как парадокс Круина.

Самый короткий возможный квион – следующая пустая программа:

 

Программа самовоспроизводит, поскольку вывод программы является сама программа. Продолжай и запустите его в своей собственной оболочке! 😉

Давайте погрузимся в коллекцию Python Quines, чтобы продемонстрировать, как они работают!

Python One-Liner Quine 1

Вот короткий одноинальный креан, я нашел в это ресурс:

s='s=%r;print(s%%s,sep="")';print(s%s,sep="")
  • Вы можете улучшить свой Навыки форматирования строки действительно понять этот одноклассник.
  • Аргумент разделителя функции печати избегает печати нового стилового символа в конце.
  • % r Спецификатор формата автоматически поставляет отдельные кавычки.

Вот код в интерактивной оболочке, чтобы вы могли играть с этим каналом в вашем браузере:

Упражнение : Запустите код. Какой вывод? Можете ли вы объяснить, почему?

Python One-Liner Quine 2

Следующий квион также интересен. Я нашел это здесь При исследовании этой статьи. Оригинальный источник цитировал его как «кратчайший путь», – что не точен! Вы уже видели более короткий как наш первый пример в этой статье. Тем не менее, одноклассник интересен тем не менее:

_='_=%r;print (_%%_)';print (_%_)

Опять же, вот интерактивное кодовое оболочку, которая позволяет тестировать, если это действительно корки!

Опять же, вы используете форматирование строки Python, чтобы сначала определили переменную с именем _ Отказ Один подчеркивание является совершенно допустимым именем переменной

Во-вторых, вы назначаете код '_ =% r; Печать _ %% _' к вновь созданной подчеркнутой переменной.

В-третьих, вы печатаете выражение _% _ который состоит из подчеркивания переменной _ с _ в качестве ввода на форматирование строки (как META!).

Таким образом, форматирование строки выражение % r в _ Получает значение _ Отказ

Обратите внимание, что двойной % в '_ =% r; Печать _ %% _' ускользает от процентного символа.

Python One-Liner Quine 3

Некоторые скажут, что следующий код также соответствует определению корки. Код прочитает свой собственный файл и печатает результат к оболочке:

print(open(__file__).read())

Выход – это сам код – это тривиально выполняется, потому что код считывает файл, который он хранится, и он печатает результат. Тем не менее, некоторые будут рассмотреть этот «обмана», потому что квитанции должны создавать себя внутренне, используя только код, а не мета-механизмы, такие как файлы для чтения.

Вот интерактивная оболочка:

Упражнение : Измените код и добавьте дополнительную строку. Это все еще квион?

Python One Liner Quine 4

Следующий квион приходит от Итак, отвечать И это одно из моих любимых:

print((lambda x:f"{x}{x,})")('print((lambda x:f"{x}{x,})")',))

Попробуйте сами в интерактивной оболочке кода:

Упражнение : Попробуйте изменить хотя бы один символ и все еще сохраняю его в курсе!

Квион создает анонимную функцию лямбда и вызывает его немедленно, передавая одно строковое значение. То, как функция лямбда модифицирует строковое значение, гарантирует, что вывод кода равен самому коду.

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/python-quine/”