lehrkraefte:blc:informatik:ffprg1-2020:stringvar

This is an old revision of the document!


Strings (Zeichenketten)

Ein String (Zeichenkette) ist eine Folge von “Buchstaben”.

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.

Zusammenfügen mit '+':

a = "Hello "
b = "world!"
c = a+b
print(c)

Einzelne Bytes als Strings der Länge 1 auslesen (nicht zwingend Buchstaben):

a = "abcde"
print(a[0])
print(a[4])

Länge eines Strings (in Anzahl Bytes):

a = "abc"
print(len(a))
b = "öh"
print(len(b))   # ergibt 3, weil das 'ö' zwei Bytes belegt!

String mit Zahl multiplizieren:

print("na"*31 + " she's got the look!")

Substrings:

a="hello world!"
print(a[3:5])   # Von und mit viertem bis ohne sechstem Byte
print(a[6:])    # Von siebtem Bytes bis Schluss
print(a[:5])    # Von Anfang bis ohne sechstem Byte

Loop:

for b in "Hello World":
   print(b)

Aufgaben

Gegeben sind zwei Zahlen $x$ (Breite) und $y$ Höhe. Produzieren Sie dann folgende Ausgabe, Beispiel für x=6 und y=3

+---+---+---+---+---+---+
|   |   |   |   |   |   |
+---+---+---+---+---+---+
|   |   |   |   |   |   |
+---+---+---+---+---+---+
|   |   |   |   |   |   |
+---+---+---+---+---+---+

Lösungsvorschlag

Lösungsvorschlag

raster.py
x = 6
y = 3
 
h = "+---"*x + "+"
v = "|   "*x + "|"
for i in range(y):
    print(h)
    print(v)
print(h)

Gegeben ist die halbe Grösse $x$ vom Quadrat. Produzieren Sie damit folgende Ausgabe (für $x=2$):

+-----+
|\   /|
| \ / |
|  X  |
| / \ |
|/   \|
+-----+

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.

Lösungsvorschlag

Lösungsvorschlag

asciiart.py
x = 3
h = "+" + "-"*(x*2+1) + "+"
print(h)
for i in range(1,2*x+2):
    l = "|"
    for j in range(1,2*x+2):
        if (i==x+1 and j==i):
            l+="X"
        else:
            if (j==i):
                l+= "\\"
            elif(2*x+2-j==i):
                l+= "/"
            else:
                l+=" "
    l+="|"
    print(l)
print(h)
  • lehrkraefte/blc/informatik/ffprg1-2020/stringvar.1580808551.txt.gz
  • Last modified: 2020/02/04 10:29
  • by Ivo Blöchliger