Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 04.11.2019
Сообщений: 38

Нужно немного доработать код

26.01.2020, 04:25. Показов 1436. Ответов 15

Студворк — интернет-сервис помощи студентам
Задание такое : если слово имеет 4 гласные (русские/английские) буквы, то нужно его вывести соответственно.
Сама проблема в том, что если эти слова разделены не пробелами, а например точками, код перестаёт работать.
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
GLASNIYE = ['а', 'о', 'э', 'и', 'у', 'ы', 'е', 'ё', 'ю', 'я', 'a', 'e', 'i', 'o', 'u', 'y']
znaks = [',', '.', '!', '?', ':']
 
 
def print_long_words(text):
    global GLASNIYE
    global znaks
 
    glasn_in_word = []
    text = text.split()
 
    count = 0
    for i in text:
        for j in i:
            if j.lower() in GLASNIYE:
                glasn_in_word.append(j)
                if len(glasn_in_word) == 4:
                    if i[-1] in znaks:
                        print(i[0:-1].lower())
                    else:
                        print(i.lower())
        glasn_in_word.clear()
 
print_long_words()
Примеры работы : 1)Как и в прочих заданиях этого урока, в вашем решении функция должна быть определена, но не должна вызываться.
Вывод :

заданиях
решении
определена
вызываться (здесь у меня всё норм)
2) """whatever.wherever1solution;solut1onal """

Вывод:
solution (у меня ничего)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.01.2020, 04:25
Ответы с готовыми решениями:

Нужно немного доработать код
Проблема такая: в функции main надо ввести слово два раза, чтобы произошло действие, а в классе SendMail в функции send_mail после двух...

Как немного упростить код?
M = for i in range(10)] for row in M: print(' '.join()) Как в этом моменте if j-i>=0 сделать что бы было только сравнение ,...

Нужно немного доработать код
Разработать программу, которая вводит строку и находит все слова указанной длины n (n вводится). Есть код, нужно сделать вывод...

15
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
26.01.2020, 08:01
Python
1
2
3
4
5
import re
text = input().lower()
words = text.split()
for word in re.findall('[ёуеыаоэяиюaeuioy]'):
    print(word)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.01.2020, 08:32
Hyppoprogramm, это что за дичь?
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
26.01.2020, 08:34
iSmokeJC, это очень красивая и аккуратная дичь

Добавлено через 1 минуту
Батюшки, да что ж я тут понаписал?!
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.01.2020, 08:35
Hyppoprogramm, ну так то да. Если не обращать внимания на то, что она не работает.
2
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
26.01.2020, 08:38
Python
1
2
3
4
5
6
import re
text = input().lower()
words = text.split()
for word in words:
    if re.findall('[ёуеыаоэяиюaeuioy]{1}',word) != []:
        print(word)
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
26.01.2020, 08:54
Для начала предлагаю разбить текст на слова.

Добавлено через 2 минуты
Hyppoprogramm
Python
1
text = 'whatever.wherever1solution;solut1onal'
Добавлено через 11 секунд
Здесь три слова.

Добавлено через 1 минуту
Python
1
print(re.split(r'[\s\.\?,!:;]', text))
Добавлено через 2 минуты
Python
1
print(re.findall(r'\w+', text))
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.01.2020, 09:05
Рыжий Лис, а я тут репу морщу на тему, что цифры - тоже разделители

Python
1
for word in re.split(r"\W|\d", text):
Добавлено через 5 минут
Рыжий Лис, надо регулярку проапгрейдить на длину. Но я, увы, в них таких высот не достиг
Python
1
print(*[re.findall(r'[ёуеыаоэяиюaeuioy]', word) for word in re.split(r"\W|\d", input()) if len(word) == 4])
Добавлено через 46 секунд
Если цифры - не разделители
Python
1
print(*[re.findall(r'[ёуеыаоэяиюaeuioy]', word) for word in re.split(r"\W", input()) if len(word) == 4])
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
26.01.2020, 09:20
Цитата Сообщение от iSmokeJC Посмотреть сообщение
а я тут репу морщу на тему, что цифры - тоже разделители
Блин, точно. 'wherever1solution' - это два слова...
Python
1
print(re.split(r'[\s\d\.\?,!:;]', text))
А регуляркой считать буквы... сложно
Python
1
print(re.findall(r'[ёуеыаоэяиюaeuioy]'.join(r'[qwrtpsdfghjklzxcvbnm]*' for _ in range(5)), text))
0
Особый статус
Эксперт WindowsВирусоборец
8429 / 1708 / 87
Регистрация: 15.04.2011
Сообщений: 5,520
26.01.2020, 11:14
А если попробовать пойти от обратного и застраховаться от любых НЕ букв для разбивки, а затем вывести все, длина чего равна 4?

