2. Einstieg in Python¶
2.1. Installation¶
Python ist ein Anwendungsprogramm welches frei für alle gängigen Plattformen verfügbar ist.
Laden Sie für die Übung eine Python Distribution für Ihr Betriebssysteme aus dem Internet herunter. Wir empfehlen Anaconda von Continuum Analytics (Python Version 3.X NICHT 2.X!). Dieses Paket gibt es gratis zum Download für alle gängigen Betriebssysteme.
Wichtig
Installieren Sie für die Übung eine Python Distribution für Ihr Betriebssystem. Wir empfehlen Anaconda von Continuum Analytics (Python Version 3.X NICHT 2.X!). Dieses Paket gibt es gratis zum Download für alle gängigen Betriebssysteme.
Idealerweise nehmen Sie Ihren Laptop oder ihr Tablet zur Übung mit. Notfalls läuft Python auch auf dem Table oder Smartphone.
Achten Sie bitte bei der Installation darauf, dass der Pfad, in dem Sie Anaconda installieren keine Leerzeichen oder Umlaute enthält!
- Windows
Nach erfolgreicher Installation sollten Sie Anaconda im Startmenü sehen (siehe Abbildung Windows-Startmenü).
- Linux
- Unter Linux ist Python im Allgemeinen bereits automatisch installiert. Eventuell müssen einige Zusatzpakete dazu installiert werden.
- MacOS
- Verwenden Sie wie unter Windows Anaconda.
2.1.1. Python Shell¶
Es gibt mehrere Möglichkeiten Python zu verwenden. Die einfachste Möglichkeit ist eine Eingabeaufforderung auch Shell oder Terminal oder Konsole genannt. Diese wird in Windows durch Klicken von Anaconda Prompt (oder Anaconda Powershell Prompt) im Windows-Startmenü gestartet (siehe Abbildung Anaconda Powershell Prompt).
Diese wird in Windows durch Klicken von Windows > Anaconda > Anaconda Powershell Prompt im Windows-Startmenü (siehe oben) gestartet.
Unter Linux-Systemen öffnet man einfach ein Terminal.
In beiden Fällen startet man Python durch Eingabe des Befehls:
> python
Danach befindet man sich in der Python Shell (gekennzeichnet durch >>>
).
Jetzt kann man Befehle einfach eintippen und mit ENTER
bestätigen um diese auszuführen:
>>> print("Hello World")
Hello World
Wann immer wir zukünftig in den Beispielen einen Code Block mit >>>
beginnen, wird die Python Shell verwendet.
In der Anaconda Powershell Prompt kann man auch direkt Python Programmtext starten welcher zuvor in einem File gespeichert wurde (z.B. hello.py). Ein solches File wird in Python Skript File genannt (genaueres später):
> python hello.py
Alle Befehle in diesem File werden nacheinander ausgeführt. Dies funktioniert nur wenn Sie sich im selben Verzeichnis wie das Skript hello.py
befinden. Dies kann mit dem dir
(=list directory) Befehl in der Anaconda Powershell Prompt kontrolliert werden. Ansonsten muss man
vorab mittels cd
(= change directory) – Befehl in der Anaconda Powershell Prompt ins entsprechende
Verzeichis wechseln z.B.
> cd C:\Users\Student\Documents\MeinHelloVerzeichnis
> python hello.py
2.1.2. Python IDE - Spyder¶
Wesentlich komfortabler ist jedoch ein IDE (integrated development enviroment). Dieses vereinigt ein Anaconda Prompt, Python Skript Editor, etc.
Anaconda stellt das IDE Spyder zur Verfügung um Python zu verwenden. Spyder startet man über das Windows-Startmenü oder ähnliches.
Danach wird wie in der Abbildung Python IDE Spyder gezeigt, ein Graphisches User Interface (GUI) angezeigt.
Hinweis
Lernen Sie mit Spyder umzugehen da dieses IDE bei den Übungen verwendet wird!
Diese GUI enthält im Wesentlichen 3 Bereiche:
- links: einen Editor zum Erzeugen von Python Skript Files (z.B. hello.py)
- rechts oben: den Inhalt von Variablen (Genaueres später)
- rechts unten: die IPython-Konsole (analog zu Anaconda Powershell Prompt, jedoch mit
In [2]:
undOUT [2]:
Python Skript Files werden mittels Menu-Run (grünes Dreieck) gestartet. Die Ausgabe des Programmes erfolgt rechts unten.
Hinweis
Probieren Sie es einfach aus!
- Tippen Sie
print("Hello World")
in die Python IDE Spyder IPython-Konsole ein, bestätigen sie mitENTER
. - Erzeugen Sie ein File hello.py mit
print("Hello World")
als Inhalt und starten Sie die Skriptausführung mit Menu-Run.
Wird im Folgenden ein Python Skript File verwendet, schreiben wir kein >>>
sondern einfach:
Beispiel:
a=5
b=a*a
print ("Hello World, b=" ,b)
Ausgabe:
Hello World, b= 25
Bemerkung
Mit dem Befehl print(..)
wird Information in der ausgegeben.
Unter Python 2 sind keine Klammern erforderlich (print ".."
).
2.1.3. Python 2 oder 3?¶
Es gibt derzeit zwei Python Versionen. Diese unterscheiden sich zwar, Standardanwender werden den Unterschied aber kaum merken. Das Problem beim Umstieg:
- Python 2 ist weit verbreitet, jedoch gibt es zukünftige keine Weiterentwicklung.
- Python 3 ist semantisch korrekter, bietet neue Features und wird aktiv weiterentwickelt.
Empfehlung:
- Neue Entwicklungen: ausschließlich auf Python 3.
- Alte Entwicklungen: mit dem Skript
2to3
von Python 2 auf 3 portieren
In dieser LVA verwenden wir ausschließlich Python 3.
2.2. Python Hilfe¶
Bemerkung
Alle Python-Skripts dieses Skriptums finden Sie unter https://ilsb.git-pages.tuwien.ac.at/nbm/gdp2022/src/ zum Download.
Es gibt eine Vielzahl an Python Büchern, Dokumentationen, Tutorials, Onlinekursen, etc. Um die Auswahl zu erleichtern hier einige Tipps:
Bücher
- A. Bell: Get Programming: Learn to code with Python, 1. Auflage, Manning Publications, 2018, https://www.manning.com/books/get-programming#toc Online Buch.
- Python 3: Lernen und professionell anwenden, Reihe: mitp Professional, von Michael Weigend. Sehr gutes, leicht lesbares Buch, umfangreich.
- Online Tutorials / Bücher
- Der Klassiker ist sicherlich das Python Tutorial. Dieses gibt es in vielen Sprachen (Python Tutorial Deutsch).
- Ein guter Kurs findet sich unter Python Kurs.
- Wer sich schnell einen Überblick verschaffen möchte, findet das unter After Hours Programming (auf Englisch).
- Sonstiges
- Auf der WWW Seite Python for Progammers gibt es Links zu Python Material für alle Geschmäcker.
2.3. Python als Taschenrechner¶
Die Python (genauer die IPython-Konsole im Python IDE Spyder oder auch die Anaconda Powershell Prompt) kann wie ein Taschenrechner eingesetzt werden. Eine ausführliche Beschreibung findet sich im Python Tutorial.
- Starten Sie das Python IDE Spyder oder Anaconda Powershell Prompt. Im folgenden verwenden wir in Python IDE Spyder die IPython-Konsole). Tippen Sie einfach die folgenden Befehle ein und bestätigen Sie die Eingabe mit
ENTER
. Vorab Anmerkungen zu den Beispielen. Die Syntax Ausdrücke sind einfach: - Die Operatoren
+
,-
,*
und/
wirken wie gewohnt. - Die Hochzahl startet mit
**
. Z.B. Wurzel**0.5
. - Klammern können zur Gruppierung benutzt werden.
- Das Symbol
#
erzeugt Kommentare. - Mit bestätigt man die Eingabe.
- Ein
...
deutet darauf hin, dass eine weitere Eingabe mit Einrückung erwartet wird.
- Die Operatoren
Ein- und Ausgaben in der IPython-Konsole sehen wie folgt aus:
In [2]: 2 + 2
Out[2]: 4
In [3]: # Dies ist ein Kommentar
In [4]: 2 + 2 # und dies ist ein Kommentar in derselben Zeile wie Code
Out[4]: 4
In [5]: (50 - 5 * 6) / 4
Out[5]: 5.0
In [6]: 8 / 5 # Achtung: Brüche gehen in Python 2 verloren, nicht in 3
Out[6]: 1.6
In [7]: 8 // 5 # Ganzzahldivision
Out[7]: 1
In [8]: 9**0.5 # Wurzel
Out[8]: 3.0
Das Gleichheitszeichen ('='
) wird benutzt um einer Variablen einen Wert
zuzuweisen.
In [10]: width = 20
In [11]: height = 5 * 9
In [12]: width * height
Out[12]: 900
Variablen müssen „definiert“ sein, bevor sie benutzt werden können, sonst tritt ein Fehler auf.
In [13]: # Versuch eine undefinierte Variable abzurufen
In [14]: n
Traceback (most recent call last):
File "<ipython-input-14-ab0680a89434>", line 1, in <module>
n
NameError: name 'n' is not defined
2.4. Python Skripte¶
Bislang haben wir Anweisungen (Befehle) in der IPython-Konsole getestet. Ein vollständiges Python Programm nennt man Skript. Was ist das?
- Eine Textdatei mit der Endung .py welche
- alle Anweisungen eines Programms enthält und
- mittels IDE (z.B. Spyder) erstellt bzw. getestet werden kann.
Unser erstes Python Skript (kreis.py
):
Hinweis
Alle Beispielfiles finden Sie unter https://ilsb.git-pages.tuwien.ac.at/nbm/gdp2022/src/ Laden Sie alle Skripte herunter und öffnen Sie das jeweilige Skript mit Spyder.
Hinweis
Mein Tipp: Zuerst versuchen die Beispiele selbst zu lösen, danach die richtige Lösung durchsehen!
# -*- coding: utf-8 -*-
"""
File : kreis.py
Author : D.H. Pahr
Date : 24.06.2020
Mein erstes Python Skript zur Berechnung von
Umfang und Flaeche eines Kreises.
"""
# Definition von Variablen
radius = 1.5
pi = 3.14159
# Berechne ...
umfang = 2 * radius * pi
flaeche = radius**2 * pi
# Ausgabe
print(__doc__)
print(" Radius = ", radius)
print(" Umfang = ", umfang)
print(" Flaeche = ", flaeche)
Wird dieses Skript ausgeführt, erhält man folgende Ausgabe:
In [16]: runfile('C:/Users/pahr/tuw/01_Lehre/Skripten/GdP/src/kreis.py', wdir='C:/Users/pahr/tuw/01_Lehre/Skripten/GdP/src')
File : kreis.py
Author : D.H. Pahr
Date : 24.06.2020
Mein erstes Python Skript zur Berechnung von
Umfang und Flaeche eines Kreises.
Radius = 1.5
Umfang = 9.424769999999999
Flaeche = 7.0685775
Bemerkungen dazu:
Die erste Zeile gibt das Coding an. Möchte man Umlaute darstellen, müsste man dieses ändern. Diese Zeile kann man auch löschen. Tipp: Verwenden Sie keine Akzente oder Sonderzeichen - nur den standardmäßigen englischen Schriftsatz verwenden d.h. ‚ae‘ statt ‚ä‘ schreiben, usw!
Im Code sind 2 Kommentartypen. Der Kommentar am Anfang (mit
"""
) heißt docstring, geht über mehrere Zeilen und wird ausgeben mit:print(__doc__)
Die Kommentare
#
beschreiben den Programmablauf.Alle Variablen sind bewusst ausgeschrieben und damit selbsterklärend (z.B
radius
stattr
).Wir haben
pi
selbst definiert, später werden wir sehen, es geht einfacher!Das
print
Statement ist Python 3 Syntax, d.h mit Klammern:print("Radius = ", radius)
Hinweis
Probieren Sie es einfach aus!
- Spyder starten
- Text reinkopieren bzw. bestehendes Python Skript File laden
- ein neues Skript als
mein_kreis.py
abspeichern - Ausgabe betrachten, jede Zeile versuchen zu verstehen!
2.5. Einrückungen¶
Im vorhergehenden Beispielen wurden alle Anweisungen nacheinander ausgeführt.
Allgemein unterscheidet man zwischen Anweisungskopf und Anweisungskörper, wobei der Körper weitere Anweisungen enthalten kann:
Hier ein Beispiel:
if x > 10:
print("Python leistet gute Arbeit!")
print("Zweite Zeile...")
Bemerkungen dazu:
if x > 10:
heißt Anweisungskopf.Der Anweisungskopf endet mit einem
:
Danach beginnt der Anweisungskörper.
Dieser wird durch eine tiefere Einrückung des Anweisungskörpers festgelegt.
Die Einrückung kann sowohl über Tabulatoren als auch über Leerzeichen erfolgen.
Tipp: 2-4 Leerzeichen als Einrückung verwenden! Standardeinstellung bei der verwendeten Anaconda Version sind 4 Leerzeichen und ein Tabulator wird in Leerzeichen umgewandelt:
Warnung
Tabulator werden je nach Editor Python intern durch 4-8 Leerzeichen ersetzt. Dies kann zu schwer auffindbaren Fehlern führen. Am Besten IMMER Leerzeichen verwenden.
Vergleich mit anderen Programmiersprachen:
In Fortran lautet eine ähnliche Anweisung z.B.:
IF ( x .GT. 10 ) THEN WRITE(6,*) "Fortran, alt aber gut!" WRITE(6,*) "Zweite Zeile..." ENDIF
In C++ würde man schreiben:
if ( x > 10 ) { printf ("C++, die Sprache für Experten!") printf ("Zweite Zeile...") }
Einrückungen sind bei diesen beiden Sprachen nicht notwendig. Dafür muss man mehr schreiben (ENDIF bzw. {..}). Man macht der Übersichtlichkeit halber aber trotzdem Einrückungen!
2.6. Übungsbeispiele¶
- Aufgabe 2.1
Verwendung von Python als Taschenrechner:
- Öffnen Sie eine Python Shell (oder starten Sie Python auf Ihrer Windows/Linux Shell)
- Definieren Sie drei Variablen,
a
,b
undc
. Belegen Sie diese Variablen mit den Werten 1, 2 und 3. - Berechnen Sie die folgenden Werte und geben Sie das Ergebnis auf der Konsole mit einem
print
aus. a
*c
b
/ 2
- Berechnen Sie die folgenden Werte und geben Sie das Ergebnis auf der Konsole mit einem
- Setzen Sie den Wert der Variable
c
zu -35. - Führen Sie Schritt 3 und 4 erneut durch. Probieren Sie die Pfeil oben bzw unten Tasten aus!
- Aufgabe 2.2
Gegeben sei eine quadratische Gleichung
- Öffnen Sie eine Python Shell.
- Definieren Sie drei beliebige Variablen,
a
,b
undc
. - Berechnen Sie die beiden Lösungen der quadratischen Gleichung und geben Sie das Ergebnis mit einem
print
aus. - Erzeugen Sie ein Python Skript mit beliebigem Namen mittels Spyder.
- Übertragen Sie die Berechnungen der quadratischen Gleichung auf ein Skript und führen Sie das Skript mittels
Run
aus. Welche Vorteile hat so ein Skript?
Generelle Hinweise ab Aufgabe 2.1, Pkt 4)
- Verwenden Sie ein IDE (z.B Spyder) und machen Sie für jede Übung ein eigens Python File (z.B.
hw2.py
) - Versuchen Sie die Programme selbstständig zu lösen, nur so lernen Sie Programmieren!
- Zuerst das Skriptum oder andere Unterlagen durchlesen, dann erst zu Programmieren beginnen!
- Kommentieren Sie Ihren Code ausführlich, damit Sie auch nach Wochen noch verstehen was Sie gemacht haben. Die Ausgabe sollte den Programmablauf „sichtbar machen“.
- Speichern Sie die Files zwischendurch ab, je nach IDE auch bevor Sie
Run
klicken. - Geben Sie zur Kontrolle nach Code-Modifikationen das Ergebnis in der Konsole mittels
print
aus.
2.7. weitere Übungsbeispiele¶
- Aufgabe 2.3
Gegeben sei eine quadratische Funktion in x:
- Erzeugen Sie ein Python Skript mit beliebigem Namen mittels Spyder.
- Definieren Sie 3 Variablen,
a
,b
undc
mit beliebigen Werten () - Berechnen Sie den Extremwert der Funktion und weisen Sie ihn der Variable
f0
zu. (Die entsprechende extremale Positionx0
ist die Stelle, an der die erste Ableitung der Funktion null ist.) - Ermitteln Sie zusätzlich, ob es sich bei dem Extremwert um ein Minimum oder Maximum handelt.
- Geben Sie das Ergebnis als „Minimum: …“ bzw. „Maximum: …“ aus.
Hinweis
Achten Sie darauf, dass das Skript fuer beliebige Werte fuer
a
,b
undc
funktioniert.- Aufgabe 2.4
Erstellen Sie eine Variable
Bytes
und weisen Sie ihr eine beliebige positive Integer-Zahl zu.Bytes
gibt die Anzahl an verfügbaren Bytes an. Was ist die größte Integerzahl, die in dieser Anzahl an Bytes abgespeichert werden kann? (Gehen Sie davon aus, dass kein Vorzeichen mitgespeichert wird, d.h. es handelt sich um einen unsigned integer!).Bestimmen Sie mittels eines kurzen Python-Skripts die größte Integerzahl in Abhängigkeit von der Variable
Bytes
und geben Sie diese auf der Konsole aus. Testen Sie Ihr Skript mit verschieden Werten fürBytes
.
Hinweis
Die größte Integerzahl berechnet sich anhand der Formel:
Beachten Sie den Unterschied zwischen Bit und Byte!