Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 5, 2018 17:36:05

RatiborMur
Зарегистрирован: 2018-04-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка поиска подстроки в строке.

Доброго времени суток.
Есть код:

 def equal(A,B):
    if len(A)==len(B):
        for i in range(len(A)):
            if A[i]!=B[i]:
                return False
        return True
def search_substring(s,sub):
    C = [0] * len(s)
    for i in range(0,len(s)-len(sub)):
        if equal(s[i:i+len(sub)],sub):
            print(i)
            C[i]+=1
    print(C)
    return C
def test(C,search_substring):
    s="asdasdafasdasdaf"
    sub="sda"
    C_sample=[0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0]
    search_substring(s,sub)
    print("Ok" if C==C_sample else "Fail")
    
C=[]
test(C,search_substring)

search_substring() возвращает значение None. Я понимаю, что С в search_substring() является локальной и после ее выполнения сборщик мусора терет С и в глобале С_сампле сравнивается с С пустым, из-за этого тест и не проходит. Как добиться рабочей проверки? Спасибо.

Отредактировано RatiborMur (Сен. 5, 2018 17:39:54)

Офлайн

#2 Сен. 5, 2018 18:56:26

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Проверка поиска подстроки в строке.

RatiborMur
search_substring() возвращает значение None.
Почему None? Смотрите:
 def test(C,search_substring):
    s="asdasdafasdasdaf"
    sub="sda"
    C_sample=[0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0]
    result=search_substring(s,sub)
    print('result = {}'.format(result))
    print("Ok" if result==C_sample else "Fail")

Офлайн

#3 Сен. 5, 2018 19:28:56

RatiborMur
Зарегистрирован: 2018-04-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка поиска подстроки в строке.

Спасибо! Понял свою ошибку… функция возвращает значение, но я на него не создаю ссылку, по-тому и терется итог.

 def test(C,search_substring):
    s="asdasdafasdasdaf"
    sub="sda"
    C_sample=[0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0]
    C=search_substring(s,sub)
    print("Ok" if C==C_sample else "Fail")
Спасибо еще раз большое! Вопрос закрыт.

Отредактировано RatiborMur (Сен. 5, 2018 19:31:18)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version