• Keine Ergebnisse gefunden

Modul Einführung in die Praktische Informatik (EPI) Grundlagen der Programmierung (GPR)

N/A
N/A
Protected

Academic year: 2022

Aktie "Modul Einführung in die Praktische Informatik (EPI) Grundlagen der Programmierung (GPR)"

Copied!
60
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Teil 4 - Elementare Datentypen II Zeichenketten (Strings)

Prof. Dr. Franziska Matthäus Giersch Professur Zelluläre

Bioinformatik Prof. Dr. Matthias Kaschube

Computational Neuroscience and Computational Vision

Dr. Karsten Tolle Direktor Big Data Lab

Modul Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung (GPR)

(2)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Teil 4 - Lernziel

§ Ziel ist es, den Datentyp String als Programmierer*in beherrschen zu lernen und seine Eigenarten kennen zu lernen.

§ Unicode kennen lernen. Eigenschaften und Nutzen!

§ Strings als ersten Sequenzdatentyp (iterierbar) kennen lernen und

§ den Umgang mit der Indexierung und dem Slicing bei Sequenztypen Wissen und Können ;-)

§ Weitere Escape-Sequenzen kennen lernen

§ … und allgemein die Nutzung von Strings kennen lernen.

(3)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Was ist das: Zeichen – Text – Alphabet?

(4)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Der Begriff Text

Text = geschriebene Sprache (im engeren Sinne) kommt aus dem Lateinischen. textus =

• Gewebe

• Geflecht

• Stoff

(5)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Funktionale Verbindung zwischen Gewebe und Text

linear-temporäre Aneinanderreihung von Zeichen und Worten, wird mental in eine semantische Netzwerkrepräsentation transformiert

è Text „verstrickt“ und „verflechtet“ Objekte, Akteure und Handlungen miteinander,

Text Semantisches

Netzwerk

(6)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Die Darstellung des Textes

benötigt eine Schrift, deren Zeichen wahlweise

• Phoneme (≈Laute)

• Silben

• Wörter bzw. Begriffe kodieren.

(7)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Alphabetschrift

Alphabet (von gr. αλφάβητο [alfáwito] - Alpha & Beta)

Beispiele:

Lateinische Schriften: Den småne skriften

IPA-Lautschrift: [alfáwito]

Kyrillisch: Ду бист кайн Весси!

Griechische Schrift:

αλφάβητο

(8)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Wortbildschrift, Logogrammschrift

Beispiele:

Hanzi (chinesisch) Hanja (koreanisch) Maja-Schrift

Jurjen Tangut

(9)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Sonderformen / Logogramme als Zeichen

Ziffernschrift arabisch 0 1 2 3 .. 9 römisch I II III IV …

Symbolik der Mathematik oder der Chemie

Piktogramme

Emojis &

Emoticons

𝜕𝑢

𝜕𝑡 = ∇!𝑢

(10)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Begriff: Alphabet in der Informatik

Alphabet: ist in der Informatik weiter gefasst als in der Lingustik:

Unter Alphabet versteht man (z.B. nach DIN 44300) eine (i.d.R.

nichtleere) total geordnete endliche Menge von unterscheidbaren Symbolen (Zeichen).

Wird häufig symbolisiert durch Σ (großes Sigma).

(11)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Begriff: Zeichenreihe oder Zeichenkette

Zeichenreihe (Zeichenkette) = endliche lineare Reihe von Zeichen aus einem Alphabet Σ .

Übrigens: Auch die Zeichenreihe, die keine Zeichen enthält, ist ein Wort - das leere Wort. Es wird oft mit ε bezeichnet.

(12)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Zusammenfassung

§ Strings sind Zeichenketten, bestehen aus Zeichen aus einem Alphabet.

§ Schriften werden genutzt, um Zeichen, Laute, Silben oder Wörter zu repräsentieren.

§ Es gibt viele verschiedene Schriften.

(13)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Wichtige Zeichensätze: ASCII, ISO/IEC 8859, Unicode

(14)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Begriff: Zeichensatz (character set)

Zeichensatz:

Die Zuordnung von alphanumerischen Zeichen (Buchstaben und Ziffern) sowie Sonderzeichen und Symbolen zu einem Zahlencode (oder Binärvektor).

§ = Menge der verfügbaren Zeichen

§ kann (muss aber nicht) aus einem Alphabet kommen.

§ Achtung unterschiedliche Definitionen: „Ein Zeichensatz ist weniger als ein Zeichencode, der zusätzlich noch eine definierte Abbildung eines Zeichens auf einen Binärvektor/Natürliche Zahl benötigt."

Beispiele:

§ ASCII (traditionell bis heute sehr häufig verwendet)

= American Standard Code for Information Interchange.

(15)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Internationale Zeichensätze

ASCII

American

Standard Code for Information Interchange

Einer der ältesten Computer-

Zeichensätze – 7 Bit Code 1963 Sehr weit verbreitet, (Basis für Programmier- sprachen,

Internet-Adressen, etc.)

ISO/IEC 8859 15 verschiedenen

Kodierungen zur Abdeckung europäischer Sprachen sowie Arabisch, Hebräisch,

Thailändisch und Türkisch 8 Bit Code

1986 u.a. in Linux und MS Windows verwendet.

Unicode ISO/IEC

10646 – 1991 Internationaler Standard –

(7) 8, 16 oder 32 Bit 1991 Ist heute die dominierende Repräsentation

(16)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

-1 Latin-1 Westeuropäisch

-2 Latin-2 Osteuropäisch

-3 Latin-3 Südeuropäisch

-4 Latin-4 Baltisch

-5 Kyrillisch

-6 Arabisch

-7 Griechisch

-8 Hebräisch

-9 Latin-5 Türkisch

-10 Latin-6 Nordisch

-11 Thai

-13 Latin-7 Baltisch

-14 Latin-8 Keltisch

-15 Latin-9 Westeuropäisch

-16 Latin-10 Südosteuropäisch

Veränderung an 8 Positionen (u.a. €-Zeichen)

ISO IEC 8859 (fast nur noch historisch bedeutsam!)

8 Bit Code (Latin-9 mit Umlauten)

(17)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

ASCII-Anekdote

Startbildschirm des Apple II (1983) Bei aktiviertem deutschen Zeichensatz zeigte er das eher komische „APPLE ÜÄ ;-) oder nordisch (links).

Beim Übergang von ASCII (keine diakri- tischen Zeichen) zum ISO 646-IRV.

(18)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Unicode (1)

Internationale Norm (privates Konsortium und ISO/IEC), aktuell ist Version 14

§ Identisch mit Universal Character Set (UCS nach ISO 10646)

§ Ziel: Langfristig soll für jedes sinntragende „Schriftzeichen“ oder

„Textelement“ (Symbole, Emoticons, …) aller bekannten Schriftkulturen und Zeichensysteme ein digitaler Code festgelegt werden.

§ Es werden nur „abstrakte Zeichen“ (characters) kodiert, nicht dagegen die grafische Darstellung (Glyphen)

§ Unicode wird ständig um weitere Zeichen ergänzt, gepflegt und gewartet.

(19)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Unicode – Das Konzept zur Codierung

1. Schritt: Jedem Unicode-Zeichen wird eineindeutig ein sogenannter Codepunkt (engl. code point) zugeordnet.

§ der Coderaum des Unicode-Zeichensatzes umfasst dezimal 0 –1.114.111 (hexadezimal: 0 –10FFFF).

§ Dies sind 17 sogenannten „Ebenen“ à je 65536 codepoints

§ Von diesen gut 1 Mio code points sind aktuell nur etwas mehr als 100.000 genutzt.

§ Benannt werden diese Codepunkte üblicherweise durch ihren Hexcode, teils mit dem Präfix U+, jedes Zeichen hat aber auch einen Namen mit dem sich darauf zugreifen lässt

Siehe: unicode.org/charts/ oder unicode-table.com

(20)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Unicode – Das Konzept zur Codierung

2. Schritt: Mit Hilfe eines Unicode Transformation Formats (UTF) werden Unicode-Zeichen auf Folgen von Bytes abgebildet.

Es gibt sehr viele Encodings. Üblich sind:

§ UTF-8 kodiert Zeichen mit variabler Byte-Anzahl (1-4 Bytes). Die Codepoints 0 bis 127, die dem ASCII-Zeichensatz entsprechen, werden in einem Byte kodiert.

