lehrkraefte:blc:informatik:ffprg1-2019:basic-types

Zahlen vs. Strings (Zeichenketten)

Sie sollten schon 2 grundlegende Datentypen kennen. Können Sie den Unterschied zwischen a und b in folgendem Code erklären? Haben Sie eine Ahnung, wie der Inhalt der Variablen a und b im Speicher des Computers vorliegen?

a = 1234
b = "1234"

Lösungsvorschlag

Lösungsvorschlag

a enthält eine Zahl, mit der man Rechnen kann. Im Speicher liegt diese als Binärzahl vor. Gibt man die Zahl mit print aus, muss diese erst einmal in eine Dezimalzahl umgerechnet werden, wovon dann die entsprechenden Ziffern ausgegeben werden.

b enthält einen String (Zeichenkette). Die Ziffern (oder auch Buchstaben) selbst werden als binäre Zahlen abgespeichert, so hat z.B. die '1' den ASCII-Code 0b110001 = 49.

Dezimalzahlen (float) vs. Ganzzahlen (int)

Siehe dazu auch Seite 34 im Script http://jython.tobiaskohn.ch/PythonScript1.pdf

Regel: Wenn möglich mit Ganzzahlen arbeiten, weil diese exakt sind. In Schleifen grundsätzlich Ganzzahlen hochzählen und daraus die gewünschte Ganzzahl berechnen.

Stringoperationen

Was bewirken folgende Operationen?

  • String + String, z.B. "bla " + "bla"
  • String * int, z.B. "bla "*5
  • String[int], z.B. "abcd"[1]
  • String[range], z.B. "aberhalloda"[4:9]
  • String % list, z.B. "%d und %d gibt %d" % (3,5,8)

Zahloperationen

Grundsätzlich gilt: Ist einer der beteiligten Operanden ein float, ist das Resultat ebenfalls ein float. Sind beide Operanden vom Typ int, ist das Resultat ebenfalls vom Typ int, ausser bei der Division mit / (Division mit liefert dann das auf den nächst kleineren int abgerundete Resultat). * +,-,* bewirken, was man erwartet * / Division, Resultat ein float * Division, Resultat abgerundet auf nächst kleinere Ganzzahl. Ist nur vom Typ int, wenn beide Operanden vom Typ int.

  • ** Potenz, z.B. ist 2**0.5 $\approx \sqrt{2}$.
  • % Modulo-Operator, Rest der Ganzzahldivision, z.B. ist 5%3==2. Funktioniert auch mit float, so ist z.B. 3.14%1.0 ungefähr 0.14. Achtung: (3.4%1.0)==0.4 ist False, aber (3.4%1.0)==0.3999999999999999 ist True.
  • mit import math:
    • math.cos(math.pi)==-1.0
    • math.radians(180)==math.pi
    • math.log(math.e)==1.0
    • math.log(math.exp(2))==2.0
  • lehrkraefte/blc/informatik/ffprg1-2019/basic-types.txt
  • Last modified: 2019/02/10 09:32
  • by Ivo Blöchliger