Python #2: Variablen, Zahlen und Strings

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.

zwei Zahlen in Python addieren
zwei Zahlen in Python addieren

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:

Ausgabe mehrerer Werte mit der Funktion "print"
Ausgabe mehrerer Werte mit der Funktion „print“
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.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert