lehrkraefte:blc:informatik:ffprg1-2020:stringvar

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
lehrkraefte:blc:informatik:ffprg1-2020:stringvar [2020/02/04 10:27]
Ivo Blöchliger [String Operationen]
lehrkraefte:blc:informatik:ffprg1-2020:stringvar [2022/03/24 13:36]
Ivo Blöchliger [Text Quadrate]
Line 13: Line 13:
 </code> </code>
  
-Einzelne **Bytes** als Strings der Länge 1 auslesen (nicht zwingend Buchstaben):+Einzelne Zeichen als Strings der Länge 1 auslesen:
 <code python> <code python>
 a = "abcde" a = "abcde"
Line 25: Line 25:
 print(len(a)) print(len(a))
 b = "öh" b = "öh"
-print(len(b))   # ergibt 3weil das 'ö' zwei Bytes belegt!+print(len(b))   # ergibt 2  (früher erhielt man 3 weil das 'ö' zwei Bytes belegt und len die Anzahl Bytes gezählt hat).
 </code> </code>
  
Line 48: Line 48:
  
 ====== Aufgaben ====== ====== Aufgaben ======
 +===== Text Quadrate =====
 +Das Programm hat als Eingabe einen String. Damit sollen folgendes Text-Quadrat produziert werden:
 +<code>
 +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 
 +</code>
 +
 +<hidden Lösungsvorschlag>
 +<code python textquadrat.py>
 +import sys
 +t = "PYTHON"
 +for i in range(len(t)):
 +    for j in range(len(t)):
 +        sys.stdout.write(t[(i+j)%len(t)]+" ")
 +    print
 +</code>
 +<code python textquadrat2.py>
 +a = "QUADRAT"
 +for i in range(len(a)):
 +    wort = ""
 +    for b in a:
 +        wort += b+" "
 +    print(wort)
 +    a = a[-1]+a[:-1]
 +</code>
 +</hidden>
 +
 +**Challenge** Produzieren Sie folgende Ausgabe
 +<code>
 +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 
 +</code>
 +<hidden Lösungsvorschlag>
 +<code python textquadrat2.py>
 +import sys
 +t = "PYTHON"
 +for i in range(len(t)):
 +    for j in range(len(t)):
 +        p = i+j
 +        if (p>=len(t)):
 +            p = len(t)-p-2
 +        sys.stdout.write(t[p]+" ")
 +    print
 +</code>
 +Die Idee
 +<code python textquadrat3.py>
 +a = "PYTHON"
 +w = a + a[-2::-1]  # Wort plus Wort rückwärts ohne letzten Buchstaben
 +for i in range(len(a)):
 +    wort = ""
 +    for j in range(len(a)):
 +        wort += w[i+j] + " "      # Alle Buchstaben auf einer Diagonalen haben die gleiche Summe i+j
 +    print(wort)
 +</code>
 +</hidden>
 ===== Raster ===== ===== Raster =====
 Gegeben sind zwei Zahlen $x$ (Breite) und $y$ Höhe. Produzieren Sie dann folgende Ausgabe, Beispiel für x=6 und y=3 Gegeben sind zwei Zahlen $x$ (Breite) und $y$ Höhe. Produzieren Sie dann folgende Ausgabe, Beispiel für x=6 und y=3
Line 73: Line 136:
 </hidden> </hidden>
 ===== ASCII-Art ===== ===== ASCII-Art =====
-Gegeben ist die halbe Grösse $x$ vom Quadrat. Produzieren Sie damit folgende Ausgabe (für $x=2$):+Gegeben ist die Grösse des folgenden "Quadrats", wobei $x$ für Anzahl Schrägstriche oberhalb vom X steht. Produzieren Sie damit folgende Ausgabe (für $x=2$):
 <code> <code>
 +-----+ +-----+
Line 83: Line 146:
 +-----+ +-----+
 </code> </code>
 +Für $x=3$:
 +<code>
 ++-------+
 +|\     /|
 +| \   / |
 +|  \ /  |
 +|     |
 +|  / \  |
 +| /   \ |
 +|/     \|
 ++-------+
 +</code>
 +Hinweis: Ein Backslash '\' wird in einem String mit "\\" geschrieben. Der Grund ist, weil z.B. "\n" für einen Zeilenumbruch oder "\"" für den String mit einem Anführungszeichen steht.
 <hidden Lösungsvorschlag> <hidden Lösungsvorschlag>
 <code python asciiart.py> <code python asciiart.py>
  • lehrkraefte/blc/informatik/ffprg1-2020/stringvar.txt
  • Last modified: 2022/03/24 13:50
  • by Ivo Blöchliger