Zmiana wyrazów w python bez .replace()

0

Witam, mam taki kod i chciałbym wiedzieć co muszę zrobić by mi nie podmieniało m na p w słowie ma, nie mam pomysłu jak to zrobić a dopiero się uczę. Proszę o odpowiedź.

def rplstr(string, old, new):
    string_kopia=''
    miejsce=0
    kopia=''
    if type(string) != str or type(old) != str or type(new) != str:
        return False
    else:
        for i in string:
            if miejsce<len(old)-1 and i==old[miejsce]:
                string_kopia=string_kopia+new[miejsce]
                miejsce=miejsce+1
            elif miejsce<len(old)-1 and i!=old[miejsce]:
                string_kopia=string_kopia+i
                miejsce=0
            else:
                string_kopia=string_kopia+i
    return string_kopia
print(rplstr('Ala ma kota, milicja ma Alę', 'milicja', 'policja'))
print(replace('Niepokonany w dwudziestu ośmiu walkach, A pokonany w trzech jedynie walkach.', 'pokonany', 'pobity'))
print(replace('kot pies kot pies kot', 'kot', 'ślimak'))
0

Dzielisz string po spacjach i masz tablice wyrazów. Szukasz swojego wyrazu i podmieniasz go w funkcji ''.join(), która też od razu produkuje ci wynikowy string. Polecam użyć list comprehension

0

Mam coś takiego

def rplstr(string, old, new):
    kopia=''
    zmienna=0
    lista=[]
    if type(string) != str or type(old) != str or type(new) != str:
        return False
    else:
        for i in string:
            if kopia==old:
                lista.append(new)
                kopia=''
            elif i==' ':
                lista.append(kopia)
                kopia=''
            else:
                kopia=kopia+i
        lista.append(kopia)
        kopia=''
        for z in lista:
            kopia=kopia+z+' '
        return kopia
print(rplstr('Ala ma kota, milicja ma Alę', 'milicja', 'policja'))
print(rplstr('Niepokonany w dwudziestu ośmiu walkach, A pokonany w trzech jedynie walkach.', 'pokonany', 'pobity'))
print(rplstr('kot pies kot pies kot', 'kot', 'ślimak'))```

Ala ma kota, policja ma Alę 
Niepokonany w dwudziestu ośmiu walkach, A pobity w trzech jedynie walkach.  #Niepokonany ma zmieniać na niepobity
ślimak pies ślimak pies kot  #ostatni wyraz kot nie zmienia mi na ślimak
1
def rplstr(string, old, new):
    return new.join(string.split(old))
0
enedil napisał(a):
def rplstr(string, old, new):
    return new.join(string.split(old))

Dziękuję

1 użytkowników online, w tym zalogowanych: 0, gości: 1