Найти тему
eleday

Рандом пишет код на Python

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

Итак, план максимально прост: генерируем случайную последовательность из символов, пока не получится код, который не будет выдавать ошибку. Для генерации строки делаем так:

-2

lets — символы, из которых будет собираться строка. Это маленькие английские буквы, некоторые знаки препинания, цифры и перенос строки. Изначально были ещё кавычки, но я их убрал, потому что если поставить кавычки в начале и конце, то можно внутри писать что угодно — именно такие результаты я в основном и получал

Дальше с помощью eval() и try будем перехватывать ошибки

-3

Пустые словари передаю в качестве globals и locals на всякий случай, чтобы никакие переменные из основного кода точно не попали в сгенерированный. Теперь собираем цикл на большое количество итераций и, если ошибки нет выводим строку — это и будет то, что нам нужно

-4

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

Про кавычки уже говорил. Дальше хак, который позволяет пролететь ошибку — or. Если написать что-то адекватное (чаще всего число, отличное от нуля которое в бинарном представлении True), дальше можно писать всякую дичь — интерпретатор даже не посмотрит, условие же уже сработало, поэтому получается много подобных строк:

  • 7or erkqxa
  • 9or ojf5+8
  • 4or+gp-dbu
  • 7.or+-vtw4
  • 3or+r1-f/j

Также отлично прокатывают математические примеры и просто числа, типа

  • -31/5.9,14
  • .325095935
  • 1/-774.422
  • 7/+.54+69j
  • 2.//4e-9+8

В общем как-то так, небольшой фан-проект, чтобы поразвлекаться. Буду рад лайкам, комментариям и всему вот этому)

Наука
7 млн интересуются