Teil 3: Datentypen
Lernziele
- Die vier Grundtypen
int,float,strundboolunterscheiden- Den Typ eines Werts mit
typebestimmen- Werte mit
int,floatundstrin andere Typen umwandeln- Erklären, warum sich nicht alle Typen miteinander verrechnen lassen
- Eingaben mit
intoderfloatumwandeln, um damit zu rechnenNeue Befehle und Werte:
type()gibt den Typ eines Werts zurückint()wandelt in eine ganze Zahl umfloat()wandelt in eine Kommazahl umstr()wandelt in eine Zeichenkette umTrueundFalsesind die beiden Wahrheitswerte
Datentypen
Jeder Wert in Python hat einen Typ. Der Typ bestimmt, welche Werte möglich sind und welche Operationen erlaubt sind.
Die vier Grundtypen
intganze Zahlen , , (von engl. integer) floatZahlen mit Nachkommastellen , (Punkt statt Komma) strZeichenketten "Hallo"(von engl. string, in Anführungszeichen)boolWahrheitswerte True,False(nur diese zwei, gross geschrieben)
Mit type finden wir den Typ eines Werts heraus:
print(type(3))
print(type(2.7))
print(type("Hallo"))
print(type(True))
Typen lassen sich nicht beliebig mischen
Nicht jede Operation ist mit jedem Typ möglich. Das folgende Programm stürzt ab:
zahl = 10
text = "Guten Morgen"
print(zahl + text)
Python weiss nicht, was dabei herauskommen soll, eine Zahl oder ein Text. Damit es funktioniert, wandeln wir die Zahl zuerst in eine Zeichenkette um:
zahl = 10
text = "Guten Morgen"
print(str(zahl) + text)
Umwandeln zwischen Typen
str(x)macht ausxeine Zeichenkette. Das klappt immer.
int(x)macht daraus eine ganze Zahl. Bei einemfloatwird zur Null hin abgeschnitten, bei einem String muss dieser eine gültige ganze Zahl enthalten.
float(x)macht daraus eine Kommazahl.Klappt eine Umwandlung nicht, gibt es einen Fehler, zum Beispiel bei
int("Hallo").
Eingaben umwandeln
input liefert das Eingetippte als Zeichenkette zurück, auch wenn es wie eine Zahl aussieht. Das folgende Programm stürzt deshalb ab:
alter = input("Wie alt bist du? ")
print(alter + 1)
Python soll hier die Zeichenkette "15" mit der Zahl 1 addieren, und das geht nicht. Wir wandeln die Eingabe zuerst um:
alter = int(input("Wie alt bist du? "))
print(alter + 1)
Wie alt bist du? 15
16
Eingaben einlesenDie Umwandlung schreibt man direkt um das
inputherum:zahl = int(input("Gib eine ganze Zahl ein: "))preis = float(input("Gib einen Preis ein: "))Für Text brauchst du nichts umzuwandeln, dort genügt
name = input("Name: ").
WebTigerPython ist grosszügig, die Prüfung nichtIn WebTigerPython läuft oft auch
alter = input("Wie alt bist du? ")und danachalter + 1, weil die Umgebung die Eingabe von sich aus in eine Zahl verwandelt. Verlass dich nicht darauf. In gewöhnlichem Python und in unserer Prüfungsumgebungexam.netgibt es an dieser Stelle einenTypeError. Schreibe die Umwandlung mitintoderfloatdeshalb immer selbst hin.
Aufgaben
Aufgabe 3.1Bestimme für jeden Ausdruck den Typ des Ergebnisses, zuerst im Kopf, dann mit
type.
Aufgabe 3.2Wir können Zahlen nicht mit Text addieren. Finde durch Ausprobieren heraus, welche Kombinationen von
int,floatundstrsich mit+verbinden lassen und welchen Typ das Ergebnis hat. Halte deine Ergebnisse in einer Tabelle fest.Was haben sich die Entwickler von Python wohl dabei überlegt?
Aufgabe 3.3Untersuche die Funktion
int. Was passiert, wenn der String
- (a) eine negative Zahl enthält (
"-2"),- (b) Leerzeichen enthält (
" 2 "und"2 0"),- (c) eine Kommazahl enthält (
"2.0"),- (d) gar keine Zahl ist (
"Hallo")?Und was passiert bei
int(3.8)bzw.int(-2.8)?
Aufgabe 3.4Schreibe ein Programm, das mit
input()zwei Zahlen einliest und ihre Summe ausgibt. Denk an die Umwandlung.
Weitere Aufgaben
Zusatzaufgabe 3.5Berechne im Kopf, was
0.1 + 0.2ergibt. Lass es dann Python ausrechnen. Recherchiere, woher der Unterschied kommt.
Zusatzaufgabe 3.6Vergleiche die beiden Summen. Sind sie gleich? Überlege dir, woher ein Unterschied kommen könnte.
Zusatzaufgabe 3.7Gibt es neben
int,float,strundboolnoch weitere Typen? Tipp: Überlege dir, worauf dutypesonst noch anwenden könntest, zum Beispiel auf
Zusatzaufgabe 3.8Schreibe ein Programm, das eine positive Kommazahl auf die nächste ganze Zahl rundet, ohne
roundzu verwenden. Bestimme dazu die Nachkommastelle und entscheide mit einemif, ob auf- oder abgerundet wird.