Twój algorytm działa tak jak wspomniał wyżej kolega, ja jedynie dodam iż kod z komentarzami byś zrozumiał jak po kolei wykonuje się ten kod:
# Funkcja "not_poor(str1)"
# Przyjmuje 'string'a
def not_poor(str1):
# Definiowanie dwóch wartości wewnętrznych
# Które otrzumują 'string' z funkcji
# Przy wykorzystaniu metody '.find(STR)'
# Szukana określona z góry wewnątrz funkcji wartości
# W tym wypadku snot -> 'not' i spoor -> 'poor'
snot = str1.find('not')
spoor = str1.find('poor')
# Blok warunkowy
# 'spoor' jeśli większy od 'snot' (TRUE) - otrzymujesz wartość TRUE bo jest większy do 'not'
# i 'snot' większy od 0 - musi być większy od 0 - TRUE i 'spoor' większy od 0 też musi być TRUE
# Wszystkie warunki spełnione
if spoor > snot and snot>0 and spoor>0:
# Zmienną 'str1' nadpisujesz i używasz metody '.replace()' która przyjmuje 2 argumenty (w zasadzie 3)
# 1 argument - szukany ciąg , w tym wypadku 'string' i dwie wartości 'snot' i 'spoor'
# 2 arument - podajemy 'string' - 'good' który ma zastąpić 1 arument
str1 = str1.replace(str1[snot:(spoor+4)], 'that good')
# Zwaracant 'str1' w funkcji
return str1
else:
# Jeśli warunek jest FALSE zwracamy 'str1' bez ww. czynności.
return str1
#Printujesz funkcję z podanymi zdaniami (string) i sprawdzasz czydziała
print(not_poor('The lyrics is not that poor!'))
print(not_poor('The lyrics is poor!'))
Zmodyfikuj (spróboj) Twój algorytm według wskazówek ww. przez kolegę ,a jeśli nie wpadniesz na pomysł jak to zrobić to napisz,.