Häufigkeit eines spezifischen Zeichens innerhalb einer Zeichenkette ausgeben (Python)?
Wir sollen in einem Python-Programm eine Zeichenkette über die Konsole abfragen und auch ein Zeichen eingeben lassen, dessen Häufigkeit in der Zeichenkette über die Konsole ausgegeben werden soll. Ferner soll die Gesamtanzahl der Zeichen und der Buchstaben ausgegeben werden.
Ich hab jetzt erstmal mit der Abfrage und der Ausgabe der Länge der gesamten Zeichenkette begonnen:
zeichenkette = str(input("Geben Sie eine Zeichenkette in die Konsole ein."))
zeichenkett3 = str(input("Geben Sie ein Zeichen ein, welches in der Zeichenkette gezählt werden soll."))
print("Zeichenkette:", zeichenkette)
print("Zeichenkette:", zeichenkett3)
print("Anzahl der Zeichen:", len(zeichenkette))
Weiß jemand, wie ich fortfahren kann?
2 Antworten
satz = input("Geben Sie einen Satz ein: ")
zeichen = input("Geben Sie ein, welches Zeichen gesucht werden soll: ")[0]
print("Anzahl aller Zeichen: ", len(satz))
print(f"Anzahl des Zeichens '{zeichen}':", len([z for z in satz if z == zeichen]))
Es gibt hier wirklich viele Möglichkeiten wie du das lösen kannst. Hier würde ich dich eigentlich ganz gerne an eine Suchmaschine verweisen, weil es sicherlich interessant sein könnte mal die Vor- und Nachteile der Lösungen zu sehen ;)
Aber ich kann dir ja mal einen ersten Aufschlag geben.
Um mir Arbeit zu sparen definieren wir mal
zk = zeichenkette
und
sz = suchzeichen
count = 0
for i in range(len(zk)):
if(string[i] == sz):
count = count + 1
naja count ist im warsten Sinne des Wortes ein Zähler. "Range" wird benutzt um der for-schleife zu sagen wie oft sie durchlaufen werden soll. range(5) z.B. würde von 0 bis 4 zählen.
Habs jetzt ein wenig anders gelöst, nämlich mit dem .count
Wie könnte ich jetzt bei einer Zeichenkette die Gesamtzahl der Buchstaben ausgeben lassen? Das verwirrt mich noch ein wenig 😅
Das Zählen der Buchstaben habe ich jetzt so gelöst:
liste1 = list(zeichenkette)
count = 0
for i in range(len(zeichenkette)):
if (liste1[i] == "a" or "b" or "c" or "d" or "e" or "f" or "g" or "h" or "i" or "j" or "k" or "l" or "m" or "n" or "o" or "p" or "q" or "r" or "s"
or "t" or "u" or "v" or "w" or "x" or "y" or "z" or "A" or "B" or "C" or "D" or "E" or "F" or "G" or "H" or "I" or "J" or "K" or "L" or "M" or "N" or "O" or "P" or "Q" or "R" or "S"
or "T" or "U" or "V" or "W" or "X" or "Y" or "Z" or "ü" or "Ü" or "ä" or "Ä" or "ö" or "Ö" or "ß"):
count = count + 1
print("Anzahl der Buchstaben (es werden nur jene des dt. Alphabets unterstützt): ", count)
Das geht doch sicherlich schöner, oder? 😂
Naja das entspricht doch aber nicht der Aufgabenstellung oder? Du meintest doch, der Buchstabe der gezählt werden soll, wird über die Eingabe abgefragt?
Ja, den Teil habe ich ja schon gelöst mit count gelöst. Ich meinte jetzt aber den Teil, in dem die Buchstaben in der Zeichenkette gezählt werden sollen.
Achso, dann war die Aufgabe zweideutig formuliert ;)
Du kannst hier also auch einen build in nutzen:
Beispiel
from collections import Counter
Counter('qwertyqweryyyy')
Kannst du kurz den Sinn von „count“ erklären und welche Funktion das „range“ hier hat?