§ UTF-16 ist das älteste Kodierungsverfahren, bei dem ein oder zwei 16-Bit- Einheiten (2 oder 4 Bytes) verwendet werden. ACHTUNG: Bytereihenfolge beachten: UTF-32BE und UTF-32LE

§ UTF-32 kodiert ein Zeichen immer in genau 32 Bit.

Auch hier Byte-Reihenfolge beachten.

(21)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Erste Programmiererfahrungen mit String:

Literale und Operatoren

(22)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Zeichenketten in Python

Python implementierte in der Version 2.X zwei verschiedene Basis-Typen für Zeichenketten (strings):

§ strings (8-Bit, ein Oktett, ein Byte)

§ Unicode-Strings (variable Codelänge von 8-32 Bits)

Ab Python Version 3.0 gibt es nur noch Strings

(UTF-8 kodiert variable Codelänge von 8-32 Bits, intern 16/32 Bit)

§ Python kennt den Datentyp eines Zeichens (Character) nicht: Ein einzelnes Zeichen, z.B. “a“ wird als ein-elementiger String repräsentiert.

§ Auch Python-Programme werden im Default in UTF-8 kodiert!

(Erlaubt sind aber nur sehr wenige Zeichen außer in Strings.)

(23)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

String-Literale in Python

§ Zeichenketten (als Daten) werden in (obenstehenden) “Anführungs- zeichen“ geschrieben, gleichgültig ob einfache ʹ oder doppelte ".

§ Hier erlebt wohl jede Programmierer*in einmal Überraschungen, weil es ein Chaos an Zeigen gibt, die Anführungszeichen ähnlich sind

§ Der Python Interpreter akzeptiert nur

Gedrucktes

Zeichen Unicode Name Unicode Codepoint

' Apostrophe 0x0027 = 39

" Quotation Mark 0x0022 = 34

Die Python Syntax Sagt schlicht

single quote (') or double quote (") --

„Anführungszeichen“

(24)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Welches „Chaos“ genau?

Typografisch korrektes (grün) und gerades (rot) Apostroph sowie Minutenzeichen (Prime, blau), I, i mit Akut-Akzent.

Es gibt noch diverse weitere Varianten, siehe z.B. in der Wikipedia:

de.wikipedia.org/wiki/Apostroph oder de.wikipedia.org/wiki/Anführungszeichen

Die Programmiersprachen-Editoren (z.B. Idle) machen das natürlich immer richtig, aber wenn man Code aus Word, PowerPoint, o.ä.

Programme übernimmt, dann kommt es i.d.R. zu Problemen.

Arial Calibri Tahoma Times Linux New Roman Libertine

aus:

de.wikipedia.org/wiki/Apostroph:

(25)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

String-Literale

1.'…' Standard

2."…" nimmt man, wenn 'im String vorkommt

3.'''…''' der String darf mehrzeilig sein

4."""…"""

Immer nur als Paar nutzen! - '…" ist unzulässig … erlaubt ist aber:

"hello" ' world'. Das ist äquivalent zu "hello world"

Zwischen den „Anführungszeichen“ können alle Unicode-Zeichen stehen

§ Eingabe durch die Tastatur, auch ß, ö, … Einschränkung:

Der Backslash \ (Rückstrich, umgekehrter Schrägstrich, …) hat eine besondere Bedeutung. Er wird benutzt um

§ bestimmte Steuerzeichen durch eine ESCAPE-Sequenz darzustellen

§ um Unicode Codepunkte einzugeben (damit beliebige Zeichen)

§ als Fluchtsymbol (Markierungssymbol) um diese spezielle Bedeutung abzustellen (dieser zu entfliehen): ' " / newline

(26)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Escape-Sequenzen als „Ersatz“ für „Steuerzeichen“

Escape

Sequence Meaning Bedeutung wie

\a ASCII Bell (BEL) (Tonsignal) \x07

\b ASCII Backspace (BS) (Rückschritt) \x08

\f ASCII Formfeed (FF) (Seitenvorschub) \x0C

\n ASCII Linefeed (LF) (Zeilenvorschub) \x0A

\r ASCII Carriage Return (CR)

(Wagenrücklauf) \x0D

\t ASCII Horizontal Tab (TAB)

(Horizontales Tabulatorzeichen) \x09

\v ASCII Vertical Tab (VT)

(VertikalesTabulatorzeichen) \x0B

(27)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Unicode Escape- (=Flucht) Sequenzen

Escape

Sequence Meaning Notes

\N{name} Character name in the Unicode database 1)

