Уведомления

Группа в Telegram: @pythonsu

#1 Июль 3, 2022 13:24:08

ntram
Зарегистрирован: 2022-06-19
Сообщения: 75
Репутация: +  3  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке

VANISHED

Отредактировано ntram (Окт. 13, 2022 15:46:30)

Офлайн

#2 Июль 3, 2022 15:00:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9870
Репутация: +  853  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке

Palrom
Зачем добавлять в новый список word, если результат нужен строго фиксированный ?
Если мы искомые слова подаём в качестве аргументов, то мы в любой момент можем сменить отлов “catch me” на отлов “hide her”, например. И вот когда ты сделаешь “hide her”, в конечный результат будет добавляться старое “catch me” и придётся менять этот участок кода ещё. А если у тебя это будет привычкой такой систематической, то тебе после каждого изменения кода в одном месте надо будет лазить по всему коду и менять все связанные куски, и это притом, что их ещё не так просто будет найти сходу. Надо будет их сначала найти все, потом надо будет их поменять. Почему надо будет их искать? Потому что может случиться так, что код тебе нужно будет менять через месяц или через полгода, и к тому времени ты уже не будешь помнить, где и что ты там делал в этом коде несколько месяцев назад. Поэтому надо всё параметризировать, делать общим, а управление этим всем выводить в одну точку, чтобы в ней легко можно было что-то поменять и вся программа при этом сразу правильно поменялась.

Palrom
Почему шаблон применяется только к “ме”?
Если запятую после catch поставить, то сломается код.
Такие не распознает
Whom do you want to catch? Me?
She is going to catch, me too.



Отредактировано py.user.next (Июль 3, 2022 15:13:49)

Офлайн

#3 Июль 3, 2022 15:45:21

Palrom
Зарегистрирован: 2022-04-21
Сообщения: 82
Репутация: +  5  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке

py.user.next
сменить отлов “catch me” на отлов “hide her”, например

Ну тогда наверное как-то так:
  
word = ['some', 'line', 'blablabla', 'you', 'dont', 'need', 'to',
        'catch', 'this', 'line', 'try', 'to', 'catching', 'me',
        'but', 'not', 'me', "I'm", 'here,', 'catch', 'me!!!']
 
def find_pair(wordlist, word1, word2):
    res = []
    for n, i in enumerate(wordlist):
        if n + 1 < len(wordlist):
            first, second = i, wordlist[n+1]
            if first[:len(word1)].lower() == word1 \
                    and second[:len(word2)].lower() == word2:
                res.append(f'{first} {second}')
    return res
 
print(find_pair(word, 'to', 'catch'))
Вывод:
 ['to catch', 'to catching']
  
print(find_pair(word, 'catch', 'me'))
Вывод:
 ['catching me', 'catch me!!!']
  
print(find_pair(word, 'need', 'to'))
Вывод:
 ['need to']

Отредактировано Palrom (Июль 3, 2022 21:32:03)

Офлайн

#4 Июль 4, 2022 21:54:57

VladimirDeg
Зарегистрирован: 2022-06-16
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке

Ребята, простите меня конечно новичка, но из того, что я уже выучил, разве так нельзя?)

word = ['some', 'line', 'blablabla', 'you', 'dont', 'need', 'to', 'catch', 'this', 'line', 'try', 'to', 'catch', 'me', 'but', 'not', 'me', "I'm", 'here,', 'catch', 'me!!!']
s = "".join(word)
if "catchme" in s:
a = s.count("catchme")
l=[]
for i in range(a):
l.append("catch me")
print(a)
print(l)


ntram
И Вы когда-нибудь пробовали решать задачи самостоятельно?
Получается, что могу )

Офлайн

#5 Июль 4, 2022 21:59:17

ntram
Зарегистрирован: 2022-06-19
Сообщения: 75
Репутация: +  3  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке

VANISHED

Отредактировано ntram (Окт. 13, 2022 15:46:37)

Офлайн

#6 Июль 4, 2022 22:01:47

VladimirDeg
Зарегистрирован: 2022-06-16
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке

ntram
твой код съест что то на подобии “catch meal”
почему? поиск же четко по “catchme”

Офлайн

#7 Июль 4, 2022 22:04:08

VladimirDeg
Зарегистрирован: 2022-06-16
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке

Ничо там не съедает. Проверил только что

Офлайн

#8 Июль 4, 2022 22:27:50

ntram
Зарегистрирован: 2022-06-19
Сообщения: 75
Репутация: +  3  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке

VANISHED

Отредактировано ntram (Окт. 13, 2022 15:46:54)

Офлайн

#9 Июль 4, 2022 23:16:25

Palrom
Зарегистрирован: 2022-04-21
Сообщения: 82
Репутация: +  5  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке


VladimirDeg
 if "catchme" in s:
    a = s.count("catchme")
А чего сразу-то не посчитать без in?
 a = s.count("catchime")
VladimirDeg
поиск же четко по “catchme”
Ну так ждали от вас деталей задания, что можно засчитывать, что нельзя. Но судя по всему у вас их и нет. Скрипт ваш подойдёт только для этого конкретного списка, т.е. он бесполезен будет в большинстве случаев.
Но для сдачи наверное пойдёт.
VladimirDeg
Ничо там не съедает.
Съедает. Более того catch!me пропустит.

Офлайн

#10 Июль 5, 2022 00:56:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9870
Репутация: +  853  -
Профиль   Отправить e-mail  

Нахождение подстроки в строке

Palrom
Ну тогда наверное как-то так:
  
...
 
def find_pair(wordlist, word1, word2):
    res = []
    for n, i in enumerate(wordlist):
        if n + 1 < len(wordlist):
            first, second = i, wordlist[n+1]
            if first[:len(word1)].lower() == word1 \
                    and second[:len(word2)].lower() == word2:
                res.append(f'{first} {second}')
    return res
 
...
 

Код
  
print(find_pair(word, 'catch', 'me'))
Вывод:
  
 ['catching me', 'catch me!!!']
Параметризация да (прошла успешно), а сравнение слов неправильно происходит. Если указано catch, например, то никакие catching не должны подходить под это сравнение.



Отредактировано py.user.next (Июль 5, 2022 00:57:25)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version