Найти - Пользователи
Полная версия: Проверка поиска подстроки в строке.
Начало » Центр помощи » Проверка поиска подстроки в строке.
1
RatiborMur
Доброго времени суток.
Есть код:
 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() является локальной и после ее выполнения сборщик мусора терет С и в глобале С_сампле сравнивается с С пустым, из-за этого тест и не проходит. Как добиться рабочей проверки? Спасибо.
rami
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")
RatiborMur
Спасибо! Понял свою ошибку… функция возвращает значение, но я на него не создаю ссылку, по-тому и терется итог.
 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")
Спасибо еще раз большое! Вопрос закрыт.
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