\uxxxx Character with 16-bit hex value xxxx exakt 4 Hex

\Uxxxxxxxx Character with 32-bit hex value xxxxxxxx exakt 8 Hex

\ooo Character with octal value ooo exakt 3 Oct

\xhh Character with hex value hh exakt 2 Hex

1) Siehe z.B. http://unicode.org/Public/UNIDATA/NamesList.txt Achtung: Es kann sein, dass Sie ein gültiges Unicode Zeichen

eingegeben haben, Sie es aber trotzdem nicht drucken können, weil es dieses Zeichen in den ausgewählten Schriften (Fonts) nicht gibt.

(28)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Weitere zulässige Escape (echte) Flucht-Sequenzen

Escape Sequence Meaning

\newline Backslash and newline ignored 1)

\\ Backslash (\)

\' Single quote (')

\" Double quote (")

1) Mit newline ist hier eine „neue Zeile“ gemeint, die regulär durch die Return-Taste eigegeben wird. Genau dieses wird hier ignoriert!

Ist nötig, weil newline \ ' und \" besondere Bedeutungen haben.

(29)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Beispiele

>>> 'Hallo\nLeute' # A regular string with escape \n.

'Hallo\nLeute'

>>> print ('Hallo\nLeute') # print puts a „line feed“.

Hallo Leute

>>> print ('Hallo\\nLeute') Hallo\nLeute

(30)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Spezielle String-Typen

§ String-Literale können mit den die Präfixe ‚r‘ oder ‚R‘ ausgestattet werden und sind dann Raw-Strings.

§ Hier haben Backslashes keine ausgezeichnete Bedeutung. Es gibt kein Fluchtsymbol! Der \ wird also wie normales Zeichen behandelt.

§ Ausnahme: \' ist ein Escape-Symbol für raw strings, raw strings können daher keinen einzelnen Backslash darstellen, auch keine ungerade Anzahl an Backslashes..

(31)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Beispiele

>>> r'Hallo\nLeute' # the same string as raw string, notice \\

'Hallo\\nLeute'

>>> print (r'Hallo\nLeute') # in a print statement Hallo\nLeute

>>> type (r'Hallo\nLeute') # stored as a regular string

<class 'str'>

>>> r' \' ' # two characters '\\"'

>>> r'\' # not a valid string literal

SyntaxError: EOL while scanning string literal

(32)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

String Operatoren

Die Operatoren + und * haben für Strings S, T eine besondere Bedeutung S + T: Konkatenation (Verkettung, Hintereinanderfügen der Operanden) n * S; S * n: Wiederholung (n ist Integer)

>>> a = 'tic-'

>>> b = 'toc, '

>>> a + b 'tic-toc, '

>>> c = a + b

>>> c * 3

'tic-toc, tic-toc, tic-toc, '

>>> 3 * c

'tic-toc, tic-toc, tic-toc, '

(33)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Vergleichsoperatoren für Strings (1)

Die Vergleichsoperatoren

x > y, x >= y, x == y, x is y (Objekt-Identität) x < y, x <= y, x != y x is not y

funktionieren auch für Strings.

Achtung: <, >, <=, >= ordnen die Zeichen (einschließlich Ziffern, Leerzeichen,

Satz- und Sonderzeichen) nach dem Zahlenwert der dem Codepoint im Unicode entspricht, d.h.

§ alle lateinischen Großbuchstaben werden vor dem kleinen „a“ eingeordnet

§ Ö,ö,Ü,ü,Ä,ä,ß stehen dagegen ganz hinten.

(34)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Vergleichsoperatoren für Strings (2)

§ Ansonsten wird lexikographisch verglichen, d.h. die Strings werden zunächst nach ihren Anfangsbuchstaben verglichen,

§ dann bei gleichen Anfangsbuchstaben nach dem jeweils zweiten Buchstaben, usw.

§ Ist ein Wort ganz in einem anderen als Anfangsteil enthalten (wie beispielsweise „kann“ in „kannst“), so ist das kürzere Wort kleiner.

(35)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Zusammenfassung

§ Strings als Literal werden in einfache, oder dreifache Anführungszeichen eingebettet, die paarweise zu nutzen sind.

§ \ ist das Fluchtsymbol (Escape Sequence), welches es erlaubt, beliebige Unicode-Zeichen einzufügen oder auch Sonderzeichen des ASCII-

Zeichensatzes.

§ R oder r vor dem Quote erlaubt es, als Literale sogenannte Raw Strings zu benutzen: Dort hat \ keine Wirkung, sondern wird als Zeichen genommen.

Gedrucktes

Zeichen Unicode Name Code Point Python Phrase ' Apostrophe 0x0027 = 39 Single Quote

" Quotation Mark 0x0022 = 34 Double Quote

(36)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Indexierung und Slicing bei Sequenztypen

(37)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Indexierung

Konzeptionelles Modell des Strings: Zeichen stehen in „Zellen“. Diese Zellen sind nummeriert. Jedes Zeichen ist unter seinem eigenen Index i zugreifbar: S[i] in eckigen Klammern.

Index 0 1 2 3 4 5 6 7 8 9 10 11 12

Wert E P R i s t t o l l

Negativer

Index -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

>>> S = 'EPR ist toll'

>>> S[0]

'E'>>> S[-4]

't' >>> len('EPR ist toll')

12

Auch negative Indexwerte sind erlaubt.

Zu negativen Indexwerten werden len(S) hinzuaddiert.

(38)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Slicing (= Teilbereichbildung)

§ Extrahiert zusammenhängende (Zellen-)bereiche.

§ Regel: S[i:j] S[i] ist das erste Element im Teilbereich S[j-1] ist das letzte Element im Teilbereich

§ S[1:5] geht von 1 bis 4 (ausschließlich 5)

§ Bereichsgrenzen sind mit 0 und der Sequenzlänge len(String)vorbelegt

§ S[1:] geht von Index 1 bis zum letzten Element

§ S[:-1] nimmt alles mit Ausnahme des letzten Elements

§ S[:] erzeugt eine Kopie von S (S sei ein String)

Index 0 1 2 3 4 5 6 7 8 9 10 11 12

Wert E P R i s t t o l l

Index -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

(39)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Slicing (= Teilbereichbildung)

Index 0 1 2 3 4 5 6 7 8 9 10 11 12

Wert E P R i s t t o l l

Index -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

>>> S = 'EPR ist toll'

>>> S[1:5]

'PR i'

>>> S[1:]

'PR ist toll'

>>> S[:-3]

'EPR ist t'

>>> S[:]

'EPR ist toll'

(40)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Indizes und Slicing-Indizes außerhalb der „Feldgrenzen“

Indexwerte außerhalb des Werte-bereichs [0,11] oder [-12,-1] führen zu einem “IndexError“.

Anders beim Slicing, dort werden die mit roten Pfeilen markierten Indexwerte auf ± len(S) „gecasted“

Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Wert E P R i s t t o l l

Index -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

>>> S[-12]

'E'

>>> S[-13]

Traceback (most recent call last):

File "<pyshell#204>", line 1, in … IndexError: string index out of range

>>> S[9:14]

'oll'

>>> S[-9:-12]

''

>>> S[-14:3]

'EPR'

(41)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Slicing-Indizes mit strides (Schritten)

Erweiterte Teilbereichsbildung S[i:j:k]

Das dritte Element k in S[i,j,k] gibt den <stride> („Schritt“) an (Erhöhung / Erniedrigung des Index, bisher war das +1):

§ Als erstes werden die zu großen j oder zu kleinen i auf die zulässigen Werte gecasted, dann in positive Werte gemäß der Grafik gewandelt, ergibt m ≥ 0, n ≤ len(S)

§ wenn <stride> > 0: Ergebnis: S [m] bis S [n] mit <stride> Schritten; S [n]

gehört nicht zum Slice; wenn m ≥ n ist das Ergebnis der leere String;

§ wenn <stride> < 0: Ergebnis S [n] bis S [m]; S [m] gehört nicht zum Slice; wenn m ≤ n ist das Ergebnis der leere String.

(42)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Beispiele zur erweiterte Teilbereichsbildung S[i:j:k]

wenn <stride> = 0: ,ValueError: slice step cannot be zero’

Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Wert E P R i s t t o l l

Index -14 -13 -12 -

11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

>>> S[::2]

'ERittl'

>>> S[6:0:-1]

'tsi RP'

>>> S[6::-1]

'tsi RPE'

>>> S[0:6:-1]

''

>>> S[6:6:-1]

''

>>> S[-6:-12:-1]

'tsi RP'

(43)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Beispiele: Erweiterte Teilbereichsbildung S[i:j:k]

S[::2] von Anfang bis Ende jedes zweite Element S[::-1] ergibt die Umkehrung der Sequenz S

S[0:12:-1] ergibt den leeren String

S[15:0:-1] ergibt die Umkehrung der Sequenz, bis auf S[0} gehört nicht dazu S[4::-2) holt jedes zweite Element von rechts nach links ab Position 4 bis 0 S[-4:-12:-2] = 'ttiR'

(44)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Iterables

§ In Python ist ein String-Objekt ein Iterable.

§ Jedes iterable (iterierbare Objekt) ist in der Lage, ein Mitglied (member) nach dem anderen in einer „for-each-Schleife“ bereit zu stellen.

§ Beispiel:

ham = 'Test' for i in ham:

print(i)

======= RESTART =======

T e s t

>>>

Übrigens: Strings sind nicht die einzigen Iterables:

Listen, Tuple, Set, Dictionarys, … sind auch iterables!

(45)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Zusammenfassung

§ Wie für jeden iterierbaren Datentyp ist beim String ein indexierter Zugriff (gekennzeichnet durch s[i]) möglich.

§ Indizes können auch negativ sein: Dann errechnet sich der natürliche Indexwert aus negativen Index + length(string).

§ Andere Indexwerte außerhalb des genutzten Bereichs erzeugen einen Indexfehler.

§ Durch Slicing können Teilbereiche des Strings s erzeugt werden.

Regel: S[i : j : k] S[i] ist das erste Element im Teilbereich S[j-1] ist das letzte Element im Teilbereich k gibt den stride („Schritt“) an.

§ Beim Slicing sind Indexwerte außerhalb des gültigen Bereichs erlaubt. Diese werden auf das jeweilige „Ende“ gecastet.

(46)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

String-Funktionen und String-Methoden

(47)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Funktionen

Wir kennen bisher erst wenige Funktionen

sie liefern entweder einen Wert und können damit an jeder Stelle stehen, wo eine Variable stehen kann, z.B. len(s) oder

sie lösen ein bestimmtes Verhalten (eine Operation oder Funktion) aus, z.B. print(s)

Schreibweise: funktionsname(x, y, …), z.B. len(s)

(48)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Einige spezielle Funktionen für Strings (1)

chr(i) (character)

liefert die String Repräsentation des Characters dessen Unicode code point der Integer i ist.

Beispiele:

chr(97) liefert den String 'a', chr(8364)liefert den String '€'.

Gültiges Intervall für das Argument ist 0 bis 1,114,111 (0x10FFFF).

ValueError wird ausgegeben für i ausserhalb dieses Intervalls.

ord(c) (ordinal)

Für einen String c der einen

Unicode Character repräsentiert, ergibt ord(c) den Integer der den Unicode code point dieses

Zeichens repräsentiert.

Beispiele:

ord('a')ergibt 97, und ord('€') ergibt 8364.

ord(c) ist somit die

Umkehrung von chr(i).

(49)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Einige spezielle Funktionen für Strings (2)

eval(expression[, globals[, locals]])

Haben wir schon genutzt, lesen Sie bitte die Beschreibung nach!

exec(object[, globals[, locals]])

Unterstützt die dynamische Ausführung von Python code.

format(value[, format_spec])

Konvertiert einen Wert (value) in eine “formatierte” Repräsentation, je nach Format (format_spec).

Dies schauen wir uns später noch an!

Viele weitere der built in-Funktionen sind auch für String-Objekte nutzbar. Verschaffen Sie sich einen Überblick

https://docs.python.org/3/library/functions.html.

(50)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Attribut-(Punkt-)schreibweise für Methoden

§ Python ist im Kern eine objektorientierte Programmiersprache. In diesem Kontext nennt man Funktionen Methoden.

§ Methoden werden mit der Attribut-(Punkt-)schreibweise aktiviert:

s.Methodenname(); s ist eine Variable/ein Objekt

§ Dies sind (zunächst) einmal „nur“ unterschiedliche Schreibweisen desselben:

§ Anstelle von <function_name>(x, y, z) schreibt man x.<methode_name>(y, z).

§ String-Methoden bieten vielfältige Möglichkeiten zur

Textbearbeitung. Insgesamt ca. 45 String Methoden u.a. zum Suchen, zum Aufteilen und Zusammenfügen, zum Formatieren usw. und ca. 25 String Funktionen.

(51)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

String Methoden (1)

Method Description

s.capitalize() Converts first character to Capital Letter

s.casefold() converts to casefolded strings

s.center() Pads string with specified character s.count() returns occurrences of substring in

string

s.endswith() Checks if String Ends with the Specified Suffix

s.xpandtabs() Replaces Tab character With Spaces s.encode() returns encoded string of given string s.find() Returns the index of first occurrence of

substring

s.format() formats string into nicer output s.index() Returns Index of Substring s.isalnum() Checks Alphanumeric Character

s.isalpha() Checks if All Characters are Alphabets s.isdigit() Checks Digit Characters

s.isidentifier() Checks for Valid Identifier

s.islower() Checks if all Alphabets in a String are Lowercase

s.isnumeric() Checks Numeric Characters s.isprintable() Checks Printable Character

Method Description

s.isspace() Checks Whitespace Characters s.istitle() Checks for Titlecased String s.isupper() returns if all characters are

uppercase characters

s.join() Returns a Concatenated String s.ljust() returns left-justified string of given

width

s.rjust() returns right-justified string of given width

s.lower() returns lowercased string s.upper() returns uppercased string s.swapcase() swap uppercase characters to

lowercase; vice versa

s.lstrip() Removes Leading Characters s.rstrip() Removes Trailing Characters

s.strip() Removes Both Leading and Trailing Characters

s.partition() Returns a Tuple

s.maketrans() returns a translation table s.rpartition() Returns a Tuple

s.translate() returns mapped charactered string s.replace() Replaces Substring Inside

(52)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

String Funktionen

Method Description

any() Checks if any Element of an Iterable is True

all() returns true when all elements in iterable is true

ascii() Returns String Containing Printable Representation

bool() Converts a Value to Boolean

bytearray() returns array of given byte size

bytes() returns immutable bytes object

compile() Returns a s.code object

complex() Creates a Complex Number

enumerate() Returns an Enumerate Object

filter() constructs iterator from elements which are true

float() returns floating point number from number, string

input() reads and returns a line of string

int() returns integer from a number or string

iter() returns iterator for an object

len() Returns Length of an Object

max() returns largest element

Method Description min() returns smallest element

map() Applies Function and Returns a List

ord() returns Unicode code point for Unicode character

reversed() returns reversed iterator of a sequence

slice() creates a slice object specified by range()

sorted() returns sorted list from a given iterable

sum() Add items of an Iterable

zip() Returns an Iterator of Tuples

>>> sorted('Beste Grüße:')

[' ', ':', 'B', 'G', 'e', 'e', 'e', 'r', 's', 't', 'ß', 'ü']

(53)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Der Unterschied zwischen str(), repr() und ascii()

§ Alle drei Funktionen erzeugen Werte vom Typ String.

§ Alle drei Funktionen sind zumindest bei allen Basistypen anwendbar.

Was ist der Unterschied?

§ str() erzeugt einen String mit dem Ziel: möglichst gute Lesbarkeit für Menschen: Diese Funktion wird zum Beispiel bei print () ausgeführt und liefert damit „gut“ lesbare Ausgaben.

§ repr() erzeugt einen String mit dem Ziel auf Eindeutigkeit und

Unmissverständlichkeit. Es kann für Programmierer*innen bei der Fehlersuche hilfreich sein.

§ ascii() erzeugt einen String wie repr() jedoch mit Unicode-escapes, wo nötig.

(54)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Byte Objects

Byte Object = encodierte Strings

String: Sequenz von Zeichen -> lesbar durch Menschen, braucht Enkodierung zum Speichern

Byte Object: Sequenz von Bytes -> Maschinenlesbar, direkt speicherbar

Methoden zum konvertieren:

encode(): String -> Byte decode(): Byte -> String

PNG, JPEG, MP3, WAV, ASCII, UTF-8 sind alles verschiedene Formen der Encodierung um Audio, Bilder oder Text in Bytes zu verwandeln.

(55)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Beispiele

