Häufigkeit eines spezifischen Zeichens innerhalb einer Zeichenkette ausgeben (Python)?

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

risingEagle 
Beitragsersteller
 01.11.2021, 14:25

Kannst du kurz den Sinn von „count“ erklären und welche Funktion das „range“ hier hat?

Slevi89  01.11.2021, 14:38
@risingEagle

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.

risingEagle 
Beitragsersteller
 01.11.2021, 15:04
@risingEagle

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 😅

risingEagle 
Beitragsersteller
 01.11.2021, 15:41
@risingEagle

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? 😂

Slevi89  02.11.2021, 08:41
@risingEagle

Naja das entspricht doch aber nicht der Aufgabenstellung oder? Du meintest doch, der Buchstabe der gezählt werden soll, wird über die Eingabe abgefragt?

risingEagle 
Beitragsersteller
 02.11.2021, 11:47
@Slevi89

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.

Slevi89  02.11.2021, 13:01
@risingEagle

Achso, dann war die Aufgabe zweideutig formuliert ;)

Du kannst hier also auch einen build in nutzen:

Beispiel

from collections import Counter
Counter('qwertyqweryyyy')