Im ersten Kapitel Python #1 : Installieren von Anaconda & Python haben wir die IDE Anaconda installiert und in der Anwendung Jupyter haben wir einen ersten Quellcode geschrieben und ausgeführt.
In diesem Kapitel möchte ich nun auf Zahlen und Strings eingehen.
Variablen
In unserem Beispiel “Hello World!” im ersten Kapitel haben wir bereits eine Variable angelegt (“greeting”). Nun wollen wir einmal in das Thema tiefer eintauchen.
Was sind Variablen?
Mit Variablen können wir Daten und Zustände in einer Anwendung benennen (für den Menschen lesbar) und speichern. Daher sollten diese einen für sich eindeutigen und sprechenden Namen tragen, d.h. wenn es die Begrüßung ist, kann man die Variable “greeting” nennen. Bei Listen und Aufzählungen wird der Plural verwendet, d.h. wenn es eine List mit Begrüßungen gibt, dann sollte die Variable “greetings” heißen.
Es ist nicht von Vorteil Variablen zbsp. mit n1, n2, n3 zu benennen, vieleicht weiß man heute noch was diese beinhalten aber in zwei Monaten oder aber ein anderer Entwickler wird sich da deutlich schwerer tun zu erahnen was damit gemeint sein kann.
Reservierte Wörter
Python hat einige reservierte Wörter, welche nicht als Variablennamen verwendet werden dürfen.
and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield,
Wenn man es versehentlich doch einmal macht, dann erhält man eine entsprechende Ausgabe vom Interpreter:
global = "Lutz" print(global) File "<ipython-input-6-6487bbc1d235>", line 1 global = "Lutz" ^ SyntaxError: invalid syntax
Die IDE unterstützt einem mit dem Hervorheben von reservierten Wörtern, somit ist Frühzeit zu erkennen, wenn man doch einmal so ein Wort verwendet.
Zahlen
Python unterscheidet nicht, ob eine Zahl ganzzahlig oder eine Gleitkommazahl ist.
Gleitkommazahlen werden immer mit einem Punkt getrennt, nicht wie der Name es vermuten lässt mit einem Komma.
Addieren
zahl1 = 1 zahl2 = 1.45 print(zahl1 + zahl2)
Subtrahieren
zahl1 = 4 zahl2 = 1.45 print(zahl1 - zahl2)
Multiplizieren
zahl1 = 4 zahl2 = 3 print(zahl1 * zahl2)
Dividieren
zahl1 = 4 zahl2 = 3 print(zahl1 / zahl2)
Beim Dividieren zweier oder mehrere Zahlen muss man darauf achten das man NICHT durch 0 teilen kann, diese einfache Rechenformel gilt auch in der Programmierung.
Wenn man dieses jedoch trotzdem macht, dann liefert der Interpreter eine entsprechende Fehlermeldung beim Ausführen des Programmes und zeigt auf die Zeile wo der Fehler auftritt.
zahl1 = 4 zahl2 = 0 print(zahl1 / zahl2) --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-4-1637ac763b93> in <module>() 1 zahl1 = 4 2 zahl2 = 0 ----> 3 print(zahl1 / zahl2) ZeroDivisionError: division by zero
Wurzelberechnen
Für die Wurzelberechnung gibt es eine zusätzliche Bibliothek welche man mit
import math
in den Quellcode einbinden muss damit man diese nutzen kann.
import math zahl = 144; print(math.sqrt(zahl))
Zahlen runden
Wenn man eine Gleitkommazahl hat und die Runden möchte, nutzt man die Funktion “round(<<ZAHL>>)”.
zahl1 = 1.4; print(round(zahl1)) zahl2 = 1.5; print(round(zahl2))
Die Funktion rundet eine Gleitkommazahl kaufmännisch nach der ersten Stelle auf bzw. ab. So wird aus der Zahl 1.4 eine 1 und aus 1.5 wird ein 2. Möchte man die Zahl nicht ganzzahlig runden, sondern nach einer bestimmten Kommastelle, so gibt man der Funktion einen zweiten Parameter mit welche die Position nach dem Komma repräsentiert.
zahl1 = 1.456; print(round(zahl1,2))
Strings
Um Zeichenketten zu speichern oder auszugeben nutzt man Strings. Auf diesen Objekten kann man dann verschiedene Funktionen ausführen, welche ich in den folgenden Kapiteln zeigen möchte.
name1 = "Stefan" name2 = "Lutz" print(name1)
Ein String wird immer eingeleitet von zwei Anführungszeichen und wird beendet von zwei Anführungszeichen.
String-Konkatination
Das Verbinden zweier Strings wird als String-Konkatination bezeichnet. Für diese Operation wird der “+” Operator verwendet.
greeting = "Guten Tag" name = " Stefan" print(greeting + name)
Jedoch kann man mit dieser Funktion nicht einen String und eine Zahl ohne weiteres ausgeben.
text = "Ich bin " alter = 38 text2 = "Jahre alt." print(text + alter + text2) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-14-3d6560db6061> in <module>() 2 alter = 38 3 text2 = "Jahre alt." ----> 4 print(text + alter + text2) TypeError: can only concatenate str (not "int") to str
Der Interpreter erkennt hier eine das nicht alle Werte vom Typ String sind und zeigt auf die Zeile wo der Fehler auftritt.
Wie lösen wir nun das Problem?
Es gibt mehrere Möglichkeiten das Problem zu lösen.
Lösung 1 – alle Werte als String
Am einfachsten ist es, alle Werte als String abzubilden. Das funktioniert genauso so lange gut, wie wir mit diesen Werten nicht rechnen wollen. Haben wir also eine Liste an Benutzer und zu diesen das Alter gespeichert könnten wir nun das Durchschnittsalter einfach berechnen, jedoch mit einem String kann man nicht mehr so einfach rechnen.
text = "Ich bin " alter = "38" text2 = " Jahre alt." print(text + alter + text2)
Lösung 2 – Zahl nach String umwandeln
Möchte man den Datentyp beibehalten, so wandelt man in der String-Konkatination den Zahlenwert in ein String um. Die Umwandlung erfolgt mit der Funktion “str(<<ZAHL>>)”. Die Funktion “str” erhält als Parameter eine Zahl und liefert als Rückgabe einen String. Diesen neuen String können wir nun direkt (wie im Beispiel) ausgeben oder aber wiederum in eine Variable speichern.
text = "Ich bin " alter = 38 text2 = " Jahre alt." print(text + str(alter) + text2)
Lösung 3 – print Funktion
Der Funktion “print” kann man beliebig viele Parameter übergeben und diese können wiederum wieder von beliebigen Datenformaten sein.
text = "Ich bin" alter = 38 text2 = "Jahre alt." print(text, alter, text2)
Als letzten Parameter kann man einen Separator übergeben, gibt man keinen an, so werden die Werte mit einem Leerzeichen getrennt.
text = "Ich bin" alter = 38 text2 = "Jahre alt." print(text, alter, text2, sep=",")
Die Ausgabe von diesem Beispiel wäre dann:
Lösung 4 – Ausgabe Formatieren
Eine weitere Lösung ist den gesamten Text in einer Variablen zu halten und für das Alter (in diesem Beispiel) einen Platzhalter zu setzen.
Dieser Platzhalter beginnt mit einem Prozentzeichen und ist gefolgt von der Zeichenlänge und einem Typparameter. Das Alter wird hier in einer Ganzzahl gespeichert somit ist der Typparamter ein kleines “d”.
text = "Ich bin %d Jahre alt." alter = 38 print(text % alter)
Auf die Formatierung von Texten werde ich später erneut eingehen darum möchte ich mit diesem letzten Beispiel schließen.
Funktionen auf Strings
Auf Strings kann man weitere Funktionen ausführen, um diese zu manipulieren.
upper & lower
Mit der Funktion “upper” werden alle Zeichen in Großbuchstaben umgewandelt.
text = "Ich bin %i Jahre alt." alter = 38 msg = text % alter print(msg.upper())
Ausgabe:
ICH BIN 38 JAHRE ALT.
Und die Funktion “lower” wandelt alle Zeichen in Kleinbuchstaben um.
text = "Ich bin %i Jahre alt." alter = 38 msg = text % alter print(msg.lower())
Ausgabe:
ich bin 38 jahre alt.
Es gibt noch diverse weitere Funktionen, eine ausführliche Liste und eine sehr gute Beschreibung findest du unter https://www.w3schools.com.