project_python.3.2/lesson.10.py

97 lines
3.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

''' ****** Задание 10 из 20 *********
* Для международных документов русский текст преобразуется с использованием латинского алфавита.
ГОСТ Р 52535.1-2006 задаёт правила транслитерации идентификационных карт.
Ниже приведена таблица замен:
А — A
Б — B
В — V
Г — G
Д — D
Е — E
Ё — E
Ж — ZH
З — Z
И — I
Й — I
К — K
Л — L
М — M
Н — N
О — O
П — P
Р — R
С — S
Т — T
У — U
Ф — F
Х — KH
Ц — TC
Ч — CH
Ш — SH
Щ — SHCH
Ы — Y
Э — E
Ю — IU
Я — IA
Давайте транслитерируем русский текст.
Букву «ё» транслитерируйте как «e», «й» как «и», а «ъ» и «ь» (и их заглавные версии «Ъ» и «Ь») должны исчезнуть из текста. Строчные буквы заменяются на строчные, заглавные заменяются на заглавные. Если заглавная буква превращается при транслитерации в несколько букв, то заглавной должна остаться только первая из них (например, «Ц» → «Tc»). Все некириллические символы должны остаться на месте.
Формат ввода
В единственной строке задан русский текст. Текст может состоять из любых символов. Вам необходимо транслитерировать только русские буквы, а остальные оставить на месте. Гарантируется, что нет слов, состоящих только из букв «ъ» и «ь».
Формат вывода
Выведите одну строку — транслитерированный текст.
Подсказка
Данная задача не сильно отличается от G. Азбука Морзе.
Однако обратите внимание на работу с заглавными буквами (наглядно отражено во втором примере).
Пример 1
Ввод
Привет, мир!
Вывод
Privet, mir!
'''
if __name__ == "__main__":
TRANSLITERATION_MAP = {
'А': 'A', 'Б': 'B', 'В': 'V',
'Г': 'G', 'Д': 'D', 'Е': 'E',
'Ё': 'E', 'Ж': 'ZH', 'З': 'Z',
'И': 'I', 'Й': 'I', 'К': 'K',
'Л': 'L', 'М': 'M', 'Н': 'N',
'О': 'O', 'П': 'P', 'Р': 'R',
'С': 'S', 'Т': 'T', 'У': 'U',
'Ф': 'F', 'Х': 'KH', 'Ц': 'TC',
'Ч': 'CH', 'Ш': 'SH', 'Щ': 'SHCH',
'Ы': 'Y', 'Э': 'E', 'Ю': 'IU',
'Я': 'IA', 'Ь': '', 'Ъ': '',
}
input_text = input()
for char in input_text:
upper_char = char.upper()
if upper_char in TRANSLITERATION_MAP:
transliterated = TRANSLITERATION_MAP[upper_char]
if char.isupper():
print(transliterated.capitalize(), end='')
else:
print(transliterated.lower(), end='')
else:
print(char, end='')