Seite 1 von 2
String find und Position finden
Verfasst: Sonntag 25. März 2018, 13:09
von andreasp
Guten Tag zusammen,
ich bin neu hier und Anfänger/Beginner in Python und lese gerade das Buch "Einstieg in Python".
Das Buch ist gut, habe aber trotzdem ein kleines Problem.
Auf Seite 104, falls einer das Buch hat, wird find() und rfind() beschrieben, um in einem String die Position von z.B. "ei" zu finden.
Alles kein Problem, erste, letzte oder auch nächste und es wird geschrieben, dass mit einer Schleife alle Positionen von "ei" ausgegeben werden können. Dafür gibt es aber keine weitere Erklärung und ich bekommen es nicht hin. Vermutlich total einfach, aber bin halt Anfänger.
Vielleicht kann es mir einer zeigen oder zumindest den Weg weisen.
Dank im Voraus und schönes WE
Andreas P.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 13:14
von __deets__
Schau dir mal genau an, was find für Argumente bekommt. Beim zweiten wirst du überrascht sein!
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 13:15
von Sirius3
@andreasp: welche Schleifenarten kennst Du? Wie kann man das erste, zweite, n+1 Vorkommen von "ei" in einem String finden?
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 13:21
von andreasp
Sirius3 hat geschrieben:@andreasp: welche Schleifenarten kennst Du? Wie kann man das erste, zweite, n+1 Vorkommen von "ei" in einem String finden?
Hallo,
folge dem Buch und kenne while und for Schleifen.#Beispiel
test = "Das ist ein Beispielsatz"
print("Text:", test)
#Anzahl Suchtexte
such = "ei"
anz = test.count(such)
print("count: Der String", such, "kommt", anz, "Mal vor")
#erste Position des Suchtextes
anfpos = test.find(such)
print("find 1: Zum ersten Mal an Position:", anfpos)
# weiter Position des Suchtextes
nextpos = test.find(such, anfpos + 1)
print("find 2: Ein weiteres Mal an Position:", nextpos)
# letzte Position des Suchtextes
endpos = test.rfind(such)
print(" rfind: Zum letzten Mal an Position:", endpos)
Und jetzt das ganze in einer Schleife, in der alle Positionen nacheinander ausgegeben werden.
VG
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 13:32
von __deets__
Na wenn du schon for und while kennst - welche von den beiden ist denn die geeignetere? Und warum?
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 14:27
von andreasp
__deets__ hat geschrieben:Na wenn du schon for und while kennst - welche von den beiden ist denn die geeignetere? Und warum?
Wie gesagt, bekomme es nicht hin.
Würde sagen, die while Schleife,
solange eine neue Position gefunden wird, Schleife ausführen.
Konnte es aber nicht in die Tat umsetzen.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 14:35
von __deets__
Was ist denn das Kriterium dafür, das die while Schleife nicht mehr weiter laufen soll? Was liefert dir find unter welchen Umständen zurück, und wie kannst du das für dich nutzen?
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 14:52
von Sirius3
@andreasp: was fehlt Dir noch, um das wiederholte Suchen der nächsten Position in eine Schleife umzusetzen?
Schleifen funktionieren immer nach dem selben Prinzip
Code: Alles auswählen
variable = irgendein_startwert
while bedingung_an_variable_wahr:
tu_irgendwas_das_die_variable_ändert
variable = neuer_wert
Was ist die variable? Was ist der Start? Was die Bedingung? Was ist der neue Wert der Variable?
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 15:28
von andreasp
Sirius3 hat geschrieben:@andreasp: was fehlt Dir noch, um das wiederholte Suchen der nächsten Position in eine Schleife umzusetzen?
Schleifen funktionieren immer nach dem selben Prinzip
Code: Alles auswählen
variable = irgendein_startwert
while bedingung_an_variable_wahr:
tu_irgendwas_das_die_variable_ändert
variable = neuer_wert
Was ist die variable? Was ist der Start? Was die Bedingung? Was ist der neue Wert der Variable?
Tut mir leid, soweit bin ich wohl noch nicht. Kann ich nicht.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 15:41
von Sirius3
Die `variable` ist bei Deinem Problem die Position des Suchstrings. Undd ann kann man das Problem auf unterschiedliche Art und Weise angehen. Am Start der Schleife müßte z.B. variable die Position des ersten Vorkommens sein. Innerhalb der Schleife dann das Suchen des nächsten Vorkommens.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 15:49
von andreasp
Aber ich kann es einfach nicht.
Bin Anfänger und auf Seite 105 des Buches und musste bislang nur die vorgegebenen Übungen meistern.
Dann stand dort als Hinweis, man kann es mit einer Schleife machen und mehr nicht.
Das habe ich versucht, kann es aber nicht, schade.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 16:19
von Sirius3
@andreasp: wie viele Schleifen hast Du denn schon programmiert?
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 16:23
von andreasp
Was in dem Buch bislang besprochen wurde.
Da wurden die for und die while Schleifen angesprochen und mit Beispielen gezeigt, dann gab es die eine oder andere Übung dazu.
Die waren auch schlüssig und zu lösen.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 16:24
von kbr
Buch und Übungen sind ja nicht dafür da, dass du alles schon können sollst, sondern es lernen kannst. Auf einer der vorhergehenden 104 Seiten sind bestimmt schon die Schleifen vorgestellt worden. Davon ist die while-Schleife geeignet. Schau dir die noch einmal an. Und dann, was 'find' als Parameter erwartet und als Resultat liefert. Damit solltest du die Aufgabe gelöst bekommen.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 16:32
von Sirius3
Dann versuch mal, mit eigenen Worten zu erklären, wie eine Schleife funktioniert und wie Dein Problem zu lösen ist.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 16:37
von andreasp
-die Schleife sucht nach der 1. Position "ei",
-gibt die Position aus mit print
-sucht nach der nächsten Position von "ei"
-gibt diese aus mit print
- sucht bis zur letzten Position gibt diese aus und bricht dann ab
so eigentlich ganz einfach, bekomme es nur nicht umgesetzt
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 16:41
von Sirius3
Zur Beschreibung fehlt noch die genaue Struktur. 1. der Startwert, 2. die Abbruchbedingung, dann das was in der Schleife passiert und zum Schluss der Sprung zur der Zeile, wo der nächste Schleifendurchgang stattfindet. Versuch dann jeden einzelnen Schritt in Python auszudrücken.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 16:42
von kbr
Nein, eine Schleife sucht nichts. Sondern führt Code wiederholt aus. Bis eine Abbruchbedingung erreicht ist.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 16:52
von andreasp
Habe es doch jetzt schon öfter gesagt, ich kann es nicht in Python ausdrücken, sonst würde ich ja nicht fragen.
Vielleicht einfach mal die Lösung, mit der ich mich dann an einer neuen Aufgabe versuchen kann?
Vielleicht ein blödes Beispiel, aber ich könnte dir Stichworte geben, um einen tödlichen Verkehrsunfall aufzunehmen, deshalb könntest du es aber in der Praxis trotzdem nicht.
ich weiß theoretisch auch, was die Schleife machen muss, kann es aber nicht umsetzen.
Re: String find und Position finden
Verfasst: Sonntag 25. März 2018, 17:14
von __deets__
Wir haben dir diverse Hilfestellungen gegeben, um dein Problem gedanklich so zu durchdringen, dass du es lösen kannst. Wenn wir dir das einfach programmieren, dann lernst du nix. Genausowenig wenn du immer jemand anders bittest, deine Unfallaufnahme zu machen - dann kannst du es auch nicht selbst.
Aber da du offensichtlich nicht willens bist, daran wirklich rumzuknobeln...
Code: Alles auswählen
positions = []
offset = 0
while True:
pos = haystack.find(needle, offset)
if pos == -1:
break
positions.append(pos)
offset = pos + 1