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.
String find und Position finden
Hallo,Sirius3 hat geschrieben:@andreasp: welche Schleifenarten kennst Du? Wie kann man das erste, zweite, n+1 Vorkommen von "ei" in einem String finden?
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
Wie gesagt, bekomme es nicht hin.__deets__ hat geschrieben:Na wenn du schon for und while kennst - welche von den beiden ist denn die geeignetere? Und warum?
Würde sagen, die while Schleife,
solange eine neue Position gefunden wird, Schleife ausführen.
Konnte es aber nicht in die Tat umsetzen.
@andreasp: was fehlt Dir noch, um das wiederholte Suchen der nächsten Position in eine Schleife umzusetzen?
Schleifen funktionieren immer nach dem selben Prinzip
Was ist die variable? Was ist der Start? Was die Bedingung? Was ist der neue Wert der Variable?
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
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 PrinzipWas ist die variable? Was ist der Start? Was die Bedingung? Was ist der neue Wert der Variable?Code: Alles auswählen
variable = irgendein_startwert while bedingung_an_variable_wahr: tu_irgendwas_das_die_variable_ändert variable = neuer_wert
Tut mir leid, soweit bin ich wohl noch nicht. Kann ich nicht.
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.
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.
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.
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.
-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
-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
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.
Zuletzt geändert von Sirius3 am Sonntag 25. März 2018, 16:45, insgesamt 1-mal geändert.
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.
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.
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...
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