📚 LernsiteFach wählenKOLEFINAQUBAETFÜDIMAINFEINKMAEL ↗

🔢 Grundlagen · Datentypen · Operatoren · Binär

INF — Informatik (Python & Datenbanken) · Prof. Dr. Mehler · ~10 Aufgaben · Python + relationale Datenmodelle

Grundlagen · Datentypen · Operatoren · Binär

Status: GEPRÜFT, alle Ausdrucks-Ergebnisse mit Python 3.12 verifiziert.

Datentypen

Typ Wertebereich Beispiel
bool True oder False da = False
int ganze Zahl, keine Grenzen z = 1
float Kommazahl l = 0.75 · m = 5.97e24
str Zeichenkette g = "Hallo" / 'Hallo'
None kein Wert res = None

Bezeichner: Am Anfang ein Buchstabe oder _, danach auch Ziffern. Groß-/Kleinschreibung wird unterschieden (zZ). Umlaute vermeiden. Konstanten schreibt man per Konvention GROSS. Python kennt aber keine echten Konstanten, der Wert ist trotzdem änderbar.

a, b, c = 1, 2, 3   # a=1 b=2 c=3
a = b = c = 4       # 4 4 4

Typumwandlung & Prüfung

float(5)      # 5.0
int(2.75)     # 2  — schneidet ab, rundet NICHT
str(123.75)   # '123.75'
int("100")+1  # 101
float("2.7")  # 2.7
int("2.75")   # FEHLER
int("2,75")   # FEHLER (Komma)
int("Hallo")  # FEHLER
type(5)       # <class 'int'>

Runden statt abschneiden: round(x, 2).

Operatoren

Operator Bedeutung
+ - * / Grundrechenarten (+ auch für Strings)
// Ganzzahl-Division: 13 // 5 = 2
% Modulo (Rest): 13 % 5 = 3
** Potenz: 2 ** 3 = 8
== != gleich / ungleich (Inhalt)
< <= > >= Vergleiche
not and or logisch
is / is not dasselbe Objekt? (Identität, nicht Inhalt)
in / not in Element in Sammlung enthalten?
k1 = ["Apfel","Kiwi"]; k2 = ["Apfel","Kiwi"]
k1 is k2   # False (zwei Objekte)
k1 == k2   # True  (gleicher Inhalt)
t1 = ("W","S"); t2 = ("W","S")
t1 is t2   # True — gleiche Tuple-Literale legt Python nur einmal an
"pferde" in "Blumentopferde"  # True

Priorität: welcher Operator zuerst?

Prio Operator Bedeutung
1 ( … ) Klammern
2 ** Potenz — von rechts! 2**3**2 = 2**9 = 512
3 +x −x Vorzeichen
4 * / // % Punktrechnung
5 + − Strichrechnung
6 == != < <= > >= · is · in Vergleich
7 not Verneinung
8 and Und
9 or Oder
10 (Reihenfolge) gleiche Priorität → von links nach rechts: x−y−z = (x−y)−z

Ausdrucks-Trainer (Ergebnis + Datentyp)

Ausdruck Wert Typ
not ((20+17) == 40) True bool
11 // 2 + 2.1 7.1 float
3 // 2 * 2 2 int
3 / 2 * 2 3.0 float
(13 // 3 - 3) * 10 10 int
3 + -2 * -2 % 5 7 int
6 // (4 * 2) 0 int
6 / 4 * 2 3.0 float
2 ** 3 ** 2 512 int
-7 // 2 -4 int
-7 % 3 2 int
8 / 4 // 2 1.0 float
"3" + "4" '34' str
"ab" * 3 'ababab' str
"ab" + 3 FEHLER
{1,2} is {1,2} False bool
{1,2} in {1,2} False bool
💡 Fallen, die man nicht erraten kann
  • / liefert immer float, auch bei 8/4//2 = 1.0.
  • ** rechnet von rechts: 2 ** 3 ** 2 = 2**9 = 512 (nicht 64). Die einzige Ausnahme von „links nach rechts“.
  • -7 // 2 = -4, denn // rundet immer ab (Richtung minus unendlich), nicht zur Null hin.
  • -7 % 3 = 2: der Rest hat das Vorzeichen des Teilers.
  • 0.1 + 0.2 - 0.3 = 5.551115123125783e-17, also nicht 0 (Grund siehe Binär unten).

Dezimal → Binär (Single-Gleitkommazahl)

Erkennungsmerkmal der Aufgabe: „unter Angabe der Berechnungsschritte“, „nur die ersten beiden Schritte“. Exponent/IEEE-Bitmuster wird nicht verlangt.

Schritt 1 · Vorkommazahl: Divisionsmethode (durch 2 teilen, Reste von unten nach oben lesen). Beispiel 18:

18 : 2 = 9  Rest 0   ← letzte Ziffer
 9 : 2 = 4  Rest 1
 4 : 2 = 2  Rest 0
 2 : 2 = 1  Rest 0
 1 : 2 = 0  Rest 1   ← erste Ziffer
→ 18 = 10010

Probe: 16 + 2 = 18 ✓

Schritt 2 · Nachkommazahl: Multiplikationsmethode (mit 2 malnehmen, Vorkomma notieren und abziehen, von oben nach unten lesen). Beispiel 0,8:

0,8 · 2 = 1,6 → 1, weiter mit 0,6
0,6 · 2 = 1,2 → 1, weiter mit 0,2
0,2 · 2 = 0,4 → 0
0,4 · 2 = 0,8 → 0
0,8 · 2 = 1,6 → 1
0,6 · 2 = 1,2 → 1
0,2 · 2 = 0,4 → 0   (Stopp bei geforderter Stellenzahl, z. B. 8)
→ 0,8 = 0,1100 1100 … (periodisch)

Gesamt: 18,8 = 10010,11001100…₂

Warum das Ganze: Weil 0,8 binär periodisch ist, kann der Computer es nie exakt speichern → daher 0.1 + 0.2 - 0.3 ergibt 5.55e-17 statt 0. Das ist die typische Anschlussfrage.

Merk-Potenzen: 1 · 2 · 4 · 8 · 16 · 32 · 64 · 128 · 256. Nachkomma: ½ ¼ ⅛ = 0,5 · 0,25 · 0,125.