Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:zahlensysteme:binary_collection [2023-05-09 07:03] – [Strings verketten] hof | gf_informatik:zahlensysteme:binary_collection [2024-05-20 07:38] (aktuell) – hof | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
Das Dossier enthält mehrere Programmieraufgaben, | Das Dossier enthält mehrere Programmieraufgaben, | ||
+ | |||
### Schleifen | ### Schleifen | ||
+ | |||
+ | Bei der *direkten* Schleife ist der Ausdruck hinter `in` die Sequenz der uns interessierenden Elemente (z.B. ein String mit den Binär-Nennwerten `0` oder `1`). Die Schleifenvariable (der Name zwischen `for` und `in`) wird in jedem Schleifendurchgang auf das nächste Element gesetzt. | ||
*Direkte* Schleife über alle Buchstaben eines Strings (einer Zeichenfolge): | *Direkte* Schleife über alle Buchstaben eines Strings (einer Zeichenfolge): | ||
Zeile 10: | Zeile 13: | ||
print(digit) | print(digit) | ||
</ | </ | ||
- | |||
#### Parallel über zwei Strings | #### Parallel über zwei Strings | ||
+ | |||
+ | Bei der _indirekten_ Schleife steht der Ausdruck hinter `in` für die Liste der Indices, ist also eine Ganzzahl (`int`). Die Schleifenvariable heisst meistens `index` oder kurz `i`. Um auf das uns interessierende Element zuzugreifen, | ||
*Indirekte* Schleife über die Buchstaben in zwei gleichlangen Strings: | *Indirekte* Schleife über die Buchstaben in zwei gleichlangen Strings: | ||
Zeile 25: | Zeile 29: | ||
</ | </ | ||
- | Elegante Alternative mit [[https:// | + | Oder mit `while`: |
+ | |||
+ | <code python> | ||
+ | b1 = ' | ||
+ | b2 = ' | ||
+ | index = 0 | ||
+ | while index < len(b1): | ||
+ | digit1 = b1[index] | ||
+ | digit2 = b2[index] | ||
+ | print(digit1, | ||
+ | index = index + 1 | ||
+ | </ | ||
+ | |||
+ | Elegante Alternative mit [[https:// | ||
<code python> | <code python> | ||
Zeile 33: | Zeile 51: | ||
print(digit1, | print(digit1, | ||
</ | </ | ||
+ | |||
+ | |||
#### Rückwärts | #### Rückwärts | ||
Zeile 55: | Zeile 75: | ||
</ | </ | ||
- | Noch kompakter: Die Funktion [[https:// | + | Oder mit `while`: |
+ | |||
+ | |||
+ | <code python> | ||
+ | b = ' | ||
+ | index = len(b) - 1 # Letzter gültiger Index | ||
+ | while index >= 0: | ||
+ | digit = b[index] | ||
+ | print(digit) | ||
+ | index = index - 1 | ||
+ | </ | ||
+ | |||
+ | |||
+ | Noch kompakter: Die Funktion [[https:// | ||
<code python> | <code python> | ||
Zeile 63: | Zeile 96: | ||
</ | </ | ||
- | Noch kompakter (aber auch leserlich? | + | Noch kompakter (aber auch leserlich? |
<code python> | <code python> | ||
Zeile 70: | Zeile 103: | ||
print(d) | print(d) | ||
</ | </ | ||
+ | |||
+ | |||
#### Rückwärts über zwei Strings? | #### Rückwärts über zwei Strings? | ||
++++Lösung| | ++++Lösung| | ||
+ | Am einfachsten mit `while`: | ||
+ | |||
+ | <code python> | ||
+ | b1 = ' | ||
+ | b2 = ' | ||
+ | index = len(b1) - 1 | ||
+ | |||
+ | while index >= 0: | ||
+ | digit1 = b1[index] | ||
+ | digit2 = b2[index] | ||
+ | print(digit1, | ||
+ | index = index - 1 | ||
+ | </ | ||
+ | |||
+ | Eleganter mit `reversed` und `zip` (kein Prüfungsstoff): | ||
+ | |||
<code python> | <code python> | ||
b1 = ' | b1 = ' | ||
Zeile 107: | Zeile 158: | ||
summe = digit1 + digit2 | summe = digit1 + digit2 | ||
- | print(summe) | + | print(summe) |
- | print(int(digit1) + int(digit2)) | + | print(int(digit1) + int(digit2)) |
</ | </ | ||
Zeile 153: | Zeile 204: | ||
a = 101 # eine Zahl | a = 101 # eine Zahl | ||
b = ' | b = ' | ||
- | c = a + b # Fehler! | + | c = a + b |
# Zahl umwandeln in String | # Zahl umwandeln in String | ||
Zeile 175: | Zeile 226: | ||
</ | </ | ||
- | Variante 2: Strings multiplizieren | + | Variante 2 (nicht Lernstoff): Strings multiplizieren |
Strings können übrigens auch mit dem `*` Operator verknüpft werden - zum Beispiel um die Anzahl fehlender Nullen zu erstellen: | Strings können übrigens auch mit dem `*` Operator verknüpft werden - zum Beispiel um die Anzahl fehlender Nullen zu erstellen: | ||
Zeile 188: | Zeile 239: | ||
- | + | Variante 3 (nicht Lernstoff): Eleganter mit [[https:// | |
- | Variante 3: Eleganter mit [[https:// | + | |
<code python> | <code python> | ||
b = ' | b = ' |