Сергей

Сергей 

Python, JavaScript, Веб-разработка

4subscribers

12posts

goals1
$0 of $28 080 raised
Домик за городом

Как бы выглядели телефонные номера в России, если бы использовали старорусские цифры?


Современные телефонные номера в России состоят из десяти цифр, включая код оператора и сам номер абонента. Однако представьте, что мы до сих пор использовали старорусскую систему чисел, состоящую из буквенных обозначений вместо привычных арабских цифр.
Старорусская система счисления
До введения арабских цифр в России использовались кириллические буквы с числовыми значениями. Например:
1 — А
5 — Е
10 — І
100 — Р
1000 — Ѡ
Числа формировались по аналогии с римскими: комбинацией знаков с соответствующими значениями.
Если бы номера телефонов оформлялись по старорусской системе, они выглядели бы совсем иначе. Например, номер мог бы выглядеть так:
ѲАІ ВЕЅ-ЗѮѲ
Такая запись выглядела бы экзотично, но была бы понятна людям, знакомым с допетровской системой записи чисел.
Этапы создания программы конвертации номеров
Для перевода современного номера в старорусские цифры можно написать простую программу на Python с графическим интерфейсом на Tkinter.
1. Определение соответствий
Сначала создаем словарь, в котором каждому числу от 1 до 1000 соответствует старорусская буква:
old_russian_numerals = {
1: 'А', 2: 'В', 3: 'Г', 4: 'Д', 5: 'Е', 6: 'Ѕ', 7: 'З', 8: 'И', 9: 'Ѳ',
10: 'І', 20: 'К', 30: 'Л', 40: 'М', 50: 'Н', 60: 'Ѯ', 70: 'О', 80: 'П', 90: 'Ч',
100: 'Р', 200: 'С', 300: 'Т', 400: 'У', 500: 'Ф', 600: 'Х', 700: 'Ѱ', 800: 'Ѿ', 900: 'Ц',
1000: 'Ѡ', 2000: '҂', 3000: '҈', 4000: '҉'
}
2. Функция преобразования числа
Программа должна разбирать число на тысячи, сотни, десятки и единицы, а затем собирать строку, используя наш словарь:
def arabic_to_old_russian(number):
    if not (1 <= number <= 9999):
        return "?" 
    result = ""
    thousands = (number // 1000) * 1000
    hundreds = (number % 1000 // 100) * 100
    tens = (number % 100 // 10) * 10
    units = number % 10
    if thousands:
        result += old_russian_numerals.get(thousands, '')
    if hundreds:
        result += old_russian_numerals.get(hundreds, '')
    if tens:
        result += old_russian_numerals.get(tens, '')
    if units:
        result += old_russian_numerals.get(units, '')
    return result
3. Разделение номера телефона на части
Так как телефонный номер состоит из 10 цифр, удобно разбить его на три группы: первые четыре цифры, следующие четыре и последние две:
def convert_phone_number():
    phone_number = entry.get()
    if len(phone_number) != 10 or not phone_number.isdigit():
        messagebox.showerror("Ошибка", "Номер должен содержать 10 цифр")
        return
    part1 = int(phone_number[:4])
    part2 = int(phone_number[4:8])
    part3 = int(phone_number[8:])
    result1 = arabic_to_old_russian(part1)
    result2 = arabic_to_old_russian(part2)
    result3 = arabic_to_old_russian(part3)
    result_label.config(text=f"{result1} {result2} {result3}")
4. Интерфейс Tkinter
Используем библиотеку Tkinter для создания графического окна:
root = tk.Tk()
root.title("Конвертер номера в старорусские цифры")
root.geometry("400x200")
tk.Label(root, text="Введите 10-значный номер телефона:").pack(pady=10)
entry = tk.Entry(root)
entry.pack()
convert_button = tk.Button(root, text="Конвертировать", command=convert_phone_number)
convert_button.pack(pady=10)
result_label = tk.Label(root, text="")
result_label.pack()
root.mainloop()
Итог
Если бы телефонные номера в России писались в старорусской системе, их внешний вид был бы крайне необычным и непривычным для современных пользователей. Однако с помощью приведенной программы можно поиграть с таким форматом и увидеть, как могли бы выглядеть телефонные номера на кириллице в 17 веке.
Subscription levels3

0 Новичок 🐣

$4.3 per month
Идеально для тех, кто только начинает свой путь в программировании. Этот уровень поможет освоить основы и почувствовать уверенность в своих силах.
Что входит:
Доступ к базовым урокам:
Основы Python: переменные, циклы, функции.
Основы JavaScript: синтаксис, DOM, простые скрипты.
Основы HTML и CSS: создание простых веб-страниц.
Примеры кода с комментариями.
Чек-листы и шпаргалки для начинающих.
Ответы на вопросы в общем чате (без индивидуальной поддержки).

1 Продвинутый 🚀

$43 per month
Для тех, кто уже знает основы и хочет углубить свои знания, научиться писать чистый код и работать с современными инструментами.
Продвинутые уроки:
Python: работа с библиотеками (Pandas, NumPy, Django).
JavaScript: асинхронность, работа с API, основы React.
Веб-разработка: адаптивная верстка, оптимизация сайтов.
Практические задания с проверкой и обратной связью.

2 Эксперт 💎

$113 per month

Для тех, кто хочет стать профессионалом, работать над реальными проектами и получать индивидуальную поддержку.
Что входит:
Индивидуальные консультации (2 раза в неделю).
Участие в закрытых мастермайндах с разбором реальных кейсов.
Помощь в оптимизации кода и решении сложных задач.
Доступ к эксклюзивным материалам
Ранний доступ к новым курсам и материалам.
Доступ ко всем курсам автора на stepik
https://stepik.org/users/1015045891/
Go up