Funkcja wypisująca indeks znaku liczonego od wskazanego jej

0

Hej, uczę się Pythona z książki Downey A. "Myśl w języku Python!..." i mam problem z jednym zadaniem.
Kod wygląda następująco:

def find(word, letter) :
     index = 0
     while index < len(word) :
          if word[index] == letter:
               return index
          index = index + 1
return -1

Zadanie polega na tym, aby zmodyfikować funkcję find, aby miała trzeci parametr, czyli indeks w łańcuchu parametru word identyfikujący znak, od którego powinno zostać rozpoczęte wyszukiwanie. Próbowałem, kombinowałem, ale coś nadal nie idzie jak powinno. Jeśli ktoś będzie w stanie pomóc w rozwiązaniu, to z góry bardzo dziękuję.

0

Dodanie indeksu jest trywialne, wydaje mi się, że nie o to chodzi, na pewno dobrze Zrozumiałeś zadanie?

def find(word, letter, index):
     while index < len(word):
          if word[index] == letter:
               return index
          index += 1
     return -1

Ewentualnie można zrobić z indeksu parametr domyślny równy zeru, wtedy gdy się go nie poda, wyszukiwanie zacznie się od początku:

def find(word, letter, index=0):
     while index < len(word):
          if word[index] == letter:
               return index
          index += 1
     return -1
0

Z treści zadania, zrozumiałem, że trzeci parametr ma określać od którego miejsca będzie liczona pozycja wprowadzonego znaku. Robiłem wcześniej w taki sposób, jaki napisałeś, ale nadal działa tak samo i zamiast liczyć pozycję znaku od wyznaczonego miejsca, liczy jego pozycję od początku wyrazu.

2

W pierwszym poście Napisałeś: "od którego powinno zostać rozpoczęte wyszukiwanie", ale Nie dodałeś, że również od tego elementu należy liczyć pozycję, to też trywialne: trzeba, na początku funkcji, zachować podany indeks, a potem go odjąć:

def find(word, letter, index=0):
	par = index
	while index < len(word):
		if word[index] == letter:
			return index - par
		index += 1
	return -1
0

Masz rację, mało precyzyjnie objaśniłem problem. Już rozumiem, teraz wydaje się to rzeczywiście proste. Ogromnie dziękuję za pomoc

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