Wie kann ich in Python die Zeile eines Wortes in einem Text ausgeben?

1 Antwort

Zuerst einmal den Code richtig einzurücken, wäre ein sinnvoller Schritt. Denn das ist die aktuell angemerkte Fehlerursache (IndentationError).

Mit jedem neuen Code-Block wird der dazugehörige Quellcode um exakt vier Leerzeichen nach rechts eingerückt. Nach Beendigung des Blocks geht es wieder um vier Leerzeichen nach links.

Beispiel:

def add(numberOne, numberTwo):
  result = numberOne + numberTwo
  return result

sum = add(1, 3)

In folgenden Snippets werde ich der Bequemlichkeit halber ein Tab-Zeichen verwenden. Die solltest du bei dir wieder gegen die vier Leerzeichen eintauschen.

Das ist aber nicht der einzige Fehler.

1) Als Delimiter für den String wilhelm_tell solltest du einzelne Anführungszeichen verwenden. Drei Anführungszeichen hingegen dienen als Delimiter für mehrzeilige Kommentare.

wilhelm_tell = "\
  Es lächelt der See, er ladet zum Bade,\
  Der Knabe schlief ein am grünen Gestade,\
  # etc. ...
  "

Der Backslash am Ende jeder Zeile gibt dem Python Interpreter zu verstehen, dass es sich um einen mehrzeiligen String handelt.

Ich würde der Variable übrigens auch einen anderen Namen geben, der ihren Inhalt besser verdeutlicht. Z.B. wilhelm_tell_strophe. Auch bei den anderen Variablen sowie deiner Funktion würde ich empfehlen, nochmal zu schauen, ob sich nicht passendere Namen finden lassen.

2) Du gibst mit line_number eine Liste zurück und versuchst folgend, diese mit einer Zahl zu vergleichen. Das klappt natürlich nicht. Deine Funktion sollte eine Zahl (die Zeilennummer) zurückgeben.

3) Die Strophe sollte als Liste vorliegen, wobei jeder Eintrag einer Zeile entspricht. Dann kannst du den Index/die Zeilenummer einfacher ermitteln.

Entweder, du legst von Anfang an eine String-Liste an:

wilhelm_tell = [
  "Es lächelt der See, er ladet zum Bade,",
  "Der Knabe schlief ein am grünen Gestade,",
  # ...
]

oder du trennst den String anhand von Trennzeichen auf. Man könnte bspw. konkrete Zeilenumbrüche (\n) setzen und dann den String mit splitlines zerlegen.

wilhelm_tell = "\
  Es lächelt der See, er ladet zum Bade,\n\
  Der Knabe schlief ein am grünen Gestade,\n\
  # etc. ...
  "

4) Um Wörter in der Liste zu suchen, müsstest du über diese iterieren und, wie es der Tipp für die Aufgabe schon rät, mit dem in-Operator prüfen, ob sich das gesuchte Wort in einer der Einträge befindet. Wenn nichts gefunden wird, sollte ein negativer Wert zurückgegeben werden.

Falls du nicht weißt, wie man eine Schleife mit Zähler laufen lassen kann, hier ein kurzes Beispiel:

for index, letter in enumerate("Hello"):
  print(index, letter)

Den Startwert für index kann man mit der enumerate-Funktion festlegen. Dafür gibt es den benannten Parameter start.

5) Gleiche noch einmal deine Rückgaben in der Konsole mit den Anforderungen der Aufgabenstellung ab.