Funkcja wypisująca indeks znaku liczonego od wskazanego jej

Odpowiedz Nowy wątek
2019-09-09 22:04
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ę.

Pozostało 580 znaków

2019-09-09 22:21
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

Pozostało 580 znaków

2019-09-09 22:39
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.

Pozostało 580 znaków

2019-09-09 22:49

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

Pozostało 580 znaków

2019-09-09 23:12
0

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

Pokaż pozostałe 3 komentarze
Nie w tym rzecz, czy to kurs dla początkujących, bardziej początkujących, czy jeszcze bardziej początkujących. Odebrałem Twoją uwagę jako kpiącą, na zasadzie "czego innego się spodziewałeś, świeżaku", stąd moja reakcja. Jeśli źle to odebrałem, to sorry - BornStubborn 2019-09-10 11:58
Coś takiego jak "bardziej początkujący" - nie istnieje, brzmi prawie jak - "bardziej nie w ciąży", "jeszcze bardziej nie w ciąży" - _13th_Dragon 2019-09-10 17:11
Serio, masz zamiar czepiać się tego określenia? Może powiedz po prostu szczerze, czy błędnie odebrałem Twój komentarz jako złośliwy i to wyjaśnimy, zamiast bezsensownie wymieniać się nic nie wnoszącymi uwagami? ;) Nie przyszedłem tu się z nikim szarpać, tylko się czegoś nauczyć i szkoda mi na takie rzeczy czasu oraz energii - BornStubborn 2019-09-10 19:23
Więc ucz się, między innymi poprawnych określeń. Określenia typu: "bardziej optymalny", "bardziej początkujący", "bardziej w ciąży" - naprawdę rażą ... - _13th_Dragon 2019-09-10 19:33
No cóż, przyjąłem do wiadomości. Liczyłem tu na dopuszczalność form potocznych wypowiedzi i swobodę na takim poziomie, by być z łatwością rozumianym. W końcu nie jest to forum kierowane do polonistów. Nie spodziewałem się grammar nazi - BornStubborn 2019-09-10 21:22

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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