Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/88: Рейтинг темы: голосов - 88, средняя оценка - 4.60
9 / 8 / 2
Регистрация: 08.12.2019
Сообщений: 102

Деление слова по слогам

04.02.2020, 19:48. Показов 17794. Ответов 5

Студворк — интернет-сервис помощи студентам
Добрый ночи!
Помогите написать код, который бы делил слово на слоги. Чтобы каждый слог являлся бы вложенным списком,
а само слово внешним. Много разных способов перепробовал, один хуже другого, мыслей уже совсем нет.

Конечный ответ, чтобы выглядел так:
Python
1
2
3
4
a = 'Отвёртка мастера'
slog = []
...
print (slog) # [[отвёрт],[ка]], [[мас],[те],[ра]]
Пытался делать найдя количество гласных букв, в слове но такой подход не дал
должного результата при решении задачи.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2020, 19:48
Ответы с готовыми решениями:

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

Деление слов по слогам
Нужно составить программу,которая будет делить по слогам

Разбить слова по слогам
Добрый день, есть такое задание. Дана фраза русского языка. Написать программу, которая разбивает каждое слово фразы на слоги. ...

5
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
04.02.2020, 21:31
Лучший ответ Сообщение было отмечено abu_chechen как решение

Решение

По закону восходящей звучности:
о-твер-тка
ма-сте-ра

Цитата Сообщение от abu_chechen Посмотреть сообщение
код, который бы делил слово на слоги.
Тебе зачем? Для правильной реализации нужен код строк эдак на 500, разруливающий деление по правилам закона восходящей звучности.

P.S. Школьное деление по слогам не совсем верное.

Цитата Сообщение от abu_chechen Посмотреть сообщение
Много разных способов перепробовал,
Загугли "Основной закон построения слога в русском языке."

P.S. На гитхабе есть примеры реализаций.
https://github.com/Koziev/rusy... usyllab.py
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
04.02.2020, 21:40
Я бы попробовал такой алгоритм. Последовательно рассматриваем гласные буквы в слове. Если две гласные идут друг за другом, то разбиваем их знаком переноса, если между ними присутствуют согласные (полугласные), то знак переноса ставим перед последней из них. Потом проверяем слово, если в его конце или в начале оказался однобуквенный слог, то присоединяем его к соседнему слогу, удаляя знак переноса. Можно усовершенствовать, если завести словарь односложных приставок, которые нужно переносить целиком, не разделяя знаком переноса. Наверняка есть еще много тонкостей, можно поискать описания реальных алгоритмов в интернете.
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
04.02.2020, 22:07
Я так понимаю, что ТС нужно нечто похожее:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Функция возвращает количество слогов до каждого пробела в переданной строчке
def get_syllables_before_spaces(line):
    line.rstrip()
    vowel_list = ('А', 'Е', 'Ё', 'И', 'О', 'У', 'Ы', 'Э', 'Ю', 'Я')
    words = list(line.split(' '))
 
    k = 0  # счётчик гласных в слове
    k_syllables = list()  # количество слогов в каждом слове строки
    # Проходим по словам в строке
    for word in words:
        # считаем количество гласных в слове
        for symbol in word:
            if vowel_list.__contains__(symbol.upper()):
                k += 1
        # Добавляем полученное число в список
        k_syllables.append(k)
        k = 0
 
    # Создаём список, содержащий количество слогов до каждого пробела
    l = []
    l.append(k_syllables[0])
    for i in range(1, len(words) - 1):
        sum = 0
        for j in range(i + 1):
            sum += k_syllables[j]
        l.append(sum)
 
    return l
 
 
# Открываем файл
input_file = open('input.txt')
 
# Создаём список из строк стихотворения, содержащегося в файле
rows = input_file.readlines()
 
# Создаём список, каждый элемент которого - список, с количеством слогов до каждого пробела
syllable_list = []
 
# Заполняем созданный список
for row in rows:
    if row[0] != '\n':
        syllable_list.append(get_syllables_before_spaces(row))
 
# for i in syllable_list:
#    print(i)
 
s = set()
# Проходим по списку и смотрим, в каких строках встречается одинаковое число слогов до пробела
for i in range(len(syllable_list)):
    for j in range(len(syllable_list[i])):
        for k in syllable_list[i + 1:]:
            assert isinstance(k, list)
            if k.__contains__(syllable_list[i][j]):
                s.add(syllable_list[i][j])
 
print(s)
0
9 / 8 / 2
Регистрация: 08.12.2019
Сообщений: 102
05.02.2020, 10:20  [ТС]
Garry Galler, посмотрел этот код и он работает, но только для одного слова, когда уже вводишь предложение, то корректно отображает лишь последнее слово.
Хотел чтобы каждое слово было вложенным списком, а само предложение внешним, для более как по мне понятной обработке. Пытался переделать сам, но не получилось.
Миниатюры
Деление слова по слогам   Деление слова по слогам  
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.02.2020, 13:12
Цитата Сообщение от abu_chechen Посмотреть сообщение
он работает, но только для одного слова
Все норм там. Там же ясно написано, что split_words принимает список слов, а вовсе не одно слово.
Python
1
2
3
4
5
6
7
8
9
10
>>> import rusyllab
>>> rusyllab.split_words("Однажды в студеную зимнюю пору".split())
['Од', 'наж', 'ды', ' ', 'в', ' ', 'сту', 'де', 'ну', 'ю', ' ', 'зим', 'ню', 'ю', ' ', 'по', 'ру']
>>>
>>> rusyllab.split_words(["Однажды"])
['Од', 'наж', 'ды']
>>> 
>>> rusyllab.split_words("При написании предложения разбиение срабатывает корректно".split())
['При', ' ', 'на', 'пи', 'са', 'ни', 'и', ' ', 'пред', 'ло', 'же', 'ни', 'я', ' ', 'раз', 'би', 'е', 'ни', 'е', ' ', 'сра', 'ба', 'ты', 'ва', 'ет', ' ', 'кор', 'рект', 'но']
>>>
P.S. Лишние однопробельные строки несложно пофиксить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2020, 13:12
Помогаю со студенческими работами здесь

Программа, что делит слова по слогам
Ребята, учу программирование не долго, потому пока не очень соображаю. Мне дали задание на самостоятельную работу - нужно создать...

Задан текст. Распечатать все слова текста разделяя дефисами по слогам
Приветствую вас, форумчане. Задан текст. Распечатать все слова текста разделяя дефисами по слогам. Есть лабараторка, в ней берется...

Деление строки на слова
Нужно, чтобы когда пользователь вводил что-то типа "integer a = 1", создавалась переменная a со значением 1. Так вот как сделать такое...

Деление строки на слова в файле
Здравствуйте! Надо разделить строки на слова и каждое слово поместить в массив слов. Когда читаю 1-ю строку файла, всё хорошо, но когда...

Деление строки и вывод необходимого слова
Здравствуйте, уважаемые формучане. Я задался вопросом, а как же мне поделить строку и вывести необходимое слово. Допустим есть строка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru