Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:zahlensysteme:binary_collection [2023-05-12 08:01] – [Parallel über zwei Strings] hofgf_informatik:zahlensysteme:binary_collection [2024-05-20 07:38] (aktuell) hof
Zeile 2: Zeile 2:
  
 Das Dossier enthält mehrere Programmieraufgaben, um Binärzahlen mit Python-Code zu manipulieren. Hier findest du Übungen, Hinweise und Ideen, wie die Umsetzung der Algorithmen in Python gelingen könnte. Das Dossier enthält mehrere Programmieraufgaben, um Binärzahlen mit Python-Code zu manipulieren. Hier findest du Übungen, Hinweise und Ideen, wie die Umsetzung der Algorithmen in Python gelingen könnte.
 +
 ### 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 12: Zeile 15:
  
 #### 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, müssen wir einen Listenzugriff programmieren, z.B. `liste[index]`. Mit dem Index kann auch gerechnet werden, um zum Beispiel jedes zweite Element oder die Elemente in umgekehrter Richtung zu erhalten.
  
 *Indirekte* Schleife über die Buchstaben in zwei gleichlangen Strings: *Indirekte* Schleife über die Buchstaben in zwei gleichlangen Strings:
Zeile 37: Zeile 42:
 </code> </code>
  
-Elegante Alternative mit [[https://docs.python.org/2.7/library/functions.html#zip|zip]]:+Elegante Alternative mit [[https://docs.python.org/2.7/library/functions.html#zip|zip]] (nicht Prüfungsstoff)_Zip_ ist das englische Wort für Reissverschluss, wir nehmen also abwechslungsweise von jedem Argument ein Element... 🤐 
  
 <code python> <code python>
Zeile 44: Zeile 50:
 for digit1, digit2 in zip(b1, b2): for digit1, digit2 in zip(b1, b2):
     print(digit1, digit2)     print(digit1, digit2)
-</code +</code> 
->+  
 #### Rückwärts #### Rückwärts
  
Zeile 68: Zeile 75:
 </code> </code>
  
-Noch kompakter: Die Funktion [[https://docs.python.org/2.7/library/functions.html#reversed|reversed]] (nicht Lernstoff) kehrt jede Sequenz (Liste, String) um:+Oder mit `while`: 
 + 
 + 
 +<code python> 
 +b = '111000' 
 +index = len(b) - 1  # Letzter gültiger Index 
 +while index >= 0: 
 +    digit = b[index] 
 +    print(digit) 
 +    index = index - 1 
 +</code> 
 + 
 + 
 +Noch kompakter: Die Funktion [[https://docs.python.org/2.7/library/functions.html#reversed|reversed]] (kein Prüfungsstoff) kehrt jede Sequenz (Liste, String) um:
  
 <code python> <code python>
Zeile 76: Zeile 96:
 </code> </code>
  
-Noch kompakter (aber auch leserlich?), die Verwendung von [[https://stackoverflow.com/questions/509211/how-slicing-in-python-works/509295#509295|String Slicing]] (nicht Lernstoff):+Noch kompakter (aber auch leserlich?), die Verwendung von [[https://stackoverflow.com/questions/509211/how-slicing-in-python-works/509295#509295|String Slicing]] (kein Prüfungsstoff):
  
 <code python> <code python>
Zeile 83: Zeile 103:
     print(d)     print(d)
 </code> </code>
 +
  
 #### Rückwärts über zwei Strings? #### Rückwärts über zwei Strings?
  
 ++++Lösung| ++++Lösung|
 +Am einfachsten mit `while`:
 +
 +<code python>
 +b1 = '111000'
 +b2 = '101010'
 +index = len(b1) - 1
 +
 +while index >= 0:
 +    digit1 = b1[index]
 +    digit2 = b2[index]
 +    print(digit1, digit2)
 +    index = index - 1
 +</code>
 +
 +Eleganter mit `reversed` und `zip` (kein Prüfungsstoff):
 +
 <code python> <code python>
 b1 = '111000' b1 = '111000'
Zeile 121: Zeile 158:
  
 summe = digit1 + digit2   # Absicht: Summe soll die Zahl 2 sein summe = digit1 + digit2   # Absicht: Summe soll die Zahl 2 sein
-print(summe)              # Resultat: Summe ist der String '11'+print(summe)              # Resultat: String-Verkettung zu '11'
  
-print(int(digit1) + int(digit2))  # Abhilfe: String in Zahl konvertieren+print(int(digit1) + int(digit2))  # Abhilfe: Strings in Zahlen konvertieren
 </code> </code>
  
Zeile 167: Zeile 204:
 a = 101       # eine Zahl a = 101       # eine Zahl
 b = '010'     # ein String b = '010'     # ein String
-c = a + b  # Fehler!+c = a + b     # Fehler!
  
 # Zahl umwandeln in String # Zahl umwandeln in String
  • gf_informatik/zahlensysteme/binary_collection.1683878465.txt.gz
  • Zuletzt geändert: 2023-05-12 08:01
  • von hof