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"
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