Найти - Пользователи
Полная версия: Подсчитать количество слов, содержащих хотя бы одну согласную латинскую букву и хотя бы одну цифру. Напечатать все слова, состоящие только из четных цифр, и подсчитать сумму этих цифр.
Начало » Центр помощи » Подсчитать количество слов, содержащих хотя бы одну согласную латинскую букву и хотя бы одну цифру. Напечатать все слова, состоящие только из четных цифр, и подсчитать сумму этих цифр.
1
jozzyi1
Выделить в строке-предложении s все слова, разделенные символами-
разделителями «_.,;:\n\t!?». Обработать выделенные слова в соответствии с
заданием.

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


Пример входных данных: Time56Min15 946! Hello81! 23f_ floor9; lets66 man8right:
PEHDOM
jozzyi1 а в чем проблема то?
marvellik
PEHDOM халява прийди!!! не приходит. вот в чем проблема
jozzyi1
Конечно халява .
Помогите доправить код.

import re

s = ‘Time56Min15 946! Hello81! 23f_ floor9; lets66 man8right’
st = re.split(r"", s)

lst = )(?=.*)", word)]
print(*lst)
print(len(lst))

ss = [re.findall(r'\d+', word) for word in lst if not re.search(r'', word)]
print(sum(map(int, sum(ss, ))))
py.user.next
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'ы тут не подходят.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB