Projekt Taschenrechner
Datentypen in Python
Wie versprochen, gehen wir es langsam an. Kopiert die nachfolgenden Zeilen in den Editor Eurer Wahl (rechts oben im Quellcode solltet Ihr einen Button finden) und lasst den Code ausführen:
zahl_1 = 12
zahl_2 = 3
summe = zahl_1 + zahl_2
differenz = zahl_1 - zahl_2
produkt = zahl_1 * zahl_2
quotient = zahl_1 / zahl_2
print('Summe = ', summe)
print('Differenz = ', differenz)
print('Produkt = ', produkt)
print('Quotient = ', quotient)
Bei mir kommt dann folgendes heraus:
Was haben wir hier vor uns? In den Zeilen 1 und 2 im Code sind zwei Variablen
deklariert, diese sind beide vom Typ "Integer" (int
).
Integer-Werte sind Ganzzahlen, also Zahlen ohne Komma.
Woher weiß ich, dass die Datentypen vom Typ int
sind? Mit der
Funktion type()
kann man sich den Datentyp einer Variable ausgeben
lassen:
type(name_der_variablen)
Erweitern wir den Code entsprechend, um das auszuprobieren:
zahl_1 = 12
zahl_2 = 3
print('Datentyp zahl_1 =', type(zahl_1))
print('Datentyp zahl_2 =', type(zahl_2))
summe = zahl_1 + zahl_2
differenz = zahl_1 - zahl_2
produkt = zahl_1 * zahl_2
quotient = zahl_1 / zahl_2
print('Summe = ', summe, " ist vom Typ : ", type(summe))
print('Differenz = ', differenz, " ist vom Typ : ", type(differenz))
print('Produkt = ', produkt, " ist vom Typ : ", type(produkt))
print('Quotient = ', quotient, " ist vom Typ : ", type(quotient))
Die Ausgabe dazu lautet:
Was gibt es also noch für Datentypen?
Wenn wir uns die Ausgabe noch einmal betrachten, sehen wir einen Punkt im Wert des
Quotienten (4.0
). Die Variable "quotient
" ist
also vom Typ "float
", übersetzt Fließl;kommazahl.
Wobei das Komma hier kein Komma, sondern ein Punkt ist (das ist in den meisten
anglo-amerikanischen Regionen der Fall und da die Syntax von Python auf Englisch
beruht, ist das nur konsequent).
Probieren wir es aus. Machen wir uns den Spaß und kopieren nachfolgenden Code in den Editor:
string_1 = '1'
string_2 = "zwei"
zahl_mit_komma = 5,2
zahl_mit_punkt = 5.2
zahl_mit_komma_2 = (5,2)
liste_1 = ["Apfel", "Birne", "Zitrone"]
set_1 = {"Apfel", "Badewanne"}
dict_1 = {"deutsch":"Apfel", "english":"apple"}
boolean_1 = True
print('Datentyp string_1 =', type(string_1))
print('Datentyp string_2 =', type(string_2))
print('Datentyp zahl_mit_komma =', type(zahl_mit_komma))
print('Datentyp zahl_mit_komma_2 =', type(zahl_mit_komma_2))
print('Datentyp zahl_mit_punkt =', type(zahl_mit_punkt))
print('Datentyp liste_1 =', type(liste_1))
print('Datentyp set_1 =', type(set_1))
print('Datentyp dict_1 =', type(dict_1))
print('Datentyp boolean_1 =', type(boolean_1))
Schauen wir auf die Ausgabe:
Wir sehen die Typen
"str"
, "tuple"
,
"float"
, "list"
,
"set"
, "dict"
und
"bool"
.
"str"
steht für String, also Zeichenketten, die
Buchstaben und Zahlen beinhalten können. Diese werden mit den einfachen oder
doppelten Anführungsstrichen ausgedrückt.
5,2"
wird nicht als Zahl, sondern als
"tuple"
gespeichert. Ein Tupel ist eine Kombination aus mehreren
Einträgen, in unserem Fall 2, nämlich die "5"
und die
"2"
. Wenn wir
zahl_mit_komma = 5,'zwei'
oder
zahl_mit_komma = 5,'zwei', 2
schreiben würden, wäre es also immer noch ein Tupel.
Dann haben wir noch die Typen "list"
für Listen,
"set"
für Sammlungen, "dict"
für Dictionary und "bool"
für Boolean. Im Verlauf
brauchen wir die Listen und die Booleans, daher gehe ich auf die anderen Typen hier
nicht weiter ein.
Listen sind ganz praktisch, hier können wir logisch zusammengehörende Informationen ablegen, diese um neue Elemente erweitern oder bestehende Elemente löschen.
Dazu ein kurzer Ausflug:
zu_kaufen = ["Brot","Milch","Eier","Käse","Wrust"]
print("Liste 1 = ", zu_kaufen)
zu_kaufen.append("Bananen")
print("Liste 2 = ", zu_kaufen)
zu_kaufen.sort()
print("Liste 3 = ", zu_kaufen)
zu_kaufen.remove("Wrust")
print("Liste 4 = ", zu_kaufen)
zu_kaufen.insert(4,"Wurst")
print("Liste 5 = ", zu_kaufen)
zu_kaufen.pop()
print("Liste 6 = ", zu_kaufen)
zu_kaufen.pop(3)
print("Liste 7 = ", zu_kaufen)
print("Eintrag an 2. Stelle = ", zu_kaufen[1])
zu_kaufen.sort(reverse = True)
print("Liste 8 = ", zu_kaufen)
Schauen wir auf die Ausgabe:
Zeile 3: zu_kaufen.append("Bananen") # -->
fügt ein Element am Ende an
Zeile 5: zu_kaufen.sort() # -->
sortiert die Liste, geht nur bei gleichen Datentypen!
Zeile 7: zu_kaufen.remove("Wrust") # -->
löscht das erste Element, das dem Eintrag entspricht
Zeile 9: zu_kaufen.insert(4,"Wurst") # -->
fügt das Element an der 5. Stelle hinzu (Beginn bei 0!)
Zeile 11: zu_kaufen.pop() # -->
löscht das letzte Element
Zeile 13: zu_kaufen.pop(3) # -->
löscht das 4. Element der Liste
Zeile 15: zu_kaufen[1] # -->
liefert das 2. Element der Liste
Zeile 17: zu_kaufen.sort(reverse = True) # -->
sortiert absteigend
So viel zu den Listen. Es gäbe zwar noch wesentlich mehr zu den Listen zu sagen, das sprengt aber hier den Rahmen.
Den Typ "bool"
kennen wir ja auch schon aus der Steuerung unseres Spiels:
Die Variable "spielen"
dient uns also zur Unterscheidung und ist damit so etwas wie ein Schalter.
Zurück zum Rechnen, wie oben beschrieben klappt die Rechnung nur mit Variablen vom Typ Integer
oder Float. Strings
können nicht berechnet werden. Der nachfolgende Code erzeugt einen Fehler, die beiden Variablen sind als Strings deklariert:
zahl_1 = '12'
zahl_2 = "3"
print('Datentyp zahl_1 =', type(zahl_1))
print('Datentyp zahl_2 =', type(zahl_2))
summe = zahl_1 + zahl_2
differenz = zahl_1 - zahl_2
produkt = zahl_1 * zahl_2
quotient = zahl_1 / zahl_2
print('Summe = ', summe, " ist vom Typ : ", type(summe))
print('Differenz = ', differenz, " ist vom Typ : ", type(differenz))
print('Produkt = ', produkt, " ist vom Typ : ", type(produkt))
print('Quotient = ', quotient, " ist vom Typ : ", type(quotient))
Die Ausgabe dazu:
Einzig die Addition funktioniert für Strings, es führt aber zu einer nicht wirklich erwünschten Ausgabe. Kommentieren wir die anderen Rechnungen mal aus:
Man sieht, das Ergebnis ist "123"
, wobei es nicht die Zahl 123
ist, sondern die Zeichenkette "12"
und das Zeichen "3"
hintereinander ist.
Klarer wird es mit folgender Kombination:
Das Ergebnis ist jetzt der String "12drei"
. Damit kann natürlich nicht gerechnet werden.
Um die Berechnung mit dem Typ Float
zu demonstrieren, können wir aus der "12"
eine "12.0"
machen, das Ergebnis ist dann:
Damit sind jetzt alle Ergebnisvariablen auch vom Typ "Float"
. Das soll es dann auch zum Thema Datentypen gewesen sein.
Inhaltsverzeichnis:
1. Vorwort2. Das Projekt
3. Vorarbeiten
4. Projekt Snake
4.1. Der Funktionsumfang
4.2. Die Planung der Umsetzung
4.3. Das Coden
4.3.1. Datentypen in Python
4.3.2. Eingabe von Zahlen
4.3.3. Rechnen mit der Funktion
eval()
4.3.4. Das Fenster mit
PySimpleGui
4.3.5. Die Button
5. Abschluss