@Daibend
Начинающий пайтон дэв.

Как задать цикл, чтобы он сравнивал только последовательные элементы?

Добрый день, эксперты!

На повестке дня мой, вероятно, для вас несложный вопрос. Пожалуйста, объясните мне как решается такая дилема в программировании, буду очень вам признателен.

В чём суть: есть строка, в ней может быть n-ное количество слов. Моя задача вывести true если есть три последовательных слова (именно друг за другом, через пробел), а если нет - false. Я смог реализовать программу, но, проблема в том, что реализация подсчитывает слова не друг за другом, а вообще. В таком случае, если в строке есть хотя бы 3 слова (даже не в порядке последовательности) - выводится True. Как это исправить? Вот ссылочка на pastebin: https://pastebin.com/Erk61PEK
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
longclaps
@longclaps
Дилема, Даня - это вопрос, поставленый в форме "или - или".
import re

def checking(s: str) -> bool:
    return bool(re.match(r'^(.+ )*[a-z]+ [a-z]+ [a-z]+( .+)*', s, flags=re.I))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
MinTnt
@MinTnt
def checking(s): return [any([not(len([x for x in b[i:i+3] if x])-3) for i in range(len(b)-2)]) for b in [list(map(str.isalpha, s.split()))]][0]

print(checking('Test Test Test')) #True
print(checking('Test Test Test 123 123')) #True
print(checking('Test 125s Test 123 123')) #False
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы