Impressum

Listen und Tuppel in Python

Wir wissen bereits was Variablen sind und wie wir mit ihnen umgehen können. Wir wollen beispielsweise eine Einkaufsliste simulieren und erstellen dafür zwei Items, welche auf der Liste stehen:

item1 = "Apfel"
item2 = "Milch"

Jetzt haben wir aber zwei Probleme, einmal haben die beiden Variablen keinen Kontext zueinander. Wenn wir beispielsweise noch unseren Kontostand als Geld speichern wollen ist die Beziehung zwischen den beiden Items die gleiche untereinander, wie die zur Variable Geld. Zum anderen besteht die Frage, was ist wenn wir während das Programm läuft ein weiteres Item hinzufügen wollen, unsere Einkaufsliste also erweitern wollen?


Wir könnten zwar versuchen uns mit einem String zu behelfen, vielleicht so:

einkaufListe = "Apfel, Milch"

Und anschließend neue Items in etwa so hinzufügen:

einkaufListe += ",Toilettenpapier"

Das wäre aber unfassbar umständlich, spätestens beim Löschen eines Items, aber keine Angst wir haben eine viel bessere Lösung!

Listen:

Mithilfe von Listen können wir das viel besser darstellen und in etwa so könnte es aussehen:

einkaufsListe = ["Apfel", "Milch"]

Genauso wie eine “normale” Variable definieren wir auch eine Liste, jedoch schließen wir die einzelnen Elemente in eckigen Klammern ein. Ausgeben können wir die Liste intuitiv wie eine normale Variable:

einkaufsListe = ["Apfel", "Milch"]
print(einkaufsListe)
print(einkaufsListe[0])

In der zweiten Zeile geben wir einfach die gesamte Liste mit Hilfe von print aus. In der dritten Zeile geben wir ein einzelnes Element aus der Liste aus. Das 0 Element. Das 0?

Ja Programmierer fangen bei Listen nicht mit dem ersten Element an sondern beim Nullen. Das hat sogar einen tieferen Sinn, aber dafür müsste ich stark ausholen, vielleicht zu einem anderen Zeitpunkt. Wichtig ist jetzt nur sich zu merken, dass wir beim nullten Element anfangen zu zählen.

Somit gibt die 3. Zeile, in der wir das nullte Element ausgeben, unseren ersten Eintrag in der Einkaufsliste aus: Apfel.

Etwas hinzufügen:

Wir können nun aber auch leicht etwas zu unserer Liste hinzufügen: Mithilfe der append-Funktion. Diese Funktion können wir aber “nicht einfach so” aufrufen, so wie wir print, range oder eine der Funktionen die wir bereits definiert haben aufrufen. Die Funktion append gehört direkt zu der Liste und muss auch so von ihr aufgerufen werden. Das sieht dann so aus:

einkaufsListe = ["Apfel", "Milch"]
print(einkaufsListe)
einkaufsListe.append("Toilettenpapier")
print(einkaufsListe)

Wir löschen ein Element in der Liste hierbei ähnlich wie wir eins auslesen und fangen auch hier bei 0 an zu zählen

Bei Listen müssen aber nicht alle Elemente vom gleichen Datentyp sein, so wie bei unseren Beispielen alle Einträge Strings sind. Wir können auch mischen:

liste = ["Milsch", 13, 13.4, [1,2]]

Hier haben wir nun unsere Liste. Das erste Element ist ein string, das zweite Element ist eine ganze Zahl also ein int, das dritte eine Kommazahl, also ein float und das vierte Element ist eine weitere Liste. Alles kein Problem! Auf die Elemente in der Liste greifen wir übrigens so zu:

Range

Ähnlich wie bei Schleifen können wir auch bei Listen eine Range an Elementen ausgeben, was wie folgt aussieht:

liste = ["a", "b", "c", "d", "e"]
print(liste[2:10])

Wir definieren erst eine Liste mit 5 Elementen. Anschließend sagen wir, dass wir alle Elemente von 2. bis zum 10. ausgegeben haben wollen. Aber wir haben gar kein 10. Element? Ist aber egal dann eben alle die gehen. Aber welche Buchstaben geben wir hier aus?

liste = ["a", "b", "c", "d", "e"]
print(liste[2:4])

Vom 2. Element, c, bis einschließlich dem 3., also geben wir hier ‘c’ und ‘d’ aus. Aber nicht den eigentlichen vierten Buchstaben. Wir können aber auch alle Elemente bis x ausgeben:

print(liste[:4])

Tupel:

Neben Listen gibt es aber noch andere Arten wie wir unsere Daten strukturieren können. Eine gängige Methode sind Tupel. Ein Tupel können wir beispielsweise so definieren:

tupel = (3,5)
print(tupel[0])
tupel[1] = 10

in der ersten Zeile definieren wir das Tupel. Das sieht hierbei genauso aus, wie eine Liste nur das wir hier mit runden Klammern und nicht mit eckigen Klammern arbeiten.

In der zweiten Zeile geben wir das Element an der Stelle 0 aus, das läuft genauso wie bei Listen. 

In der dritten Zeile versuchen wir einen Wert der Liste zu überschreiben. Betonung liegt auf versuchen, denn wenn wir diesen Code versuchen auszuführen, streikt unsere Python. Aber wir versuchen hier nicht auf eine falsche Art und Weise im Tupel ein Item zu ändern, es geht überhaupt nicht! Das ist auch der große Unterschied zwischen Tupeln und Listen. Tupeln sind sogenannte immutable Objekte, also unveränderliche Objekte. Wir können also nicht nur nicht die Werte im Tupel ändern, wir können auch keine hinzufügen oder welche löschen. Wenn wir ein Tupel mit (3,5) erstellen, dann ist in diesem Tupel 3,5 drin, komme was da wolle!

Warum Tupel:

Aber warum überhaupt Tupel benutzten? Sind doch schlechter?! Nicht ganz !

Einmal sind Tupel schneller, ich kann schneller auf die einzelnen Elemente zugreifen, als bei einer Liste. Um das zu erklären, müsste ich auch hier weiter ausholen. Daher musst du mir das jetzt einfach glauben =). Das alleine ist aber selten wirklich ein Thema, in den meisten Fällen ist Geschwindigkeit kein Problem und bevor wir an unsere Datentypen rangehen (Liste oder Tupel, float oder int) sollten wir uns lieber Gedanken darüber machen, ob unserer Algorithmus “richtig” ist.
Der in meinen Augen größere Vorteil von Tupeln ist, dass es eine höhere Bindung zwischen den Elementen gibt. Was? Ein Beispiel!:
Angenommen wir wollen ein Videospiel programmieren und wollen die Position des Spielers in einem drei dimensionalen Raum speichern. Eine Liste könnte da helfen.

Vec3= [10,4,1]

Jedoch gibt es jetzt einen Schönheitsfehler, wir können innerhalb des Programms ein Element löschen oder ein weiteres hinzufügen. Beides macht aber für uns keinen Sinn, wir können sowohl mit einer Liste, die eine weitere Koordinate hat, als auch mit einer Liste mit einer Koordinate weniger nichts anfangen. Denn wir wollen ja eine Position im 3D Raum darstellen, nicht im 2D Raum und auch nicht im 4D Raum =).

Hier wäre es deutlich klüger ein Tupel zu benutzten und wenn die Position des Spielers sich verändert das Tupel zu überschreiben:

#Erste position
vector3 = (10,4,1)
#Spieler bewegt sich
vector3 = (10,5,2)

Zusammenfassung

Listen sind ein weiteres, absolut, basisches Element für unsere Programme. Neben Einkaufslisten gibt es auch noch viele weiter potenzielle Anwendungsfälle. Inventar in einem Videospiel, Klausuren in einer Klasse, Inhalt eines Raumes und noch viele mehr. Neben Listen gibt es noch andere “listenartige” Datentypen wie z.B. Tupel, aber auch noch andere, die ihre eigenen Einschränkungen und Erweiterungen mit sich bringen. Für das Verständnis dieser hilft es sehr, grundsätzlich zu verstehen wie Listen funktionieren.

Funktionen in Python

Eigentlich kennen wir bereits Funktionen und haben diese auch verwendet. Die Print-Funktion ist -Oh wunder!- eine Funktion genauso wie es auch range ist.
Aber was ist den nun eine Funktion?
Eine Funktion ist allgemein gesagt ein Programmbereich, welcher abgekapselt definiert wird und im Programm selbst dann aufgerufen werden kann. Aber ein Beispiel sollte hier eher helfen:

def machWas():
   print("Ich wurde in der Funktion aufgerufen")

Wir können die Funktion grob in zwei Teile aufteilen. Funktionskopf, sowie Funktionsrumpf oder -körper.
Der Kopf ist die erste Zeile, also das Keyword “def”, welches ankündigt, dass wir nun eine Funktion definieren. Danach steht der Name der Funktion und in runden Klammern geben wir die Parameter an. In unseren Fall also erstmal nichts. Abgeschlossen wird der Kopf mit Doppelpunkten. 

Nun müssen wir genauso wie bei den Schleifen und bei den if-Abfragen den eigentlichen Rumpf also den Inhalt der Funktion, durch Einrücken, kenntlich machen.
In diesen geben wir dann mit der uns bekannten Print-Funktion einen Text aus.

Wenn wir diesen Code jetzt so ausführen, was passiert wohl?
Garnichts! Aber warum? Wir haben die Funktion jetzt erstmals nur definiert, aber noch nicht aufgerufen. Dieser Aufruf sieht in unseren Fall dann so aus:

machWas()

Folglich konnten wir somit den Print-Befehl ausführen und in unserer Konsole steht “ich wurder in der Funktion aufgerufen”.

Mit Parametern:

Die Funktionen die wir bis jetzt kennen lernen durften hatten immer etwas in den Klammern stehen. Können wir das auch? Natürlich:

def rechneMirWasAus(zahl1, zahl2):
   print("das ergebnis ist " + str(zahl1 + zahl2))
rechneMirWasAus(3,5)

Hier definieren wir eine Funktion namens rechneMirWasAus. Vielleicht nicht der gängigste Name, aber das soll uns für das Beispiel nicht stören.

Anders als bei dem Beispiel zuvor sind aber die runden Klammern nicht leer. Wir schreiben hier zwei Parameter rein, also Variabeln welche vom Aufrufer der Funktion definiert werden und wir nachher in der Funktion verwenden wollen. Wir rechnen die beiden Zahlen zusammen und geben das Ergebnis mit Print aus. Da wir die Funktion danach mit den Parametern 3 und 5 aufrufen werden, wird wie erwartet, “das Ergebnis ist 8” ausgegeben.

Mit Return Wert:

Aber was ist wenn ich das Rechenergebnis wirklich ausgegeben haben möchte oder mit diesem dann noch weitere Rechnungen durchführen möchte, ohne das Ergebnis vorher auszugeben? Die Range-Funktion hat uns ja auch was zurückgegeben. Auch das können wir folgendermaßen durchführen:

def rechneMirWasAus(zahl1, zahl2):
   return zahl1 + zahl2

Wir sagen quasi “das was bei rechneMirWasAus mit den parametern 3 und 5 rauskommt, das übergibst du an Print”, sprich gebe es in der Konsole aus.

Mehrere Return Werte:

Da wir mehrere Parameter übergeben können, kommt vielleicht auch die Frage auf, ob wir mehrere return Werte zurückgeben können, und ja können wir!:

def test():
   return 3,5
print(test())

Das Ergebnis sieht vielleicht ein wenig merkwürdig aus. (3,5).Die Funktion gibt uns nun ein Tupel zurück, welches die beiden Return Werte in sich hat. Aber was ein Tupel genau ist und wie man mit diesen arbeiten kann, wird zukünftig noch ein Beitrag folgen =)

Globale Variabeln:

Wir nehmen mal an wir haben folgenden oder ähnlichen Code:

zahl = 10
def funktion():
   zahl = 5
funktion()
print(zahl)

Welchen Wert wird die Variable nach dem Aufruf der Funktion “funktion” haben, 10 oder 5?

Durch das Ausführen des Codes bemerken wir, dass 10 als Ergebnis rauskommt. Das Ändern der Variable innerhalb der Funktion hat also keinen Einfluss. Das liegt daran, dass wir in der Funktion nicht die außerhalb der Funktion definierte Variable der Zahl überschreiben, sondern eine neue Variable mit dem gleichen Namen definieren. Bei der “zahl” in der Funktion reden wir von einer lokalen Variable, die außerhalb der Funktion ist eine globale Variable. Die lokale “zahl” existiert nur solange, wie die Funktion läuft. In dem Moment, wo sie zu Ende ist, gibt es die Variable auch nicht mehr. Die globale Variable hingegen existiert bis zum Ende des Programms. Aber was ist wenn wir nun in der Funktion auf die globale Variable zugreifen wollen? Wenn wir die globale Variable nur lesen wollen, aber nicht verändern, dann können wir das ganz einfach. Der nachfolgende Code funktioniert ohne Problem und gibt einfach die global definierte Zahl aus:

zahl = 10
def funktion():
   holder = zahl
   print(holder)
funktion()

Aber was ist wenn wir nun in der Funktion die Zahl verändern wollen? Dann kommt das Keyword global zum Einsatz:

zahl = 10
def funktion():
   global  zahl
   zahl = 5
funktion()
print(zahl)

Wir sagen am Anfang der Funktion mit dem Keyword “global”, dass wir die globale Variable auch ändern wollen, der Print am Ende gibt somit 5 und nicht 10 aus.

Wie man Funktionen “richtig” schreibt:

  • Funktionen dürfen genauso wie auch Variablen nicht irgendwie heißen. Sie dürfen nicht mit Zahlen anfangen und auch ansonsten gelten die gleichen Regeln wie beim Definieren von Variablen.
  • Außerdem muss die Variable zuerst definiert und erst dann aufgerufen werden, anders herum ergibt es einen Fehler.
  • Zwar ist es möglich auf globale Variablen mit dem Keyword “global” zuzugreifen und zu verändern, aber das sollte eher die Ausnahme sein da andernfalls der Code verwirrend werden kann.
  • Funktionen wie auch Variablen werden häufig in der sogenannten Schreibart camelcase geschrieben. Also werden die Wörter zusammengeschrieben, das erste Wort klein, alle anderen groß. So wird aus “Rechne mir mal aus” → “rechneMirMallAus”. Ich würde nicht sagen, dass man camelcase zwangsläufig schreiben muss. Es ist nur wichtig eine einheitliche Notation zu haben und nicht jede Funktion und Variable in einem anderen Stil zu schreiben

Das wars auch wieder für heute. Du hast nun endlich das Geheimnis hinter Funktionen kennen gelernt und kannst nun eigene definieren und aufrufen!
Vielen dank fürs Lesen und bis zum nächsten Mal.

Python Setup

Python  installieren.

Nachdem du hoffentlich durch den letzten Teil neugierig geworden bist, kommen wir heute leider zu etwas weniger Spannenden, aber notwendigem. Dem Setup, also dem Vorbereiten damit du auch wirklich mit Python anfangen kannst. Zum Glück ist das nicht ganz so schwer, also lass es schnell hinter uns bringen =)


DISCLAIMER:

Ich werde das Tutorial aus der Sicht eines Windows Users machen. Die meisten Dinge, wenn nicht sogar alle, sollten aber genauso oder so ähnlich auch auf einem Gerät mit Apple funktionieren.

In der Gesamten Tutorial Reihe werde ich immer Python3 verwenden, die Unterschiede zwischen Python3 und Python2 sind in einigen Gebieten größer in anderen kleiner. Da aber Python2 seit 2020 nicht mehr unterstützt wird werde ich nur python3 benutzten. Aber Eventuell werde ich nochmal einen eigenen kleineren Artikel schreiben wo die unterschiede zwischen den beiden Versionen ist =). Ich empfehle dir ebenfalls Python Version 3 herunterzuladen. Dazu gehen wir einfach auf die Offizielle Seite: https://www.python.org/. Gehe anschließend auf den Downloads Tab und installiere die neueste Version von Python, in meinem Fall 3.7.1.

Aber du kannst auch schon eine neuere Version haben. Die Installation selbst kannst du einfach durchklicken, nur am Ende lohnt es sich nochmal kurz aufzupassen. Du wirst gefragt werden, ob du Python zur System Variabel hinzufügen willst. Machen wir das, können wir nachher Python überall in der cmd aufrufen, egal welcher Ordner. Solltest du das Häkchen nicht angeklickt haben ist das nicht schlimm, du kannst noch Python im Nachhinein hinzufügen. Dazu aber vielleicht später mehr.

Nach der Installation klicken wir unten links auf die Windows Taste und suchen gleich nach Python. Wenn wir Python aufrufen ploppt ein schwarzes cmd ähnliches Fenster auf, welches etwa so aussehen kann:

Wir lassen uns aber durch das was da steht nicht verunsichern und schreiben sofort unsere erste Zeile Python Code, print(“Hallo Welt !”). Nachdem du das getippt oder kopiert und eingefügt hast, sollte die Konsole etwa so aussehen:

Falls du mit der Windows cmd vertraut bist kannst du dir nun den Text editor deines Vertrauens schnappen und schon loslegen! Solltest du nicht soviel Erfahrung mit der Windows Konsole haben oder einfach kein Freund von ihr sein solltest du eine IDE installieren.

Eine IDE installieren

IDE steht für Integrierte Entwicklungsumgebung und ist quasi ein Programm welches uns dabei hilft zu programmieren und zu entwickeln. Für Python, sowie für jede andere Sprache auch, gibt es gleich mehrere. Ich benutzte PyCharm, aber auch Eclips kann für Python umgerüstet werden, falls man davon überzeugt ist. Um PyCharm zu installieren gehen wir auch hier auf die offizielle Seite : https://www.jetbrains.com/pycharm/.

Wir gehen auf Download now und müssen uns entscheiden, ob wir die professional oder ob wir die community Version installieren wollen. Die community version ist vollkommen kostenlos und reicht auch vollkommen aus.

Bei der Installation gibt es eigentlich wenig zu beachten und wir können uns so durchklicken. Nach der Installation starten wir auch gleich Pycharm. Beim ersten Starten des frisch installierten Pycharm werden wir gefragt ob wir Settings importieren wollen. Wir haben noch keine, also nein. Anschließend können wir uns ein UI Theme auswählen, das ist pure Geschmacksache. Da ich es schöner und vor allem beim Nachts arbeiten angenehmer für die Augen finde nehme ich das Dunkle.  

jetzt klicken wir immer weiter auf next bis wir etwa so ein Fenster sehen

Hier wählen wir New Projekt aus. Anschließend können wir uns einen Namen für unser Projekt ausdenken und eingeben. Bestätigen tun wir das ganze mit dem blauen Button create. In meinen Fall heißt mein Projekt ErstesProjekt, du kannst aber deins auch anders nennen. Beim Interpreter sollte unser vorher installierter Python interpreter automatisch erkannt werden. Sollte dies nicht der Fall sein (warum auch immer) musst du ihn manuell hinzufügen und bestätigen.

Jetzt sollte dein Pycharm in etwa so aussehen :

Anschließend können wir einen Rechtsklick auf das Projekt machen. Ein kleines Menü ploppt auf und wir wählen den ersten Punkt, New. Unter diesem wiederum wählen wir Python File aus

Nun benennen wir unser File. Ich nenne meins mall main.py. Der Name ist hier jedoch auch wieder egal, das “.py” sollte nicht kriegsentscheidend sein, jedoch hilft es einfach Ordnung zu halten. also dein File könnte zum Beispiel “killervirus.py” heißen oder “testTesttest.py” oder auch einfach “main.py” =).

Am Ende bestätigen wir und haben ein leeres File vor uns. Aber nicht lange! wir schreiben wieder unser  print(“Hallo Welt !”) rein.

Anschließend führen wir das File aus in dem wir oben auf Run gehen und run ‘main’ (oder wie auch immer dein File jetzt heißt) drücken.

Nun sollte ein kleines Fenster aufklappen am unteren Ende und unser fröhliches Hallo Welt ausgeben.

Und das wars dann auch schon. Ein wenig anstrengend, aber wenn’s läuft dann läufts. Solltest du irgendwelche Probleme bei der Installation haben, kannst du mir dies gerne mitteilen. Ich werde mein Bestes geben das Problem zu lösen und vielleicht wird diese Anleitung dann auch noch länger =).

 

Sollte jedoch alles bei dir geklappt haben, bist du jetzt bereit mit Python so richtig loszulegen. Wenn du magst kannst du nun gleich mit den Basics von Python und dem Programmieren allgemein starten. Zu einem sehr essentiellen Thema, Variablen in Python, gibt es  auch schon bald ein Tutorial [LINK].

 

Ansonsten vielen Dank fürs Lesen und bis zum nächsten Mal.

Python Variablen und Strings

Beim letzten Mal haben wir Python und Pycharm (hoffentlich) erfolgreich installiert.

Zum Testen des ganzen Setup haben wir das wohl einfachste Programm was möglich ist geschrieben, Hallo Welt ! Heute wollen wir uns den dazu geschriebenen Code mal genauer ansehen und gucken was denn Variablen sind.

print(“Hallo Welt")

Bei print handelt es sich um eine sogenannte Funktion, was das genau ist interessiert uns aber vorerst nicht. Aktuell ist es für uns nur wichtig zu wissen dass einer Funktion Parameter übermittelt werden können. In dem Fall unser “Hallo Welt”. Die doppelten Anführungszeichen sagen dabei aus, dass es sich hierbei um einen String handelt. Ein String ist eigentlich nur eine Zeichenkette und wir können hier auch was anderes als Hallo Welt eingeben. Zum Beispiel:

print(“4 + 4 “)

Das Ergebnis ist wie erwartet der String den wir im print angegeben haben.

Lassen wir aber nun die Anführungszeichen weg:

print(4 + 4 )

behandelt Python die Eingabe als eine Rechnung die es ausführt und gibt das Ergebnis dieser aus: 8. Zum Rechnen in Python sag ich aber im nächsten Tutorial noch was.

Kommentare:

Später wenn du größere Programme schreibst kann dein Code eventuell ziemlich verwirrend sein. Vor allem wenn das letzte Mal als du drüber geschaut hast schon ein paar Wochen her ist. Mit Hilfe von Kommentaren kannst du deinen Code kommentieren und dokumentieren:

print(“Hallo Welt “) # ich werde gar nicht ausgeführt !

Kommentare definieren wir mit einer #. Würden wir den Text nicht auskommentieren, würde das Programm abstürzen.

Variablen:

Variablen sollten eigentlich alle noch aus dem Matheunterricht können, aber trotzdem sag ich es nochmal. Variablen sind quasi Platzhalter für Zahlen innerhalb einer Rechnung. Dies stimmt auch in Python, nur das sie in Python Platzhalter oder Behälter für alles sind! Nicht nur Zahlen können in einer Variable gespeichert werden sondern auch Strings (also Zeichenketten). Aber Hier einfach mal Code dazu:

x = 42
print(x)

hallo = “Hallo Welt”
print(hallo)

Simpel und elegant !

In der ersten Anweisung definieren wir eine Variable mit dem Namen x und weisen ihr den Wert 42 zu. Anschließend geben wir sie aus.

Das gleiche machen wir auch mit der Variable hallo, ihr weisen wir nur den Wert “Hallo Welt” zu. Auch hier geben wir sie danach aus. Wie du siehst können wir Variablen in Python alle gleich behandeln, vollkommen egal was ihr Wert ist.

Hinweis am Rande.

Auch wenn Python die inneren Werte einer Variable relativ egal sind, so ist der Name der Variable es nicht unbedingt. Dieser sollte nämlich keine Sonderzeichen oder ü und ä besitzen.

§Ü” = 42 #geht nicht

Mit Zahlen anfangen kann eine Variable auch nicht, mitten drin ist jedoch okay.

7Tage = “Hat die Woche  !“  	#geht nicht
ipv4  = “Das internet Protokoll ! #geht

So das wars dann auch erstmal wieder. Beim nächsten Mal rechnen und spielen wir mit Variablen rum und lassen uns Input vom User geben.

Was wenn ?

If Abfragen in Python

Beim letzten mall haben wir uns den Input des Users gegeben und haben mit diesem. gerechnet. Das Problem war jedoch das der rechen Operator zum rechnen immer gleich war.

zahl1 = input("Die erste Zahl bitte ")
zahl2 = input("Die zweite Zahl bitte ")

print(int(zahl1) + int(zahl2))

Wir können eingeben was wir wollen. Das Programm wird niemals die beiden Zahlen multiplizieren oder dividieren. Es wird immer Addiert.

Aber es wäre doch schick wenn wir vom Programm gefragt werden welche Operation wir ausführen wollen, oder? Realisieren können wir das mit if Anweisungen. Eine solche kann in etwa so aussehen:

string = "Hallo"

if string == "Hallo" :
	print("Der string ist Hallo !")

Wir definieren erst eine Variable namens string und weisen ihr den Wert “Hallo” zu.

Nachdem if geben wir in derselben Zeile noch eine Bedingung an. In diesem Fall ist die Frage ob die Variable den Wert “Hallo” besitzt. Dies geschieht mit dem Vergleichsoperatoren  == dieser gibt ein ein True zurück wenn der Inhalt auf der Linken Seite gleich dem auf der Rechten Seite ist.

Diese Anweisung schließen wir mit einem [:]. Anschließend machen wir einen Absatz und danach kommt der Code der ausgeführt werden soll wenn die Bedienung stimmt.

Was soll dieser Absatz ?

In anderen Sprachen gibt es sowas wie IF Abfragen natürlich auch. Die Besonderheit Bei Python ist das der Block der ausgeführt werden soll wenn die Bedingung Wahr ist mit Einrückungen dargestellt wird. Solche Einrückungen werden wir später auch noch woanders sehen. Zum Beispiel bei Funktionen oder Schleifen. Solche Einrückungen machen wir entweder mit einem Tabulator oder mit einer beliebigen Anzahl an Leertasten. Wichtig ist nur das die Anzahl dieser, im gesamten Programm gleich bleiben. Weil das unübersichtlich wird empfehle ich eher Tabulatoren zu verwenden.

else, was wenn nicht ?

Wir können jetzt schonmal darauf reagieren wenn die Bedingung wahr ist. Mit else Blöcken können wir einen alternativ Block ausführen wenn die Bedingung nicht Wahr ist.

zahl = 42
if zahl == 43:
	#Dieser teil wird nicht ausgefuhrt
	print("Zahl ist 43 !")
else:
	#Dieser block wird ausgefuhrt
	print("Zahl ist nicht 43 !")

Wie wir schon bereits gelernt haben wird der if Block dann ausgeführt wenn wir die Bedingung wahr ist, also wenn zahl gleich 43 ist. In diesem Fall wird jedoch der else Block ausgeführt da die Bedienung nicht zutrifft.

Else mit Bedingung, elseif

Eine letzten fall von if Verzweigung gibt es noch. Mit Elseif, in Python elif abgekürzt. Können wir eine Bedingung an das else binden. Ein Beispiel !

zahl = 41
if zahl == 43:
	#Dieser teil wird nicht ausgefuhrt
	print("Zahl ist 43 !")
elif zahl = 42
	#Dieser block wird ausgefuhrt
	print("Zahl ist 42 !")
else:
	print("Die zahl ist nicht 42 und nicht 43 ! ")

Beachte hierbei das zahl nicht mehr 42 sondern 41 ist. Das Programm gibt somit den else Block aus. Änderst du zahl jedoch zu 42 wird der elif Block ausgeführt. Der else Block wird immer dann ausgeführt wenn keiner der if Anweisungen bzw. elif Anweisungen zutrifft. Du kannst übrigens so viele elif aneinander reihen wie du willst.

Der Rechner

Nun wo wird es aber auch mal Zeit unser neues Wissen über If Anweisungen auch richtig zu nutzen ! Wir werden nun den Rechner vom letzten mal dynamischer gestallten in dem wir mit input und if Abfragen verschiedene Rechen Operationen ausführen.

zahl1 = int(input("Die erste Zahl bitte "))
zahl2 = int(input("Die zweite Zahl bitte "))

operator = input("Wie sollen die Zahlen verrechnet werden ? addieren (+), multiplizieren (*), subtrahieren (-), dividieren (/)")

Als erstes holen wir uns die Eingaben des Benutzers und machen die Zahlen auch gleich zu ints.

ergebnis = 0

if operator == "+":
	ergebnis = zahl1 + zahl2
elif operator == "-":
	ergebnis = zahl1 - zahl2
elif operator == "/":
	ergebnis = zahl1 / zahl2
elif operator == "*":
	ergebnis = zahl1 * zahl2
else:
	print("Die Eingabe war falsch, bitte nochmal !")

print(ergebnis)

Anschließend machen wir mehrere elseif Abfragen um zu entscheiden was den der Nutzer nun will und reagieren darauf. Am ende geben wir das Ergebnis aus.

Das wärs dann auch wieder, im heutigen post haben wir unseren Rechner schicker gemacht und uns if Abfragen angeguckt. Beim nächsten mal machen wir den Rechner noch schicker und beschäftigen uns mit Schleifen Vielen dank fürs Lesen und bis dahin.

Schleifen

Heute Erkläre ich wie Schleifen in Python funktionieren

10 mall Hallo Welt bitte !

Ganz simpel gesagt können wir mit Schleifen Programmteile beliebig oft wiederholen. Sollten wir zum Beispiel (warum auch immer) 10x Hallo Welt in der Konsole ausgeben wollen, können wir entweder 10 print Anweisungen verwenden oder einfach folgendes schreiben:

i = 0
while i < 10:
	print("Hallo Welt !")
	i = i + 1

Nachdem wir die Variable i definiert und auf 0 gesetzt haben, benutzen wir das KeyWord while und geben genauso wie bei den if Bedingungen einen Vergleich an. Wir fragen hier aber nicht nach einen festen Wert, sondern nur ob i allgemein kleiner als 10 ist. Sollte das der Fall sein, wird der Block in der Schleife ausgeführt. Im Block selbst geben wir “Hallo Welt” aus und (sehr wichtig) rechnen i plus 1. Sollten wir dies nicht tun bleibt i immer 0 also kleiner als 10 und die Schleife läuft ewig weiter.

Die for schleife und die range Funktion

Oben haben wir die While Schleife verwendet, neben dieser gibt es aber noch eine Weitere. Wollen wir eine Aktion X mal oft wiederholen, so wie im ersten Beispiel, können wir die for Schleife verwenden.

Um diese zu verwenden brauchen wir aber ein grobes Verständnis der range Funktion. Die range Funktion erwartet zwei Zahlen und gibt uns ein Range Objekt zurück. Was ein Objekt genau ist, interessiert uns aber erstmal nicht. Das Range Objekt ist quasi ein Zahlenbereich von x bis y. Also anstatt unserer Hilfsvariable i hoch zu zählen benutzen wir die range Funktion mit unserem Zahlenbereich.

for i in range(0, 10):
	print("Hallo Welt !")

Diese Schleife macht exakt das Gleiche wie unsere Schleife zuvor. i ist hierbei immer der aktuelle Durchlauf. Also beim ersten Durchlauf 0, beim zweiten Durchlauf 1, beim dritten Durchlauf 2 und so weiter … Man beachte hierbei, dass range(0, 10) uns den Zahlenbereich von 0 bis 9 zurückgibt. Unsere Schleife läuft also 10 mal, nur wird nie der Durchlauf 10 erreicht, bzw. wird i niemals 10 sein.

break und continue

Es kann mall vorkommen das wir aus einer Schleife springen wollen und diese abrechen. Dafür verwenden wir das break statement.


for i in range(0,10):
	if i == 5:
		break
	print("Hallo Welt")

In diesem Beispiel wird nur 5 mal, statt 10 mal “Hallo Welt” ausgegeben. Da sobald i gleich 5 ist wir aus der Schleife springen.


for i in range(0,10):
	print("Hallo Welt")
	if i % 2 == 0:
		continue
	print(i)

In diesem Beispiel geben wir 10 mal Hallo Welt aus. Sollte i nicht durch 2 glatt geteilt werden können, geben wir i nochmal aus. Wenn i durch 2 glatt teilbar ist springen wir wieder zum Anfang der Schleife und überspringen somit das i ausgeben wird.

Bedeutung vom %

Eventuell bist du ein wenig irritiert vom % Zeichen. Dies ist ein ganz normaler Rechen-Operator wie + oder *. Das % steht für Modulo und bedeutet so viel wie geteilt rechnen auf Grundschulniveau. Modulo gibt uns also den Rest aus der nicht geteilt werden kann, zumindest hieß es so in der Grundschule. 3 Modulo(%) 2 ergibt also 1. 4 Modulo(%) 2 ist 0, da kein Rest übrig bleibt.

Der Datentyp boolean.

Sowohl bei den if, als auch bei den Schleifen Anweisungen haben wir stets eine Variable angegeben. Aber Moment mal, wir haben doch stets irgendwelche Gleichungen aufgestellt wie kann das sein? Mehrere Operatoren in Python geben einen booleschen Wert zurück, statt einer Zahl oder ähnliches.

print(42==42)

So gibt dieses print Funktion einfach ein True aus. Wir können aber auch einer Variable True aber auch False direkt zuweisen

boolFalse = False # false wert
boolTrue  = True  # true wert

interessant wird der Boolean wenn wir in in andere Datentypen casten

bool(1) # True
bool(0) # False
bool("Hallo Welt") # True
bool("") #False

Dieses casten passiert bei den Schleifen und bei den if Abfragen implizit. Daher können wir eine endlos Schleife so schreiben:

while 1:
	print("Hey")

Solltest du übrigens im Terminal unter Unix Systemen bzw der CMD unter Windows arbeiten kannst du mit STR + C dein Programm abrechen.

Boolean invertieren

Wenn wir überprüfen wollen ob etwas nicht der Fall ist können wir den boolean auch invertieren. Das machen wir indem wir ein not vor dem boolean schreiben.

b = False

if not b:
	print("in dem if drin !")

Eigentlich würde der Code nicht ausgeführt werden, da wir aber invertieren kommen wir doch rein. Das funktioniert natürlich auch mit den bereits bekannten Vergleichen.

zahl = 42

if not zahl == 43:
	print("in dem if drin !")

Und und oder

Es kommt durchaus mall vor das wir mehrere Bedingungen zusammen hängen wollen. Zum Beispiel das wir prüfen wollen ob die Zahl in einem gewissen Bereich ist.

for i in range(0,100):
	if i > 50 and i < 60:
		print(i)

Die Schleife selbst ist relativ trivial, sie zähl von 0 bis 100. Das Neue ist in dem Code im if Statement. Wenn i größer (>) als 50 UND kleiner (<) als 60 ist, geben wir i aus.

Und Überraschung, Überraschung. Das Gleiche gibt es auch noch mit oder hier ist das Keyword nur eben or. Ein Beispiel !

i = 1
if i == 1 or i == 42:
	print("i ist 1 oder 42 !")

i = 42
if i == 1 or i == 42:
	print("i ist 1 oder 42 !")

In beiden Fällen haben wir die gleiche Abfrage und beide sind Wahr obwohl wir i im laufe des Programmes überschreiben.

Operatoren zum vergleichen

Zu ende nochmal eine Aufführung verschiedener Operatoren die uns alle samt eine booleschen Wert zurückgeben

print(True == True) # True
print(not True == True) # False
print(True == True and True == False) # False
print(True == True or True == False)  # True
print(42 > 1)  # True
print(42 < 1)  # False
print(42 >= 1) # True
print("Hallo Welt" < "Hallo") # False
print("Hallo Welt" > "Hallo") # True
print("Hallo" == "Hallo")    # True

Zu gutter letzt !

Beim letzten mall haben wir mit if Abfragen unseren eigenen kleinen Python Rechner gebaut. Nun machen wir diesen nochmal ein wenig schöner mit einer Schleife.

ergebnis = 0
nochmal = True

while nochmal:
	zahl1 = int(input("Die erste Zahl bitte "))
	zahl2 = int(input("Die zweite Zahl bitte "))

	operator = input("Wie sollen die Zahlen verrechnet werden ? addieren (+), multiplizieren (*), subtrahieren (-), dividieren (/), (E) zum abrechen")

	if operator == "+":
		ergebnis = zahl1 + zahl2
	elif operator == "-":
		ergebnis = zahl1 - zahl2
	elif operator == "/":
		ergebnis = zahl1 / zahl2
	elif operator == "*":
		ergebnis = zahl1 * zahl2
	elif operator == "E":
		nochmal = False
	else:
		print("Die Eingabe war falsch, bitte nochmal !")
	print(ergebnis)
print("Bis zum nästen mal")

Wir fügen eine nochmal Variabel hinzu und geben ihr den Wert True. Gibt der Benutzer statt eines Rechen Operator ein ‘E’ ein setzten wir nochmal auf False. Was dazu führt das wir die Schleife verlassen und das Programm beendet wird.

So das wars dann auch wieder zu schleifen. Ich hoffe es gefiel und bis zum nächsten mal =).

Python, weitere Dinge zu Variablen.

Im heutigen Post sag ich noch ein wenig mehr zu Variablen und rechne mit diesen ein wenig rum.

Im letzten Post haben wir bereits das Grundprinzip von Variablen angeschaut und haben schon eine Rechnung mit diesen gemacht.

rechnung = 4 + 4 

Das Ergebnis, welches in der Variable rechnung gespeichert wird ist natürlich 8. Wir können aber auch alle anderen Rechen Operationen in Python ausführen:

minus   = 4 - 5 # -1
plus    = 4 + 5 #  9
geteilt = 4 /2  #  2
mall    = 4 * 2 #  8

Beim letzten mall haben wir die Grundlagen zu Variablen gelernt. Heute sag ich noch ein Paar Sachen dazu und wir rechnen mit vom User eingegeben Zahlen, auf gehts !

Allgemein können wir in Python alle Grundrechenarten (und sogar noch mehr !) mit einen einzigen Symbol darstellen, das sieht in etwa so aus:

minus   = 4 - 5 # -1
plus    = 4 + 5 #  9
geteilt = 4 /2  #  2
mall    = 4 * 2 #  8

einfach oder ? Wir müssen aber keine festen Zahlen benutzen sondern können auch Variablen dafür nehmen:

zahl1 = 4
zahl2 = 5
ergebnis = zahl1 + zahl2
print(ergebnis) # ergebnis ist 9

Was ist aber wen wir jetzt wollen das der Nutzer selber 2 Zahlen eingeben kann, die wir dann verrechnen ?

Wir benutzen einfach die Funktion input,  ganz einfach ! So wie schon bei der print Funktion können wir input einen Variable übergeben. Das besondere ist nur das uns input auch eine Variable zurück liefert, nämlich die Eingabe des Benutzers. Aber wie wärs mit ein wenig Code.

zahl1 = input("Die erste Zahl bitte ")
zahl2 = input("Die zweite Zahl bitte ")

print(zahl1 + zahl2)

Wie wir sehen will input  einen Parameter/Variable und gibt uns einen zurück. Das Programm wartet nun bei jeder einzelnen input Anweisung auf eine Eingabe des Benutzers. Nachdem dies getan wurde geht das Programm weiter.

Wir lassen uns also zwei Zahlen geben, rechnen diese zusammen und geben das Ergebnis so aus.

Die Krux an der Geschichte

Wenn du denn obigen Code ausprobiert hast ist dir das Problem wahrscheinlich schon aufgefallen sein das hier etwas nicht richtig ist.

Wenn wir zum Beispiel 4 als erstes und 2 als zweiten Parameter eingeben. Dann erwarten wir eine 6 als Antwort. Wir kriegen aber 42 als Antwort, wie kann das sein ? Das liegt an dem DatenTyp der Rückgabe. Dieser ist nämlich String und mit diesen kann Python auch “rechnen”.

string1 = "Hallo "
string2 = "Welt"

print(string1 + string2) # gibt "Hallo Welt" aus !

stringZahl1 = "4"
stringZahl2 = "2"
print(stringZahl1 + stringZahl2) #gibt also 42 aus 

Aber wie umgehen wir das nun ?

Recht simpel, den auch hier gibt es wieder eine Funktion, int. Die Funktion int macht nichts anderes als aus einer Variablen irgendeines Typen einen eine gante Zahl zu machen. Aber warum heist die Funktion so ? Weil Zeichenketten String und Ganz Zahlen (also nicht Komma Zahlen) Int oder Integer gennant werden.

Einen DatenTypen in einen anderen umzuwandeln nennt man übrigens oft casting oder Type Casting.

Mit diesen neuen Wissen sieht dan unser Code in etwa so aus:

zahl1 = input("Die erste Zahl bitte ")
zahl2 = input("Die zweite Zahl bitte ")

print(int(zahl1) + int(zahl2))

Bevor wir die Variablen zusammen rechnen machen wir sie zu Integers und kriegen somit das “korrekte” Ergebnis raus.

So das war jetzt vielleicht ein wenig viel Input auf einmal, aber probier ruhig ein wenig rum mit dem gelernten. Kann zum Beispiel String auch mit anderen Rechenoperationen bearbeitet werden ? Ansonsten hoffe ich es hat gefallen und hoffe das wir uns beim nächsten mall wiedersehen.

Programmieren lernen, welche Sprache ?

Du willst programmieren lernen? Zu recht! Es macht Spaß, man lernt logisches Denken und die Jobs für Entwickler werden auch nicht weniger.

Aber welche Sprache? Es gibt hunderte die (fast) alle ihre Daseinsberechtigung haben.

Sie alle haben ihre eigene Sicht auf die Dinge und ihren eigenen Style. Allgemein bin ich der Meinung das für eine Anfänger die Sprache selbst nicht so wichtig ist. Wenn du programmieren lernen willst solltest du sowieso mit der Zeit über den Tellerrand hinausschauen und auch mal andere Sprachen ausprobieren.

Beim Programmieren ist es nämlich nicht das entscheidende in welcher Sprache du schreibst. Du wirst kein besserer Programmieren alleine dadurch das du irgendwelche Kommandos auswendig lernst oder in dem du schneller als andere auf die Tasten tipeln kannst. Darum geht es nicht beim Programmieren.

Beim Programmieren geht es um etwas vollkommen anderes, es geht ums verstehen. Um das erkennen und verstehen von zusammenhänge innerhalb eines Systems und um das Logische, strukturierte Lösen von Problemen,

löse erst das Problem und schreibe dann deinen Code !

Gut zu wissen, aber mit dieser Einstellung wird die Frage danach welche Sprache du lernen sollst nicht einfacher oder? Alles klar,  ich mach sie dir einfach, lern Python !

Python der Messias !

Wenn ich dir rate Python zu lernen rede ich natürlich nicht davon das du Parsel lernen sollst und mit schlangen quatscht wie Harry Potter sondern natürlich die Programmiersprache !

Aber warum Python? Abgesehen davon das ich ja eben erklärt habe das es eigentlich nicht so wichtig ist mit welcher Sprache du anfängst sondern nur das du anfängst bittet Python in meinen Augen viele Vorteile.

Python ist höchst aktuell, die Developer base wächst jedes Jahr und es gibt unzählige Einsatzmöglichkeiten. Also egal für was genau du dich interessiert, Python kann fast immer gut benutzt werden und aufgrund der vielen User wirst du mit Sicherheit Hilfe im Internet finden.

-Python wird bei penetration testing zum Schreiben von Hacking tools entwickelt.

-Im Bereich Industrie 4.0 wird es verwendet um microController zu Programmieren und smart homes zu realisieren.

-Es existieren bereits sehr gut ausgebaute tools für die Erstellung von künstlicher Intelligenz und Maschinen learning auf Basis von Python.

Und zu guter letzt ist Python eine einfach zu lernende Sprache mit der man sich einen guten Programmierstil angewöhnt, selbst wenn man später andere Sprachen lernt!

Also mach dir keinen Kopf und fang einfach an,  es erwartet dich die Wunderbare Welt des Programmierens  und Python wird dein Schlüssel und Tor dazu sein !

Hier geht es auch schon gleich zu meinen ersten Turorial, Python richtig installieren.