def haeufigkeitsanalyse(text): # text: Zeichenkette aus Großbuchstaben # return: Liste mit Tupeln aus Buchstabe und Häufigkeit des Buchstabens # Beispiel:... """ >>> haeufigkeitsanalyse('SIMSALABIM') [('A', 2), ('B', 1), ('C', 0), ('D', 0), ('E', 0), ('F', 0), ('G', 0), ('H', 0), ('I', 2), ('J', 0), ('K', 0), ('L', 1), ('M', 2), ('N', 0), ('O', 0), ('P', 0), ('Q', 0), ('R', 0), ('S', 2), ('T', 0), ('U', 0), ('V', 0), ('W', 0), ('X', 0), ('Y', 0), ('Z', 0)] """ anzahlen = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] for zeichen in text: zahl = ord(zeichen) index = zahl-65 anzahlen[index] = anzahlen[index]+1 ergebnis = [] i = 0 while i < 26: zeichen = chr(i+65) anzahl = anzahlen[i] ergebnis = ergebnis + [(zeichen, anzahl)] i = i + 1 return ergebnis def haeufigsterBuchstabe(haeufigkeitstabelle): # haeufigkeitstabelle: Liste mit Tupeln aus Buchstabe und Häufigkeit des Buchstabens # return: Buchstabe, der am häufigsten vorkommt # Beispiel:... """ >>> haeufigsterBuchstabe([('A', 2), ('B', 1), ('C', 0), ('D', 0), ('E', 0), ('F', 0), ('G', 0), ('H', 0), ('I', 2), ('J', 0), ('K', 0), ('L', 1), ('M', 2), ('N', 0), ('O', 0), ('P', 0), ('Q', 0), ('R', 0), ('S', 2), ('T', 0), ('U', 0), ('V', 0), ('W', 0), ('X', 0), ('Y', 0), ('Z', 0)]) 'A' """ tupel = haeufigkeitstabelle[0] hBuchstabe = tupel[0] hAnzahl = tupel[1] for tupel in haeufigkeitstabelle[1:]: if tupel[1] > hAnzahl: hBuchstabe = tupel[0] hAnzahl = tupel[1] return hBuchstabe def kolonne(text, periode, nummer): # text: Zeichenkette aus Großbuchstaben # periode: Länge der Periode # nummer: Nummer der Kolonne # return: Text, der nur aus den Zeichen mit Vielfachen der Kolonnennummer besteht # Beispiel:... """ >>> kolonne('SIMSALABIM', 3, 0) 'SSAM' >>> kolonne('SIMSALABIM', 4, 1) 'ILM' """ textKolonne = '' i = 0 while i < len(text): if i % periode == nummer: textKolonne = textKolonne + text[i] i = i + 1 return textKolonne # Test text = 'KCRPHOFOHYHIAUHVKYZKHOFKLLNXZ' schluessellaenge = 4 i = 0 while i < schluessellaenge: textKolonne = kolonne(text, schluessellaenge, i) buchstabe = haeufigsterBuchstabe(haeufigkeitsanalyse(textKolonne)) print('Kolonne', i, ':', buchstabe) i = i + 1