Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2022, 00:19   #1
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию Обработка предложения с использованием множества. Python

Тут было закрыто сообщение об обработке предложения с использованием множества:
Tim Dyson
Цитата:
Дана непустая последовательность слов из строчных русских букв; между соседними словами – запятая, за последним словом – точка. Напечатать в алфавитном порядке множества:
a) Все гласные буквы, которые входят в каждое слово;
b) все звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в одно четное слово.
Задача меня заинтересовала и вот моё решение:
Код:
# Кириллица
GlasnieUp = 'АЕЁИОУЫЭЮЯ'
ZvonkieSoglasnieUp = 'БВГДЖЗЙЛМНР'

# Тестовая строка
stroka1 = 'В, качестве, элементов, этого, набора, данных, могут, выступать, любые, неизменяемые, объекты,такие, как, числа, символы, строки.'
l1 = stroka1.split(', ')  # Получаем список слов из предложения без пробелов
print(l1)                 # Контроль

# Все гласные буквы, которые входят в каждое слово
Glasnie = set(GlasnieUp)   # Множество заглавных гласных
glasn = set()
for word in l1:
    m = set(word.upper())        # Множество заглавных в слове
    c = m.intersection(Glasnie)  # Множество заглавных гласных в слове
    glasn.update(c)              # Все заглавные гласные в предложении
print(glasn)

# Все звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в одно четное слово
# чётное - even / нечётное - odd
ZvonkieSoglasnie = set(ZvonkieSoglasnieUp) # Множество звонких согласных
evenZvonkieSoglasnie = set()               # Звонкие согласные в чётных словах
oddZvonkieSoglasnie = set()                # Звонкие согласные в нечётных словах
for i in range(len(l1)):                   # Для каждого слова из предложения
    m = set(l1[i].upper())                 # множество заглавных букв в слове
    if i%2:                                # нечётные слова
        c = m.intersection(ZvonkieSoglasnie) # Звонкие согласные в слове
        oddZvonkieSoglasnie.update(c)        # Все звонкие согласные в предложении
    else:   # чётные слова
        c = m.intersection(ZvonkieSoglasnie) # Звонкие согласные в слове
        evenZvonkieSoglasnie.update(c)       # Все звонкие согласные в предложении

c = evenZvonkieSoglasnie.difference(oddZvonkieSoglasnie) # Звонкие согласные, которые входят в нечётные слова и
                                                         # не входят в чётные
print(evenZvonkieSoglasnie, ' -- ', oddZvonkieSoglasnie) # Контроль
print(c)
PS: А вот как это сделать на C++?
Думаю, что очень озабоченный найдёт решение.

PSS: Чуть было не забыл: В Python счёт ведётся с нуля, так что первое (нечётное) слово и следующие нечётные - становятся чётными.
Так что результат получается для счёта с 1 (единицы).
Возможно что-то не так понял, но написанного достаточно для другого варианта решения.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка типа множества Volodim Помощь студентам 0 19.05.2015 22:50
Ввод и обработка текста. Найти одинаковые предложения [Turbo Pascal, QBasic] Trampoline Помощь студентам 15 20.04.2013 16:32
Составление и отладка программ с использованием множества ВалерОК Помощь студентам 2 03.04.2012 00:09
Составление и отладка программ с использованием множества в TP Евгений1313 Помощь студентам 9 25.03.2009 16:35