Python
1
2
3
4
5
import re
 
text = 'whatever.wherever1solution;solut1onal'
 
[print(str_) for str_ in re.split(r'[^A-Za-zА-Яа-я]', text) if len(re.findall(r'[ёуеыаоэяиюaeuioy]', str_)) == 4]
0
1 / 1 / 0
Регистрация: 04.11.2019
Сообщений: 38
27.01.2020, 06:26  [ТС]
Этот пример подошёл только к solution. На русский текст, а также на просто введённые подряд гласные на (eng или rus) языках ничего не выводит.
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
27.01.2020, 08:16
А почему нельзя просто вот так:
Python
1
2
3
4
5
6
7
8
text = input().lower()
count=0
gl="ёуеыаоэяиюaeiou"
for i in gl:
    if i in text:
        count+=1
if count >= 4:
    print(text)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
27.01.2020, 08:28
Цитата Сообщение от Matrix3007 Посмотреть сообщение
почему нельзя просто вот так
А ты скорми своей проге строку по заданию
Как и в прочих заданиях этого урока, в вашем решении функция должна быть определена, но не должна вызываться
и посмотри
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
27.01.2020, 09:08
Цитата Сообщение от Matrix3007 Посмотреть сообщение
А почему нельзя просто вот так:
Можно, но ты написал только для одного слова.

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Для начала предлагаю разбить текст на слова.
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
27.01.2020, 10:39
Тогда так:
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
text = input().lower()
count=0
gl="ёуеыаоэяиюaeiou"
znk=[".", ",", ";", "?", "!", "'", '"', "-"]
for i in range(10):
    znk.append(str(i))
t=text.split(" ")
for i in znk:
    for j in t:
        try:
            if t.index(j)==0:
                t=[]
        except:
            pass
        t+=j.split(i)
        if j=="":
            del t[t.index(j)]
for b in t:
    for c in b:
        if c in gl:
            count+=1
    if count >= 4:
        print(b)
    count=0
Не очень красиво, но работает.

Добавлено через 1 час 5 минут
Менее костыльный вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
text = input().lower()
count=0
gl="ёуеыаоэяиюaeiou"
znk=[".", ",", ";", "?", "!", "'", '"', "-", ":"]
for i in range(10):
    znk.append(str(i))
for i in znk:
    text=text.replace(i, "_")
print(text)
for i in text.split("_"):
    for j in i:
        if j in gl:
            count+=1
    if count >= 4:
        print(i)
    count=0
1
1137 / 685 / 412
Регистрация: 07.11.2015
Сообщений: 1,102
29.01.2020, 07:46
Python
1
print(re.findall(r'(?i)(?:[a-zа-яё]*?[ёуеыаоэяиюaeuioy]){4}[a-zа-яё]*', text))


Python
1
print([m.group(0) for m in re.finditer(r'(?i)(?<![a-zа-яё])(?=((?:[a-zа-яё]*?[ёуеыаоэяиюaeuioy]){4}))\1(?![a-zа-яё]*?[ёуеыаоэяиюaeuioy])[a-zа-яё]*', text)])
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2020, 07:46
Помогаю со студенческими работами здесь

Нужно немного доработать код
#include &lt;iostream&gt; using namespace std; int main() { int n ; cin &gt;&gt; n; int M = (n-1) + (n-2); ...

Работа с структурой в С++ (код есть, нужно немного доработать)
Приветствую. Есть задание: Создать структуру STUDENT, которая имеет поля: 1. NAME. ФИО. 2. GROUP - номер группы. 3. SES -...

Нужно немного доработать программы
Доброго времени суток. Совсем недавно занимаюсь матлабом, поэтому нужна элементарная помощь/доработка по кодам. Ниже приведу свои коды. В...

Нужно немного доработать программу
Задание: #include &lt;stdio.h&gt; #include &lt;malloc.h&gt; #include &lt;stdlib.h&gt; int** func(int **, int *, int *, int **, int, int); int...

Нужно немного доработать класс Особь
Задание заключается в том, чтобы создать класс Особь, в котором реализовать функцию определения ставки в зависимости от должности. Потом...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru