Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:ffprg1-2020:stringvar [2020/02/04 08:59] – Ivo Blöchliger | lehrkraefte:blc:informatik:ffprg1-2020:stringvar [2022/03/24 12:50] (current) – [Text Quadrate] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Strings (Zeichenketten) ====== | ||
| + | Ein String (Zeichenkette) ist eine Folge von " | ||
| + | |||
| + | So lange nur ASCII-Zeichen verwendet werden, geht alles problemlos, ein Buchstabe ist immer ein Byte. Werden Umlaute wie ä,ö,ü oder andere Zeichen wie z.B. 😀 verwendet, wird die Sache etwas komplizierter und es muss auf das Encoding geachtet werden, wofür eigentlich fast immer UFT-8 verwendet werden sollte. | ||
| + | |||
| + | ===== String Operationen ===== | ||
| + | Zusammenfügen mit ' | ||
| + | <code python> | ||
| + | a = "Hello " | ||
| + | b = " | ||
| + | c = a+b | ||
| + | print(c) | ||
| + | </ | ||
| + | |||
| + | Einzelne Zeichen als Strings der Länge 1 auslesen: | ||
| + | <code python> | ||
| + | a = " | ||
| + | print(a[0]) | ||
| + | print(a[4]) | ||
| + | </ | ||
| + | |||
| + | Länge eines Strings (in Anzahl Bytes): | ||
| + | <code python> | ||
| + | a = " | ||
| + | print(len(a)) | ||
| + | b = " | ||
| + | print(len(b)) | ||
| + | </ | ||
| + | |||
| + | String mit Zahl multiplizieren: | ||
| + | <code python> | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | Substrings: | ||
| + | <code python> | ||
| + | a=" | ||
| + | print(a[3: | ||
| + | print(a[6: | ||
| + | print(a[: | ||
| + | </ | ||
| + | |||
| + | Loop: | ||
| + | <code python> | ||
| + | for b in "Hello World": | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ====== Aufgaben ====== | ||
| + | ===== Text Quadrate ===== | ||
| + | Das Programm hat als Eingabe einen String. Damit sollen folgendes Text-Quadrat produziert werden: | ||
| + | < | ||
| + | P Y T H O N | ||
| + | Y T H O N P | ||
| + | T H O N P Y | ||
| + | H O N P Y T | ||
| + | O N P Y T H | ||
| + | N P Y T H O | ||
| + | </ | ||
| + | |||
| + | <hidden Lösungsvorschlag> | ||
| + | <code python textquadrat.py> | ||
| + | import sys | ||
| + | t = " | ||
| + | for i in range(len(t)): | ||
| + | for j in range(len(t)): | ||
| + | sys.stdout.write(t[(i+j)%len(t)]+" | ||
| + | |||
| + | </ | ||
| + | <code python textquadrat2.py> | ||
| + | a = " | ||
| + | for i in range(len(a)): | ||
| + | wort = "" | ||
| + | for b in a: | ||
| + | wort += b+" " | ||
| + | print(wort) | ||
| + | a = a[-1]+a[: | ||
| + | </ | ||
| + | <code python> | ||
| + | a = " | ||
| + | l = len(a) | ||
| + | a+=a | ||
| + | for i in range(l): | ||
| + | print(a[i: | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | **Challenge** Produzieren Sie folgende Ausgabe | ||
| + | < | ||
| + | P Y T H O N | ||
| + | Y T H O N O | ||
| + | T H O N O H | ||
| + | H O N O H T | ||
| + | O N O H T Y | ||
| + | N O H T Y P | ||
| + | </ | ||
| + | <hidden Lösungsvorschlag> | ||
| + | <code python textquadrat2.py> | ||
| + | import sys | ||
| + | t = " | ||
| + | for i in range(len(t)): | ||
| + | for j in range(len(t)): | ||
| + | p = i+j | ||
| + | if (p> | ||
| + | p = len(t)-p-2 | ||
| + | sys.stdout.write(t[p]+" | ||
| + | |||
| + | </ | ||
| + | Die Idee | ||
| + | <code python textquadrat3.py> | ||
| + | a = " | ||
| + | w = a + a[-2:: | ||
| + | for i in range(len(a)): | ||
| + | wort = "" | ||
| + | for j in range(len(a)): | ||
| + | wort += w[i+j] + " " | ||
| + | print(wort) | ||
| + | </ | ||
| + | </ | ||
| + | ===== Raster ===== | ||
| + | Gegeben sind zwei Zahlen $x$ (Breite) und $y$ Höhe. Produzieren Sie dann folgende Ausgabe, Beispiel für x=6 und y=3 | ||
| + | <code txt> | ||
| + | +---+---+---+---+---+---+ | ||
| + | | | ||
| + | +---+---+---+---+---+---+ | ||
| + | | | ||
| + | +---+---+---+---+---+---+ | ||
| + | | | ||
| + | +---+---+---+---+---+---+ | ||
| + | </ | ||
| + | <hidden Lösungsvorschlag> | ||
| + | <code python raster.py> | ||
| + | x = 6 | ||
| + | y = 3 | ||
| + | |||
| + | h = " | ||
| + | v = " | ||
| + | for i in range(y): | ||
| + | print(h) | ||
| + | print(v) | ||
| + | print(h) | ||
| + | </ | ||
| + | </ | ||
| + | ===== ASCII-Art ===== | ||
| + | Gegeben ist die Grösse des folgenden " | ||
| + | < | ||
| + | +-----+ | ||
| + | |\ /| | ||
| + | | \ / | | ||
| + | | X | | ||
| + | | / \ | | ||
| + | |/ \| | ||
| + | +-----+ | ||
| + | </ | ||
| + | Für $x=3$: | ||
| + | < | ||
| + | +-------+ | ||
| + | |\ /| | ||
| + | | \ / | | ||
| + | | \ / | | ||
| + | | | ||
| + | | / \ | | ||
| + | | / \ | | ||
| + | |/ \| | ||
| + | +-------+ | ||
| + | </ | ||
| + | Hinweis: Ein Backslash ' | ||
| + | <hidden Lösungsvorschlag> | ||
| + | <code python asciiart.py> | ||
| + | x = 3 | ||
| + | h = " | ||
| + | print(h) | ||
| + | for i in range(1, | ||
| + | l = " | ||
| + | for j in range(1, | ||
| + | if (i==x+1 and j==i): | ||
| + | l+=" | ||
| + | else: | ||
| + | if (j==i): | ||
| + | l+= " | ||
| + | elif(2*x+2-j==i): | ||
| + | l+= "/" | ||
| + | else: | ||
| + | l+=" " | ||
| + | l+=" | ||
| + | print(l) | ||
| + | print(h) | ||
| + | </ | ||
| + | </ | ||