jozzyi1
Конечно халява .
Никто не хочет делать.
Так что я сделаю
jozzyi1
Выделить в строке-предложении s все слова, разделенные символами-
разделителями «_.,;:\n\t!?». Обработать выделенные слова в соответствии с
заданием.
Подсчитать количество слов, содержащих хотя бы одну согласную
латинскую букву и хотя бы одну цифру. Напечатать все слова,
состоящие только из четных цифр, и подсчитать сумму этих цифр.
>>> import re
>>>
>>> def get_words(text):
... sep_list = r'[_.,;:\n\t!?]'
... out = list(filter(None, re.split(sep_list, text)))
... return out
...
>>> def count_words_letters_digits(words):
... letters = set('bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ')
... digits = set('0123456789')
... out = 0
... for w in words:
... word_chars = set(w)
... out += bool((word_chars & letters) and (word_chars & digits))
... return out
...
>>> def print_words_digits_digsum(words):
... digits = set('02468')
... out = 0
... for w in words:
... word_chars = set(w)
... if word_chars - digits == set():
... print(w)
... out += sum(map(int, w))
... return out
...
>>> def f(text):
... words = get_words(text)
... counted_words = count_words_letters_digits(words)
... print('counted words', counted_words)
... counted_digits_sum = print_words_digits_digsum(words)
... print('counted digits sum', counted_digits_sum)
...
>>> f('Time56Min15 946! Hello81! 23f_ floor9; lets66 man8right:')
counted words 5
counted digits sum 0
>>> f('abcd,abcd123,444,456,222,345')
counted words 1
444
222
counted digits sum 18
>>>
После этого можешь оптимизировать. Если у тебя получится это на regexp'ы перевести - отлично! А может и не получится.

Всякое может быть. Поэтому твой подход к этому сразу на regexp'ах может сыграть с тобой злую шутку. Ты можешь так проработать потом неделю (ну, в каком-нибудь реальном проекте, где время что-то значит), а в оконцовке окажется, что regexp'ы тут не подходят.