DU LERNST HIER... |
mit Strings umzugeben. Die Zeichen eines Texts (Buchstaben, Satzzeichen, Leerschläge, Zeilenumbrüche, usw.) werden im Computer als eine Zahl zwischen 0 und 127 im ASCII-Code dargestellt. Will man auch die Umlaute und Akzente berücksichtigen, so braucht es bereits die Zahlen 0..255, für eine Erweiterung auf Sprachen mit ganz anderen Zeichen (kyrillisch, chinesisch, usw.) braucht man den Unicode mit Zahlen 0..65535. |
MUSTERBEISPIEL |
Wörter und Sätze sind aneinander gefügte Zeichen und werden als String bezeichnet.
from gturtle import * makeTurtle() right(90) name = "Maya Bircher" for c in name: forward(20) label(c) right(90) for i in range(len(name)): forward(20) label(name[i]) |
MERKE DIR... |
Wie du bereits weisst, kannst du zwei Strings mit dem Additionsoperator + zusammenfügen (konkatenieren). Dabei musst du aber darauf achten, dass links und rechts vom Pluszeichen auch wirklich Strings stehen. Willst du also eine Zahl z hinzufügen, so musst du diese zuerst mit str(z) in einen String umwandeln. Es gibt auch einen leeren String leer = "". Unterscheide ihn gut von einem String mit einem Leerzeichen luecke = " ". Im Gegensatz zu Listen kannst du ein einzelnes Zeichen in einem String nicht ändern, da Strings wie Tupels unveränderlich sind. Um beispielsweise in "Maya" den ersten Buchstaben zu ändern, musst du den ganzen String neu zuweisen: name = "Kaya". |
PROGRAMMCODE INTERAKTIV AUSFÜHREN |
from gturtle import * makeTurtle() repeat: s = inputString("Gib einen Turtlebefehl ein:") exec(s) |
MERKE DIR... |
Du kannst auch mehrere Befehle mit Strichpunkten getrennt miteinander eingeben. Dein Programm benimmt sich aber leider sehr schlecht, wenn du eine fehlerhafte Eingabe machst, da exec() dann eine sogenannte Exception auslöst (man sagt auch: "eine Exception wirft"). Dies führt zum Abbruch des Programms, also zu einem Crash! Es ist aber leicht, dieses böse Fehlverhalten zu korrigieren, wenn du die Exception in einem try-except-Block "fängst". from gturtle import * makeTurtle() repeat: s = inputString("Gib einen Turtlebefehl ein") try: exec(s) except: msgDlg("Illegale Eingabe") |
ZUM SELBST LÖSEN |
|
Tabelle der ASCII-Codes:
In Python heisst der String-Datentyp str.
Es gibt ein paar Spezialzeichen, die mit einem vorangestellten Rückwärtsbruchstrich als Escape-Sequenz geschrieben werden.
Escape-Sequenz |
Bedeutung |
\\ |
Backslash |
\' |
Einfaches Anführungszeichen |
\" |
Doppeltes Anführungszeichen |
\a |
Bell |
\b |
Backspace |
\f |
Formfeed |
\n |
Linefeed (new line) |
\r |
Carriage return |
\t |
Tab |
\uxxxx |
16-bit hex unicode xxxx |
\xhh |
8-bit hex hh |
Beispiel: "\x41\x42\x43" ist dasselbe wie "ABC"
Im Gegensatz zu Listen kannst du ein einzelnes Zeichen des Strings nicht durch eine Zuweisung verändern, da Strings unveränderlich sind. Mit
name = "Maya Bircher"
führt
name[0] = "K"
also nicht zum Erfolg, sondern zu einer Fehlermeldung. Willst du einen String verändern, so musst du ihn als Ganzes neu zuweisen, also:
name = "Kaya Bircher"
In Python gibt es keinen Datentyp char für ein einzelnes Zeichen. Diese werden als String mit der Länge 1 dargestellt.
Auf den ersten Blick scheint es überrissen, in einem Einführungslehrgang Exceptions zu behandeln. Es ist aber wichtig, schon zu Beginn die Programmierkultur zu pflegen, dass Programme sich auch bei falschen Eingaben vernünftig verhalten müssen und nicht mit einem Crash abbrechen sollten.
Defensives und robustes Programmieren gehören zum Verhaltenskodex des exakten und serösen Arbeitens, der weit über die Informatik hinaus grosse Bedeutung hat.
Defensives Programmieren: Wenn es eine sichere und eine weniger sichere, aber kürzere oder trickreiche Variante gibt, so wählt man die sichere.
Robustes Programmieren: Ein Programm darf auch bei ausserordentichen Umständen nicht abbrechen. Spezielle Umstände erfordern spezielle Lösungen, auch wenn die Behandlung von seltenen Spezialfällen mühsam und aufwändig ist.
Beides gehört zum Mission Critical Programming.
Nur in Interpretersprachen ist es möglich, Programme die erst zur Laufzeit entstehen, direkt auszuführen. Dies ist ein besonders hübsches Feature von Python.