Znajdowanie znaku występującego w jednym stringu - w drugim

0

Napisz funkcję first_common_character(s1, s2), która dla napisów s1 i s2 zwraca pierwszy znak s1, który pojawia się w s2. Jeśli taki znak nie istnieje, funkcjama zwrócić None.

Poniżej przesyłam mój niedziałający kod - funkcja nie działa w żadnym przypadku - ani gdy występuje wspólny znak, ani gdy go nie ma. TypeError: find() takes no keyword arguments.
Podejrzewam, że źle używam funkcji find(), jednak nie wiem dlaczego.

def first_common_character(s1,s2):
    i = 0
    dlugosc = len(s2)
    for i in range(0, dlugosc+1):
        znak = s1[i]
        x = s2.find(znak, beg=0, end=dlugosc)
        if x != -1:
            return x
        else: i += 1
        continue
    return None


print("Podaj pierwszy napis:")
s1 = input()

print("Podaj drugi napis:")
s2 = input()

print(first_common_character(s1, s2))

2

Tak, źle używasz find — tak jak Ci napisał interpreter, find nie ma żadnych nazwanych argumentów, więc i w szczególności begend, których Ty próbujesz tutaj użyć: jej sygnatura wygląda tak: find(sub[, start[, end]]). Czyli, w szczególności, samo find.znak Ci wystarczy, bo nie potrzebujesz slice’ować przeszukiwanego stringa, tylko szukasz w całości.

Po drugie, tak naprawdę nie interesuje Cię pozycja, na której znajdziesz szukany znak, więc nie ma powodu używać find — zwykłe if znak in s2 będzie szybsze.

I wreszcie po trzecie, kod zaznacza się trzykrotnym grave’em (znak powyżej taba, na klawiszu z tyldą), nie apostrofem prostym (jak Ty to zrobiłeś).

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