Das mit der Unfallaufnahme hast du wohl falsch verstanden, das kann ich und wenn ich dir Stichworte gebe, kannst du es trotzdem nicht alleine, nur das wollte ich damit sagen.
Die Hälfte der Begriffe in deinem Programm lese ich heute das erste Mal und sind somit in dem Buch noch gar nicht aufgetaucht,
wie hätte ich das schaffen sollen?
Aber trotzdem danke für die Mühe und werde nun versuchen, deine Lösung anzuwenden.
String find und Position finden
@andreasp: beim Programmieren muß man lernen, wie ein Computer denkt. Das ist erstmal unabhängig von der Programmiersprache. Ein »gib die Position aus mit print« läßt sich dann einfach in »print(position)« umwandeln, und das hättest Du bestimmt hinbekommen. Dagegen ist ein »sucht bis zur letzten Position gibt diese aus und bricht dann ab« ist für einen Computer viel zu kompliziert und kann nicht einfach in Python übersetzt werden. Daher meine Frage, das besser zu strukturieren und dann ist der nächste Schritt, dem eigentlichen Programmieren einfach.
Was __deets__ geschrieben hat, ist dann schon (fast) die optimale Lösung, Die muß nicht gleich als Anfänger so aussehen. Aber dass da viel neues dabei ist, kann ich auch kaum glauben, außer Listen kommen in Deinem Buch in den ersten 100 Seiten nicht vor.
Was __deets__ geschrieben hat, ist dann schon (fast) die optimale Lösung, Die muß nicht gleich als Anfänger so aussehen. Aber dass da viel neues dabei ist, kann ich auch kaum glauben, außer Listen kommen in Deinem Buch in den ersten 100 Seiten nicht vor.
Richtig, Listen wurden noch nicht besprochen,
vielleicht bin ich ja etwas einfach gestrickt,
aber Offset, needles, haystack.find z.B. sagen mir gar nichts.
Und bei aller Freundschaft, würde mich hier gerne einbringen und will auch keinen nerven,
aber mal eben zu behaupten, ich knoble/überlege nicht gerne und will nichts lernen,
ist bei einer ersten Frage, sagen wir mal etwas frech.
vielleicht bin ich ja etwas einfach gestrickt,
aber Offset, needles, haystack.find z.B. sagen mir gar nichts.
Und bei aller Freundschaft, würde mich hier gerne einbringen und will auch keinen nerven,
aber mal eben zu behaupten, ich knoble/überlege nicht gerne und will nichts lernen,
ist bei einer ersten Frage, sagen wir mal etwas frech.
`offset`, `needles` und `haystack` sind alles Variablen, die aus dem Kontext klar werden sollten. Heuhaufen ist der große String, in dem alle Vorkommen gefunden werden sollen, Nadel ist nun der String, der gefunden werden soll, und Offset ist ein Offset.
Ohne deine konkreten strings und Code zu kennen kann man nicht wissen was da falsch läuft. Mein Beispiel aber ganz bestimmt nicht, denn das find tut wie es tut. Das addiert nicht magisch ne eins drauf. Bist du sicher das du nicht Offset ausgibst?
Also wird mit den [] eine Liste erstellt, ok, warte bis es im Buch kommt.
Aber wenn ich mit print(offset) die gesuchten Positionen ausgebe, wird 9 und 14 angeben und die sind falsch.
Wie du eben selber sagtest, die Positionen fangen mit 0 und nicht mit 1 an und mit 0 angefangen, sind es 8 und 13, genau wie im Buch angegeben.
Aber danke für deine Mühe und nochmals, will hier keinen nerven und bin für Hilfe dankbar.
Aber wenn ich mit print(offset) die gesuchten Positionen ausgebe, wird 9 und 14 angeben und die sind falsch.
Wie du eben selber sagtest, die Positionen fangen mit 0 und nicht mit 1 an und mit 0 angefangen, sind es 8 und 13, genau wie im Buch angegeben.
Aber danke für deine Mühe und nochmals, will hier keinen nerven und bin für Hilfe dankbar.
-
- User
- Beiträge: 1
- Registriert: Samstag 18. April 2020, 20:23
@andreasp meine Antwort kommt etwas spät, jedoch ist es für die Anderen vielleicht hilfreich. Hier ein Beispielcode, wie du "find" in einer Schleife benutzen und die Positionen von "a" ausgeben kannst:
Code: Alles auswählen
x = "baabaaabaaaaab"
z = 0
for i in x:
if i == "a":
u = x.find("a", z)
print(u)
z+=1
- __blackjack__
- User
- Beiträge: 14032
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@viktor-did: Da wird nicht `find()` benutzt. Du kannst da offensichtlich auch einfach ``u = z`` schreiben, denn `find()` sucht ja nicht wirklich wenn es immer so aufgerufen wird, das genau an dem Offset auch garantiert ein "a" steht. Und dann kann man sich das `u` auch sparen und einfach gleich `z` ausgeben.
Die Namen sind alle schlecht, aber `i` ist besonders schlecht gewählt. Bei einer Laufvariablen mit dem Namen `i` hat man ganze Zahlen. Hat man keine ganzen Zahlen, nennt man die ganz sicher nicht `i`. Jeder Programmierer erwartet da, fast unabhängig von der Programmiersprache, eine ganze Zahl.
Statt `z` vor der Schleife zu definieren und dann in der Schleife manuell hoch zu zählen, würde man die `enumerate()`-Funktion verwenden:
Die Namen sind alle schlecht, aber `i` ist besonders schlecht gewählt. Bei einer Laufvariablen mit dem Namen `i` hat man ganze Zahlen. Hat man keine ganzen Zahlen, nennt man die ganz sicher nicht `i`. Jeder Programmierer erwartet da, fast unabhängig von der Programmiersprache, eine ganze Zahl.
Statt `z` vor der Schleife zu definieren und dann in der Schleife manuell hoch zu zählen, würde man die `enumerate()`-Funktion verwenden:
Code: Alles auswählen
text = "baabaaabaaaaab"
for index, character in enumerate(text):
if character == "a":
print(index)
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.