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 (z ≠ Z). 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 4Typumwandlung & 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" # TruePrioritä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 |
/liefert immer float, auch bei8/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.