Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision Last revision Both sides next revision | ||
lehrkraefte:blc:informatik:ffprg1-2020:stringvar [2020/02/03 21:00] Ivo Blöchliger created |
lehrkraefte:blc:informatik:ffprg1-2020:stringvar [2022/03/24 13:36] Ivo Blöchliger [Text Quadrate] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Strings (Zeichenketten) ====== | ====== 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[: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | **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) | ||
+ | </ | ||
+ | </ | ||