Русская версия языка Python, реализованная в виде транслятора кода в код Python.
Русский Питон почти полностью идентичен оригинальному языку с англоязычной лексической базой, основное отличие заключается в использовании русских названий для именования сущностей в коде. Данный инструмент создан для достижения двух целей:
- Повышение производительности труда работников, выполняющих задачи автоматизации процессов и формализации алгоритмов, за счёт применения лексики на родном им языке, что априори повышает усвоение и читаемость кода.
- Упрощение освоения навыков алгоритмизации и составления компьютерных программ учащимися путём устранения искусственного препятствия в виде необходимости оперировать лексикой иностранного языка.
Когда-то, в эпоху, когда железо и разум сливались в первых советских вычислительных машинах, русские ЯП были не просто инструментом — они были голосом нации, стремящейся к технологическому величию. В цехах заводов, на полигонах оборонных предприятий и в тиши академических кабинетов инструкции программного кода звучали на русском языке, воплощая мощь отечественной промышленности и науки. Сегодня, когда цифровой мир задаёт ритм жизни, возрождение русских ЯП становится не просто возможностью, но и необходимостью — способом вернуть себе право творить технологии на родном языке.
Алгоритмические языки на русской лексической базе повышают производительность труда разработчиков, поскольку работа на знакомом языке не требует от них приложения ненужных умственных усилий для переключения на иностранный язык, чем снижается когнитивная нагрузка, улучшается читаемость и качество создаваемого кода и повышается эффективность коммуникации в команде. Русский код априори является более понятным и воспринимаемым интуитивно в контексте культурных и языковых особенностей русских людей, снижая порог вхождения и устраняя искусственный барьер в виде необходимости овладения иностранным языком на уровне, достаточном для беглого чтения кода.
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка. Технически инструмент представляет собой сочетание собственно транслятора кода Русского Питона в оригинальный Python с модулем, модифицирующим встроенные объекты, а также обёртками над модулями стандартной библиотеки.
Установка
Транслятор устанавливается как пакет соответствующей командой:
pip install rupython
Если “pip” выдаёт ошибку “externally-managed-environment” (под некоторыми версиями ОС Linux), то установка производится следущей командой:
pip install rupython --break-system-packages
Код модулей Русского Питона размещается в файлах с расширением .крп. Для интеграции в операционную систему необходимо ассоциировать эти файлы с транслятором. Для автоматической установки ассоциации выполните командный файл “FA_Windows.bat” или “FA_Linux.sh” в зависимости от операционной системы, размещённый вместе с исходным кодом.
Исходный код размещён тут: https://gitflic.ru/project/russky/rupython
Пример библиотеки, написанной на Русском Питоне: https://gitflic.ru/project/russky/gost-crypto-rp
Примеры кода
Функция НОД(*числа):
f = фун a, b: a если b == 0 иначе f(b, a % b)
Вернуть Свёртка(фун a, b: f(a, b), числа)
Функция НОК(*числа):
числа = Множ(числа)
n = n_ = Макс(числа)
числа.Удалить(n)
Пока Любое(n % m для m в числа): n += n_
Вернуть n
Функция Дата_Пасхи(год, нов_ст = Пусто):
д = (год % 19 * 19 + 15) % 30
д += (год % 4 * 2 + год % 7 * 4 + 6 * д + 6) % 7
нов_ст = Да если нов_ст это Пусто и год >= 1918 иначе нов_ст
Если не нов_ст:
Если д > 9: Вернуть Строка(д - 9) + ' апреля'
Иначе: Вернуть Строка(22 + д) + ' марта'
Иначе:
п = год // 100 - год // 400 - 2
Если д > 39 - п: Вернуть Строка(д - 39 + п) + ' мая'
Иначе: Вернуть Строка(д - 9 + п) + ' апреля'
Обзор особенностей языка
Основные встроенные типы данных:
- Числовые:
Цел,Вещ,Компл. - Логические:
Логич– значенияДаиНет;ТрЛогич–Истина/Неопр/Ложь. - Неопределённое значение:
Пусто(пустое значение, или ничего). - Строковый (текстовый):
Строка. - Последовательности:
Список,Кортеж,Ряд(диапазон). - Ассоциативный массив:
Словарь. - Множества:
МножиНеизмМнож. - Байтовые:
БайтыиБайтМассив.
Далее представлены примеры кода, демонстрирующие использование наиболее важных языковых конструкций.
Условие:
Если x > 0:
зн = 1
АЕсли x < 0:
зн = -1
Иначе:
зн = 0
Цикл перебора:
Для перем из Ряд(10):
Вывести(перем)
Цикл с предусловием:
Пока x < знач:
x += y
Если x == z: Продолжить
Цикл с послеусловием:
Повторять:
x *= z
Если x >= y: Прервать
До x > знач
Цикл со счётчиком:
Цикл i = 0 : i < 10 : i += 1:
Вывести(i)
Импорт:
Из Пакет_1 подключить Модуль_1, Модуль_2
Подключить Модуль_3 как М3
Логические операции:
v = не x и (y или z)
u = w в сп1 и w не в сп2
k = l это m и m это не n
Троичные логические операции:
a = Ложь, b = Неопр, c = Истина
Вывести((a & c) ^ (~a | c))
Функция:
Функция F(a, b):
Если a == b: Вернуть Да
Иначе: Вернуть Нет
Функция Пример(парам):
Для сч из Ряд(парам):
Если парам[сч] == 0: Возврат
Генераторы
Функция Фиб(n):
a, b = 0, 1
Для _ из Ряд(n):
Выдать a
a, b = b, a + b
кв_ч = (сч ** 2 для сч из Ряд(1, 10))
Класс
Класс Пример(Другой_класс):
Функция __Подготовка__(экземпляр, перем = 0):
экземпляр.зн = перем
Объект = Пример(1)
Значение по условию
перем = 0 если x == зн иначе 1
Пропуск действия и удаление переменной
Если x == 1: Пропустить
Иначе: Удалить y
Краткое условие
перем = 1 если x > 0 иначе 0
Пропуск действия и удаление переменной
Если x == 1: Пропустить
Иначе: Удалить y
Безымянная (λ) функция
В_квадрат = фун x: x ** 2
Обработка исключений
Попробовать:
ч = Цел(строка)
Перехватив ОшибкаЗначения:
Вывести('Ошибка.')
Иначе: Вывести('Сработало.')
Завершив: Вывести('Выполнено.')
Если Тип(x) != Стр:
Бросить ОшибкаЗначения
Области видимости
x = 0
Функция Внешняя():
y = 1
Функция Внутренняя():
Общее x
НеМестное y
x = y
Внутренняя()
Проверка существования переменной:
Если $Переменная?: Вывести('Существует.')
Обёртка (декоратор) функции
Функция Обёртка(Ф):
Функция ФО():
Вывести('1')
Ф()
Вернуть ФО
@Обёртка
Функция Проверка(): Вывести('2')
Конструкция выбора
Выбрать x:
При 1: зн = '+'
При -1: зн = '-'
При _: зн = '0'
Контекстный менеджер
Используя Открыть('Файл.дан', 'r') как файл:
Пока стр := файл.Читать_строку():
Вывести(стр.Удалить_по_бокам())
Проверка условия
Функция Разделить(x, y):
Проверить y != 0, 'Деление на 0.'
Вернуть x / y
Встроенные функции и обёртки
АбсЗнач(x)
Возвращает модуль (абсолютное значение) числа x.
АсПеребиратель(асинхр_перебираемое)
Создаёт асинхронный перебиратель из асинхронно перебираемого объекта.
Все(перебираемое)
Возвращает Да, если все элементы перебираемого истинны, иначе Нет.
Любое(перебираемое)
Возвращает Да, если хотя бы один элемент перебираемого истинный.
АсСледущий(асинхр_перебиратель[, по_умолчанию])
Возвращает следующий элемент асинхронного перебирателя. Если элементы закончились и задан по_умолчанию, возвращает его.
В7битовСимв(объект)
Возвращает строковое представление объекта из 7-битовых символов, экрануя остальные.
Двоич(x)
Преобразует целое число x в строку его двоичного представления.
Логич(объект = Нет)
Возвращает Да, если объект логически истинный, иначе Нет.
Останов(*ПА, **ИА)
Запускает отладчик в текущей точке выполнения.
БайтМассив([источник = ''[, кодование[, при_ошибках]]])
Создаёт изменяемый массив байтов. При передаче строки — кодует её.
Байты([источник = ''[, кодование[, при_ошибках]]])
Создаёт неизменяемую последовательность байтов.
Вызываемое(объект)
Проверяет, можно ли объект вызвать как функцию.
Символ_по_коду(i)
Возвращает многобайтовый символ по его числовому коду.
@Метод_класса
Обёртка (декоратор), делающая функцию методом класса (первый аргумент — сам класс).
Собрать_код(исходник, название_файла, режим, флаги = 0, не_наследовать = Нет, оптимизация = -1)
Компилирует строку в объект кода.
Компл(число = 0 | строка | действ_часть = 0, мнимая_часть = 0)
Создаёт комплексное число из строки, числа или пары вещественных частей.
Удалить_поле(объект, название)
Удаляет атрибут объекта по названию.
Словарь([отображение | перебираемое], **ИА)
Создаёт словарь. Принимает пары ключ-значение, отображение или именованные аргументы.
Содержимое([объект])
Возвращает список доступных атрибутов объекта.
ДелОст(a, b)
Возвращает кортеж (a // b, a % b) — целая часть и остаток от деления.
Перечень(перебираемое, начало = 0)
Возвращает пары (индекс, элемент), начав с начало.
ВычВыр(исходник, общие_сущности = Пусто, местные_сущности = Пусто)
Вычисляет выражение из строки и возвращает результат.
ВыпКод(исходник, общие_сущности = Пусто, местные_сущности = Пусто, замыкание = Пусто)
Выполняет код из строки. Не возвращает результат.
Выборка(функция, перебираемое)
Фильтрует элементы, для которых функция возвращает Да.
Вещ(число = 0.0 | строка)
Преобразует аргумент в число с плавающей запятой.
Формат(значение, описание = '')
Форматует значение по шаблону.
НеизмМнож(перебираемое = Множ())
Создаёт неизменяемое множество.
Получить_поле(объект, название[, по_умолчанию])
Возвращает атрибут объекта. Если не существует — возвращает по_умолчанию, если задано.
Общие_сущности()
Возвращает глобальные переменные текущего контекста.
Имеет_поле(объект, название)
Проверяет наличие атрибута у объекта.
Хэш(объект)
Возвращает хэш-значение объекта.
Справка([запрос])
Выводит встроенную справку.
Шестн(x)
Преобразует число x в строку его шестнадцатеричного представления.
Идент(объект)
Возвращает уникальный идентификатор объекта.
Принять(сообщение)
Читает строку с клавиатуры. Показывает сообщение, если задано.
Цел(число = 0 | строка, основание = 10)
Преобразует в целое число. Для строки можно указать основание.
Экземпляр(объект, класс)
Проверяет, является ли объект экземпляром класса.
Подкласс(класс, надкласс)
Проверяет, является ли класс подклассом надкласс.
Перебиратель(объект[, исключение])
Возвращает перебиратель (итератор) по объекту.
Длина(s)
Возвращает количество элементов в последовательности или коллекции.
Список([перебираемое])
Создаёт список из перебираемого объекта или пустой список.
Местные_сущности()
Возвращает словарь локальных переменных в текущем контексте.
Отображение(функция, перебираемое, *перебираемые)
Применяет функцию к каждому набору элементов из перебираемых.
Макс((перебираемое[, если_пусто] | аргумент_1, аргумент_2, *аргументы), ф_сравнения = Пусто)
Возвращает наибольшее значение. Можно передавать последовательность или несколько аргументов.
Память(объект)
Возвращает представление объекта на уровне байтов.
Мин((перебираемое[, если_пусто] | аргумент_1, аргумент_2, *аргументы), ф_сравнения = Пусто)
Возвращает наименьшее значение. Можно передавать последовательность или несколько аргументов.
Следующий(перебиратель[, по_умолчанию])
Возвращает следующий элемент из перебирателя. Если элементов больше нет и задан по_умолчанию, возвращает его.
Объект()
Базовый класс для всех объектов.
Восьм(x)
Преобразует целое число x в строку его восьмеричного представления.
Открыть(название, режим = 'r', буферизация = -1, кодование = Пусто, при_ошибках = Пусто, новая_строка = Пусто, закрыть_описатель = Да, открыватель = Пусто)
Открывает файл и возвращает файловый объект.
Код_символа(c)
Возвращает многобайтовый код символа c.
Степень(основание, показатель, модуль = Пусто)
Возводит число в степень с возможностью указать модуль (a ** b % m).
Вывести(*объекты, разделитель = ' ', в_конце = '\n', файл = Пусто, немедленно = Нет)
Выводит значения на экран или в файл, с настройкой форматирования.
[@]Свойство(ф_получения = Пусто, ф_установки = Пусто, ф_удаления = Пусто, документация = Пусто)
Создаёт объект свойства, превращает методы класса в управляемые атрибуты. Может использоваться как обёртка (декоратор).
Ряд(длина | нач, кон, шаг = 1)
Создаёт диапазон целых чисел.
Представление(объект)
Возвращает строковое представление объекта.
Вспять(последовательность)
Возвращает обратный перебиратель (итератор).
Округлить(число, разрядов = Пусто)
Округляет число до ближайшего значения с возможностью указать число знаков.
Множ([перебираемое])
Создаёт множество (уникальные элементы без порядка).
Установить_поле(объект, название, значение)
Устанавливает значение атрибута по названию.
Срез(длина | нач, кон, шаг = 1)
Создаёт срез для применения к последовательностям.
По_порядку(перебираемое, ф_сравнения, наоборот)
Возвращает упорядоченный перебираемый объект. Возможно сортование по ключу и в обратном порядке.
[@]Статический_метод(функция)
Обёртка, превращающая функцию в статический метод класса.
Строка(объект[, кодование = 'utf-8', при_ошибках)
Преобразует объект в строку. Если объект байтовый — оборачивает его.
Сумма(перебираемое[, начало = 0])
Возвращает сумму элементов. Можно указать начальное значение.
Надкласс([тип, порядок_поиска = Пусто])
Возвращает объект, предоставляющий доступ к родительскому классу.
Кортеж([перебираемое])
Создаёт кортеж (неизменяемую последовательность) из перебираемого объекта или пустой.
Тип(объект | название, надклассы, поля, **ключевые_слова)
Возвращает тип объекта или создаёт новый.
Поля([объект])
Возвращает словарь атрибутов объекта.
Совмещение(*перебираемые, проверить_длины = Нет)
Возвращает возвращает перебиратель кортежей, объединяющих элементы из нескольких источников.
Свёртка(функция, перебираемое, нач_знач = Пусто)
Пошагово сворачивает элементы, применяя функцию: ((a, b) -> c).
@.Получение
Метод объекта свойства, назначающий функцию для получения атрибута.
@.Установка
Метод объекта свойства, назначающий функцию для установки атрибута.
@.Удаление
Метод объекта свойства, назначающий функцию для удаления атрибута.
__Подключить__(название, общие_сущности = Пусто, местные_сущности = Пусто, по_списку = 0, уровень = 0)
Внутренняя функция импорта.
Встроенные методы и свойства
Строка, Байты, БайтМассив
Методы:
Найти(подстрока[, начало[, конец]])— возвращает наименьший индекс подстроки (или-1, если не найдена).Найти_с_конца(подстрока[, начало[, конец]])— возвращает наибольший индекс подстроки, начиная поиск с конца.Положение(подстрок[, начало[, конец]])— какНайти, но вызываетОшибкаЗначения, если подстрока не найдена.Положение_с_конца(подстрока[, начало[, конец]])— какНайти_с_конца, но вызываетОшибкаЗначения, если подстрока не найдена.Заменить(что, чем[, макс_число])— возвращает копию, заменив указанные вхождения.Разбить([разделитель[, макс_разбивка]])— возвращает список подстрок, разделённых разделителем.Сцепить(перебираемое)— объединяет в строку элементы перебираемого объекта, используя текущую строку как разделитель.В_заглавные()— возвращает копию строки в верхнем регистре.В_строчные()— возвращает копию строки в нижнем регистре.Обратить_регистр()— возвращает копию, меняя регистр всех символов.Начать_с_заглавной()— возвращает копию с первым заглавным символом.Начать_слова_с_заглавных()— возвращает копию, где каждое слово начинается с заглавной.Из_строчных()— возвращаетДа, если все буквы строчные.Из_заглавных()— возвращаетДа, если все буквы заглавные.Из_цифр()— возвращаетДа, если все символы — цифры.Из_букв()— возвращаетДа, если все символы — буквы.Из_цифробукв()— возвращаетДа, если все символы — буквы или цифры.Из_пробелов()— возвращаетДа, если все символы — пробельные.Слова_с_заглавных()— проверяет, начинаются ли все слова в строке с заглавных букв.Начинается(чем[, начало[, конец]])— проверяет, начинается ли строка с указанной.Кончается(чем[, начало[, конец]])— проверяет, заканчивается ли строка указанной.Отцентровать(ширина[, заполняющий_символ])— возвращает строку, выровненную по центру заданной ширины.Число_вхождений(подстрока[, начало[, конец]])— возвращает количество непересекающихся вхождений подстроки.Табуляции_в_пробелы([размер_табуляции])— заменяет символы табуляции на пробелы.Удалить_в_начале([символы])— удаляет символы из начала строки (по умолчанию пробельные).Удалить_в_конце([символы])— удаляет символы из конца строки (по умолчанию пробельные).Удалить_по_бокам([символы])— удаляет символы с обоих концов строки.Разделить(разделитель)— разделяет строку по первому вхождению разделителя на три части (кортеж).Разделить_с_конца(разделитель)— разделяет строку по последнему вхождению разделителя на три части (кортеж).Дополнить_нулями(ширина)— дополняет строку нулями слева до заданной ширины.Дополнить_справа(ширина[, заполняющий_символ])— выравнивает строку по левому краю, дополняя её справа.Дополнить_слева(ширина[, заполняющий_символ])— выравнивает строку по правому краю, дополняя её слева.
Строка
Методы:
Формат(*ПА, **ИА)— выполняет форматование строки.Закодовать([кодование[, при_ошибках]])— возвращает байтовое представление строки.
Байты, БайтМассив
Методы:
Раскодовать([кодование[, при_ошибках]])— возвращает строку из байтов.
Список, БайтМассив
Методы:
Добавить(элемент)— добавляет элемент в конец.Очистить()— удаляет все элементы из последовательности.Копия()— возвращает неглубокую копию последовательности.Число_вхождений(элемент)— возвращает количество вхождений элемента.Дополнить(перебираемое)— добавляет элементы из другого объекта в конец.Положение(элемент[, начало[, конец]])— возвращает наименьший индекс элемента.Вставить(позиция, элемент)— вставляет элемент по заданному индексу.Вытащить([позиция])— удаляет и возвращает элемент по индексу (по умолчанию последний).Удалить(элемент)— удаляет первое вхождение элемента.Обратить()— обращает порядок элементов на месте.
Список
Методы:
Упорядочить([ф_сравнения[, обратно = Да|Нет]])— упорядочивает список на месте.
Словарь
Методы:
Очистить()— удаляет все пары (ключ-значение).Копия()— возвращает неглубокую копию словаря.Из_ключей(перебираемое[, значение])— создаёт новый словарь с ключами из перебираемого объекта.Получить(ключ[, по_умолчанию])— возвращает значение для ключа, или по умолчанию.Элементы()— возвращает представление пар (ключ, значение).Ключи()— возвращает представление ключей.Значения()— возвращает представление значений.Вытащить(ключ[, по_умолчанию])— удаляет и возвращает значение для заданного ключа.Вытащить_последнее()— удаляет и возвращает последнюю добавленную пару.Получить_или_добавить(ключ[, по_умолчанию])— возвращает значение, а если его нету, то добавляет его со значением по умолчанию.Обновить([словарь[, **ИА]])— обновляет словарь парами ключ-значение.
Кортеж
Методы:
Положение(элемент[, начало[, конец]])— возвращает наименьший индекс элемента.Число_вхождений(элемент)— возвращает количество вхождений элемента.
Множ, НеизмМнож
Методы:
Не_пересекаются(множество)— проверяет, нету ли общих элементов.Подмножество(множество)— проверяет, является ли множество подмножеством другого.Надмножество(множество)— проверяет, является ли множество надмножеством другого.Объединение(*множества)— возвращает новое множество с элементами из всех множеств.Пересечение(*множества)— возвращает новое множество с общими элементами.Разница(*множества)— возвращает новое множество с элементами, уникальными для исходного.СимметрРазница(множество)— возвращает новое множество с элементами, которые есть только в одном из двух множеств.Копия()— возвращает неглубокую копию множества.
Множ
Методы:
Дополнить(*множества)— добавляет элементы из других множеств в текущее (на месте).Пересечь(*множества)— оставляет только общие элементы (на месте).Вычесть(*множества)— удаляет элементы из текущего множества (на месте).СимметрВычесть(множество)— обновляет множество симметрической разницей (на месте).Добавить(элемент)— добавляет один элемент.Удалить(элемент)— удаляет элемент (вызывает ошибку, если его нету).Убрать(элемент)— удаляет элемент, если он есть (без ошибки).Вытащить()— удаляет и возвращает случайный элемент.Очистить()— удаляет все элементы.
Цел, Вещ, Компл
Свойства:
действ_часть— действительная часть числа.мнимая_часть— мнимая часть числа.
Методы:
Cопряжённое()— возвращает сопряжённое комплексное число.
Цел, Вещ
Методы:
В_дробь()— возвращает пару (числитель, знаменатель).
Цел
Методы:
Длина_в_битах()— возвращает количество битов для представления числа.В_байты(длина, порядок = 'МлСт'|'СтМл', со_знаком = Да|Нет)— возвращает байтовое представление. Порядок:'МлСт'или'СтМл'.Из_байтов(байты, порядок = 'МлСт'|'СтМл', со_знаком = Да|Нет)— создаёт целое число из байтов.
Свойства:
числитель— числитель числа.знаменатель— знаменатель числа.
Вещ
Методы:
Целое()— проверяет, является ли число равно целому.В_шестн()— возвращает шестнадцатеричное строковое представление.Из_шестн(строка)— создаёт число из шестнадцатеричной строки.
Потоки
Методы:
Читать([размер])— чтение данных (байтов или символов).Читать_строку([размер])— чтение одной строки.Писать(данные)— запись данных (строки или байтов).Позиция()— возвращает текущую позицию указателя.Задать_позицию(смещение[, откуда])— изменение позиции указателя файла.Усечь([размер])— обрезание файла до заданного размера.Отделить()— отделяет базовый поток от оболочки.Закрыть()— закрывает файл.
Свойства:
закрыт— Да, если файл закрыт.
Описание
Исполнитель кода Русского Питона.