Tag liebes Forum
Ich bin neu hier und entschuldige mich schon mal für alles was ich falsch mache, doch die Zeit ist knapp
Ich habe schon eine Zeit lang gegooglet und in meine Lehrscripts geguckt aber keine Lösung auf mein Problem gefunden!
Der Aufgabenteil lautet:
- Geben Sie folgenden Text als String aus, wobei zwischen beiden Satzteilen in der
Ausgabe eine Leerzeile stehen soll.
<Liedertext:“Drei Chinesen mit dem Kontrabass, spielten auf der Strasse und
erzaehlten sich was.“>
- Geben Sie aus, wie oft der Teilstring “i“ im Text enthalten ist.
- Ersetzen Sie alle anderen Vokale durch ein “i“.
Den Text mit den Chinesen auszugeben ist ja kein Problem aber wie gebe ich aus wieviele "i" in ihm enthalten sind? Ich weiß nur wie man die Zeichenanzahl mit len(...) ausgibt aber nicht wie ich ausgebe, wieviele "i" der Text hat. Und wie ersetze ich alle anderen Vokale durch ein "i" ? :K
Bin superhappy, wenn mir jemand helfen kann.
Danke im Voraus.
LG
Artur
Anzahl eines bestimmten Zeichens in einer Satzzeile ausgeben
Du suchst die String-Methoden "count" und "replace": http://docs.python.org/library/stdtypes ... ng-methods
Schöne Grüße,
brb
Schöne Grüße,
brb
Hey, schon mal danke für die schnelle Antwort. Ich habe noch Probleme den Befehl richtig einzugeben.
str.count(sub[, start[, end]])¶
Also wenn mein Satz von Zeile 26 bis 27 geht muss ich doch theoretisch:
str.count("i"[, 26[, 27]])¶ eingeben, oder? Ich hab auch versucht das str. und das ¶ wegzumachen aber es klappt nicht.
Was mache ich falsch? console sagt:
print count("i"[, 26[, 27]])¶
^
SyntaxError: invalid syntax
Sry, für die Umstände, ich weiß halt nicht wie das genau funzt
Edit: Und wie benutze ich den replace-Befehl oO? Was muss ich denn für die Vokale eingeben?
str.count(sub[, start[, end]])¶
Also wenn mein Satz von Zeile 26 bis 27 geht muss ich doch theoretisch:
str.count("i"[, 26[, 27]])¶ eingeben, oder? Ich hab auch versucht das str. und das ¶ wegzumachen aber es klappt nicht.
Was mache ich falsch? console sagt:
print count("i"[, 26[, 27]])¶
^
SyntaxError: invalid syntax
Sry, für die Umstände, ich weiß halt nicht wie das genau funzt
Edit: Und wie benutze ich den replace-Befehl oO? Was muss ich denn für die Vokale eingeben?
Du musst die eckigen Klammern weglassen, und brauchst auch start und ende nicht.
Die Notation in der Dokumentation mit den eckigen Klammern ist keine Syntax, sondern beschreibt, dass start und end optionale Argumente sind.
Die Notation in der Dokumentation mit den eckigen Klammern ist keine Syntax, sondern beschreibt, dass start und end optionale Argumente sind.
Code: Alles auswählen
>>> "abcdefg".count("a")
1
>>> "abcdefg".count("a", 1) # 0, weil der string bei 0 beginnt, aber die suche erst ab 1 (also dem b)
0
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Die Start- und Ende-Parameter haben nichts mit Zeilen zu tun! Es geht um die Indexposition innerhalb eines Strings. Du solltest Dir mal die Grundlagen von Strings angucken, insbesondere das "Slicing". Damit sollte Dir das klarer werden.
Deine Aufrufe sind - gelinde gesagt - unsinnig! Das sind komplette Grundlagen. Du übergibst Parameter nicht mit komischen eckigen Klammern, sondern simpel durch Kommata getrennt. Das sollte man doch selbst als Neuling schnell gemerkt haben, oder?
Die Angabe in der Doku ist nur eine spezielle Syntax, die verdeutlichen soll, dass die Parameter `start` und `end` optional sind. Du kannst sie angeben (oder auch nur den `start`-Parameter ohne den `end`-Parameter), musst es aber nicht.
Ich habe ja fast die Vermutung, dass Ihr das ganze ohne diese Methoden lösen und alles über eine simple Schleife lösen sollt. Aber da wir den Kontext nicht kennen, kann man dazu wenig sagen. Generell ist die Verwendung der dafür vorgesehenen Funktionen natürlich sinnvoller - sofern es auf die Produktivität ankommt.
Deine Aufrufe sind - gelinde gesagt - unsinnig! Das sind komplette Grundlagen. Du übergibst Parameter nicht mit komischen eckigen Klammern, sondern simpel durch Kommata getrennt. Das sollte man doch selbst als Neuling schnell gemerkt haben, oder?
Die Angabe in der Doku ist nur eine spezielle Syntax, die verdeutlichen soll, dass die Parameter `start` und `end` optional sind. Du kannst sie angeben (oder auch nur den `start`-Parameter ohne den `end`-Parameter), musst es aber nicht.
Ich habe ja fast die Vermutung, dass Ihr das ganze ohne diese Methoden lösen und alles über eine simple Schleife lösen sollt. Aber da wir den Kontext nicht kennen, kann man dazu wenig sagen. Generell ist die Verwendung der dafür vorgesehenen Funktionen natürlich sinnvoller - sofern es auf die Produktivität ankommt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ja!...Artur hat geschrieben:Ist es möglich mehrere zu ersetzen?
...
Aber wo liegt das Problem? Wenn Du die Methode doch einmal bereits erfolgreich angewendet hast, dann schaffst Du das doch auch sicher ein zweites Mal!
(Wobei Du doch laut Aufgabenstellung nur einen Vokal ersetzen musst?!?)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-Ersetzen Sie alle anderen Vokale durch "i".
Es ist bestimmt möglich str.replace("e","i") 3 oder 4 mal nacheinander einzutippen, was sehr viel Platz füllt. Ich wollte jetzt wissen, ob ich mit einem Befehl ALLE Vokale mit "i" ersetzen kann.
Es ist bestimmt möglich str.replace("e","i") 3 oder 4 mal nacheinander einzutippen, was sehr viel Platz füllt. Ich wollte jetzt wissen, ob ich mit einem Befehl ALLE Vokale mit "i" ersetzen kann.
@Artur: Statt es mehrmals zu schreiben könntest Du eine Schleife über die Vokale schreiben, die für jeden Schleifendurchlauf das Ersetzen einmal ausführt.
Mit einem Funktionsaufruf ginge es mit `re.sub()`, aber reguläre Ausdrücke möchtest Du Dir am Anfang vielleicht nicht unbedingt antun.
Mit einem *Befehl* geht es nicht. Wäre auch komisch wenn Python ausgerechnet dafür einen extra Befehl hätte.
Mit einem Funktionsaufruf ginge es mit `re.sub()`, aber reguläre Ausdrücke möchtest Du Dir am Anfang vielleicht nicht unbedingt antun.
Mit einem *Befehl* geht es nicht. Wäre auch komisch wenn Python ausgerechnet dafür einen extra Befehl hätte.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Stimmt, sorry, mein Fehler.Artur hat geschrieben:-Ersetzen Sie alle anderen Vokale durch "i".
Also ich hätte da eine Lösung mittels lambda parat - die braucht zwei ZeilenArtur hat geschrieben: Es ist bestimmt möglich str.replace("e","i") 3 oder 4 mal nacheinander einzutippen, was sehr viel Platz füllt.
Aber an Deiner Stelle würde ich mal BlackJacks Tipp weiterverfolgen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Das ist ja sehr löblich. Aber wieso so schnell aufgeben?Artur hat geschrieben:Aww wie schreibe ich denn jetzt eine Schleife? Ich denke ich warte einfach auf die nächste Vorlesung, der prof wird es mir schon zeigen. Wollte ein bischn vorarbeiten. Danke an alle für die Hilfe
Du solltest Dir einfach mal das offizielle Tutorial angucken! Darin werden alle grundlegenden Themen, wie Kontrollstrukturen (darunter fallen Schleifen) und grundlegende Datenstrukturen (darunter fallen eben Listen und Strings) besprochen. Ich denke damit kommst Du recht schnell auf die Lösung Deiner Probleme.
Ich frage mich nur, wieso ihr einen Aufgabenzettel bekommt, für den Konzepte notwendig sind, die ihr noch nicht besprochen habt? Oder ist die Abgabe so terminiert, dass die kommenden Vorlesungen die Grundlagen noch schaffen können?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert