Lektion 7 besteht aus drei Teilen A, B und C, die in beliebiger Reihenfolge bearbeitet werden können.
Bislang haben wir Zeichenketten bzw. Strings (Elemente vom Typ str
) nur auf ganz einfache Art und Weise verwendet. In dieser Lektion zeigen wir, wie man Strings manipulieren kann: wie man sie auseinander nehmen kann, wie man sie kombinieren kann und wie man die unterschiedlichen Zeichen betrachten kann, aus denen ein String besteht.
Was ist ein String?
Alle Daten, die auf einem Computer gespeichert sind, werden letztlich als eine Folge von 0-en und 1-en gespeichert. Dazu gehören Texte, digitale Bücher, Bilder, Lieder, Videos und "executable files", also ausführbare Dateien wie Spiele und Anwendungen. Textdaten werden in der Regel als Strings gespeichert:
- Ein String ist eine Kette (auch: Folge) von Zeichen. Der String "Hello, World!" z.B. enthält 13 Zeichen, darunter Buchstaben wie "H", "e" und Zeichensetzung wie " ", "!".
- Jedes Zeichen im String entspricht genau genommen einer Zahl. Die Zahl ist der Code des Zeichens; "H" zum Beispiel entspricht der Zahl 72 (bzw. 48 im Hexadezimalsystem), und zwar sowohl im ASCII-Code als auch im Unicode.)
(Zahlen werden vom Computer in einem binären Format gespeichert - eben als Folge von 0-en und 1-en, auch Bitfolge genannt. Für ein Zeichen wird letztlich die binäre Darstellung seines Zahlencodes gespeichert; für das "H" also die Bitfolge 01001000.)
Das Manipulieren von Strings als Folgen von Zeichen: S[]
Um einen String zu manipulieren, müssen wir in der Lage sein, auf die individuellen Zeichen zugreifen zu können, aus denen der String besteht. In Python wird dies folgendermaßen gemacht: für einen String S
und eine Ganzzahl index
, liefert die Notation
S[index]das Zeichen von
S
an der Position index
. Nach der Konvention beginnt der String beim Index 0: also ist S[0]
das erste Zeichen, S[1]
das zweite Zeichen, etc. In "Hello, World!" ist die Liste von Zeichen (engl.: character) folgende:
Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 Char.: H e l l o , W o r l d !Beachte, dass das Zeichen an der Stelle Index 6 ein Leerzeichen ist.
In vielen anderen Programmiersprachen gibt es eine besondere Kategorie für Zeichen. In Python sind Zeichen das gleiche wie Strings mit Länge 1, also ist ihr Typ str . |
Die Anzahl von Zeichen in einem String finden: len
Um die Anzahl von Zeichen in einem String zu finden, benutzen wir die Python Funktion len
. Zum Beispiel ist len("Hello, World!")
gleich 13.
S
zu erhalten?len(S)
dir die Gesamtzahl an Zeichen in der Zeichenkette herausgibt, da es mit dem Index 0
beginnt, ist das letzte Zeichen beim Index len(S)-1
.Hier ist ein Beispiel der Verwendung von len
und []
, den beiden Tools, die wir gerade eingeführt haben.
Strings ausschneiden: S[:]
Einen Teil eines Strings auszuschneiden ergibt einen Substring bzw. Teilstring. So sind zum Beispiel die Strings "eat" und "ted" Substrings von "repeated". Um einen Substring in Python auszuwählen, verwenden wir die Syntax:
S[firstIndex:tailIndex]um den Substring am Index firstIndex beginnen zu lassen und ihn enden zu lassen bei tailIndex-1. Versuche herauszufinden, was die Ausgabe des folgenden Codes ist, bevor du ihn ausführst.
Beachte, dass beim Ausschneiden eines Substrings firstIndex einbegriffen ist, aber der tailIndex nicht. Dies ist eine häufige Fehlerquelle. Sie hat jedoch ein paar nette Auswirkungen. Zum Beispiel ist aufgrund dieser Wahl die Länge des Substrings S[i:j] immer j-i . |
Strings einfügen: +
Wir wissen alle: 1+2=3. Mit Strings bekommen wir stattdessen das folgende Ergebnis:
Wie du sehen kannst, erzeugt S+T
einen neuen String, der mit S
beginnt, worauf direkt T
folgt. Diese "String-Klebe-Operation" nennt man auch Verkettung oder Konkatenation.
Wenn du Zahlen verketten möchtest, musst du sie zuerst zu str konvertieren. Sonst erhältst du einen von zwei Fehlern, je nachdem welche Reihenfolge du ausprobiert hast. Führe dieses Programm aus, um zu sehen, welche Fehler auftauchen können.
Hier ist ein korrektes Beispiel: die str() Funktion wandelt die Zahl zu einem String um vor der Verkettung.
|
Wie wir bereits in Lektion 4 erwähnt haben, kannst du Strings und Ganzzahlen multiplizieren: S * n
ist kurz für S + S + ... + S
.
Zeichencodes: ord
, chr
Wie wir bereits in der Einleitung zu dieser Lektion erwähnten, stellt dein Computer tatsächlich jedes Zeichen als Zahl dar. Welche Zahl entspricht welchem Zeichen? Allgemein gesprochen ist es davon abhängig, welche Kodierung dein Computer verwendet, aber nahezu alle modernen Computer haben eine Standardmenge an Zeichen für die Zahlen zwischen 32 und 255. Hier ist eine Liste der Zeichen mit Zahlen zwischen 32 und 127:
ord: 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 chr: ! " # $ % & ' ( ) * + , - . / ord: 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 chr: 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ord: 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 chr: @ A B C D E F G H I J K L M N O ord: 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 chr: P Q R S T U V W X Y Z [ \ ] ^ _ ord: 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 chr: ` a b c d e f g h i j k l m n o ord: 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 chr: p q r s t u v w x y z { | } ~Später in Lektion 8 wirst du ein Programm schreiben, das diese Tabelle erzeugt.
Es ist nicht nötig, die ganze Tabelle auswendig zu lernen, aber es gibt einige Fakten, die nützlich zu erinnern sind:
- Die Kleinbuchstaben a, b, c, ..., z haben fortlaufende Zeichencodes.
- Die Großbuchstaben A, B, C, ..., Z haben fortlaufende Zeichencodes.
- Die Zahlen 0, 1, 2, ..., 9 haben fortlaufende Zeichencodes.
Zeichen 32 ist ein Leerzeichen, und Zeichen 127 ist eines von mehreren besonderen "Kontrollzeichen". Einige hilfreiche Kontrollzeichen sind 9, was tab ist, und 10 und 13, die für newlines verwendet werden.
In Python kannst du ein Zeichen in den ihm entsprechenden numerischen Code umwandeln, indem du die ord
Funktion verwendest. Die chr
Funktion macht das genaue Gegenteil: sie nimmt eine Zahl als Input und gibt das Zeichen mit diesem Code wieder aus.
Einige Systeme unterstützen lediglich ausgebbare Zeichen zwischen 32 und 127, andere haben ausgebbare Zeichen bis zu 255 oder 65535; in Unicode gibt es hunderttausende Zeichen. Mehr darüber kannst du hier oder hier erfahren. |
Es gibt zwei weitere Übungen zum Abschluss der Lektion.
Du kannst dich nun der nächsten Lektion widmen!