>>> s = 'alpha' # s is a string,

>>> b = b'beta' # b is a byte object

>>> print(s,b) alpha b'beta'

>>> t = s.encode('utf-8') # the encodung method

>>> print (t) b'alpha'

>>> t = 'Gemüse'‚ # handling of non-ASCII character

>>> t.encode('utf-8') b'Gem\xc3\xbcse'

>>> u = b.decode('utf-8') # the decode method

>>> print (u)

beta>>> s + b # never mix up string and byte types Traceback (most recent call last):

File "<pyshell#104>", line 1, in <module>

s + b

TypeError: Can't convert 'bytes' object to str implicitly

(56)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Dunder-Methoden

Für jeden Operator und für jede built-in Funktion gibt es in Python eine zugehörige Methode, die diese Operation implementiert:

Operator x + y è Methode __add__

è Aufruf x.__add__(y)

Funktion len(x) è Methode __len__

è Aufruf x.__len__()

Diese Methoden nennt man Dunder-Methoden („Dunder“ ist Jargon für „DoubleUnder (Underscores)“) und zeigen an; dass sie entweder für einen Operator oder eine Funktion stehen!

(57)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Zusammenfassung

§ Python verfügt über sehr mächtige und reichhaltige String-Funktionen und String-Methoden:

§ Funktionen werden mit <Funktionsname>(p1, p2, …) aufgerufen.

Methoden werden mit p1.<Methodenname>(p2, …) aufgerufen.

§ Bitte aufpassen: String-Sortieren erfolgt gemäß des Unicode Codepunkts:

ASCII-Sonderzeichen, Großbuchstaben, Kleinbuchstaben, Umlaute

(58)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Enkodierungen

Zwölf Zeichen mit Code Points & Byte Repräsentation (in hex) in sieben verschiedenen Enkodierungen (Stern bedeutet, dass das Zeichen in dieser Enkodierung nicht repräsentiert werden kann):

Aus: Luciano Ramalho: Fluent Python Published by O'Reilly Media, Inc., 2015

(59)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Zusammenfassung

§ Strings sind Zeichenketten zusammengesetzt aus Characters (Buchstaben, Zahlen, Symbole, etc.)

§ In Python durch Anführungsstriche gekennzeichnet: s='Hello'

§ Unicode: heute dominierender Zeichensatz-Standard

§ Verschiedene Kodierungen mögliche, z.B. UTF-8

§ Kennen jetzt Escape-Sequenzen, raw strings & Byte Objects

§ Sind vertraut mit Indexierung & Slicing

§ Python verfügt über zahlreiche Funktionen und Methoden zum Handling von Strings (mehr dazu in EPR)

(60)

Einführung in die Praktische Informatik (EPI)

Grundlagen der Programmierung

Teil 4

Elementare Datentypen - II Prof. Dr. Matthias Kaschube Prof. Dr. Franziska Matthäus Dr. Karsten Tolle

Ausblick

Nächste Woche: Der Datentyp Float

bis dahin

Auf Wiedersehen!

Referenzen

ÄHNLICHE DOKUMENTE

nicht automatisiert automatisiert Prüfung durch Menschen Prüfung mit dem Inspektion, Review Rechner... Einführung in die Praktische

‣ Ein Objekt der abgeleiteten Klasse kann überall dort verwendet werden, wo ein Objekt der Basisklasse erwartet wird; überschriebene Methoden werden dann auf der abgeleiteten

‣ Methoden können überschrieben werden, indem in der abgeleiteten Klasse eine Methode gleichen Namens definiert wird. Diese Methode kann beliebige Parameter

I Vorher ankündigen, sonst null Punkte... Warum funktionale Programmierung lernen?. I Denken in Algorithmen, nicht

I Vordefinierte Typen: Listen [a] und Tupel (a,b) I Berechungsmuster über Listen: primitive Rekursion,. Listenkomprehension I Überladung

I Berechungsmuster über Listen: primitive Rekursion, Listenkomprehension. I Überladung

Seite 22 Station 4 Gleich klingende Wörter: Innere Differenzierung möglich.. Seite 23 Station 5 dass – das: Lineal und

Wir denken uns die Komponenten model, view und controller als Klassen oder Module implementiert Eine vollständige Aufruf-Vernetzung der Komponenten wäre unsinnig:. Viel zu komplex