Progammierkurs Python¶
Sitzung 1 - Grundlagen¶
Python is a programming language that lets you work quickly and integrate systems more effectively
https://imgs.xkcd.com/comics/python.png
print("Hello World")
Hello World
Das selbe Programm in Java
public class HelloWorld
{
public static void main (String[] args)
{
System.out.println("Hello World!");
}
}
Warum Python?¶
Vielseitig
Übersichtlich und kompakt
High Level
Wird benuzt für:
Webentwicklung
Datenanalyse
Everyday struggle (z.B. Umwandlung von Bildern)
Datenanlyse
Machine Learning
Wird benutzt von:
Google / YouTube
Facebook / Instagram
RTL
Reddit
Spotify
CERN
NASA
Installation¶
Linux/Unix
Python2 ist in der Regel vorinstalliert, wir nutzen jedoch Python 3. Überprüft ob ihr Python3 installiert habt indem ihr folgendes Kommando in euer Terminal eingibt
python3 --version
und installiert es mithilfe eures Packetmanagers. Bei Debian wäre dies
apt-get install python3 python3-pip
OS X
Falls noch nicht vorhnanden, instaliert euch brew via http://brew.sh
Installiert Python3 via
brew install python3
Windows
Installiert euch Python via http://python.org
Installiert euch nun Jupyter Notebook via
pip3 install jupyter
Geht via cd
und/oder mkdir
in ein Verzeichnis eurer Wahl und führt dort den Befehl
jupyter notebook
aus.
Zen Of Python¶
import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Datentypen¶
In einer Progammiersprache gibt es verschiedene Datentypen um verschiedene Arten von Daten zu speichern.
Datentyp |
Beschreibung |
---|---|
string |
Buchstaben |
integer |
Ganzzahlen |
float |
Kommazahlen |
boolean |
Wahrheitswerte |
'hello world' # string
'hello world'
42 # integer
42
0.5 # float
0.5
print(False) # boolean
print(42 > 0)
print(42 < 0)
print(42 == 0)
False
True
False
False
Variablen¶
Um zu einem späteren Zeitpunkt / Codezeile auf den Wert eines Datentyps zugreifen zu können benutzen wir Variablen die einen Datenwert an einen Namen binden.
Man deklariert eine Variable mithilfe der Syntax variablen_name = wert der variable
foo = 40
bar = 2
print(foo)
print(bar)
40
2
# überschreiben von variablen
foo = 40
print(foo)
foo = 2
print(foo)
40
2
# casten von variablen
foo = 42
print(str(foo))
print(float(foo))
print(int(foo))
42
42.0
42
Das konvertieren von Strings in Integers funktioniert nicht. Was soll “Hello World” für eine Zahl sein?
print(int('Hello World'))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-10-a71ee050d248> in <module>
----> 1 print(int('Hello World'))
ValueError: invalid literal for int() with base 10: 'Hello World'
Operationen¶
# integer / float
print(40 + 2)
foo = 40 / 2
print(foo)
print(type(foo))
print(0.5 * 40)
print(2 ** 8)
42
20.0
<class 'float'>
20.0
256
# strings
print('foo' + 'bar')
print(3 * 'A')
print('py' 'thon')
foobar
AAA
python
# booleans
print(True & True) # and
print(True & False) # and
print(False & False)# and
print()
print(True | False) # or
print(True | True) # or
print(False | False)# or
True
False
False
True
True
False
Für mehr Informationen wie Booleans funktionieren gibt es den Wikipedia Artikel Boolesche Algebra.
Aufgabe:
Benutze Python als Taschenrechner für: \((4 * 15) + 3\) und speicher das Ergebnis in der Variable
foo
Printe einen String der das Ergebnis anzeigt - z.B. Das Ergebnis ist 123
Input¶
Programme ohne Interkation zur Außenwelt sind selten interessant.
Die einfachste Art in Python um einen Input vom User zu bekommen ist die Funktion input
, welche die Eingabe eines Benutzers in einer Variable speichert.
name = input('Wie heißt du? ')
print('Hallo ' + name)
Wie heißt du? Dennis
Hallo Dennis
Aufgabe
Schreibe ein Programm welches den Namen und Alter abfragt und das Geburtsjahr anhand des Alters berechnet
Listen¶
Listen sind eine Ansammlung von Datentypen.
Die Elemente in einer Liste werden aufsteigend mit der 0
durchnumeriert und können so auch abgerufen werden - man nennt dies den Index.
foo = [0, 1, 2, 3]
print(foo)
print(foo[0])
print(foo[1])
[0, 1, 2, 3]
0
1
# negativer index
foo = [0, 1, 2, 3]
print(foo[-1])
3
# operationen mit listen
foo = [0, 1, 2, 3]
bar = [4, 5, 6]
print(foo + bar)
print(3 * [5])
[0, 1, 2, 3, 4, 5, 6]
[5, 5, 5]
# listen bearbeiten
foo = [0, 1]
print(foo)
foo.append(2)
print(foo)
foo.remove(1) # lösche eintrag mit dem wert 1
print(foo)
foo.pop(1) # lösche eintrag mit index 1
print(foo)
[0, 1]
[0, 1, 2]
[0, 2]
[0]
foo = ['hello', 'world']
print(foo)
print(len(foo))
foo[5]
['hello', 'world']
2
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-20-3192d61487ce> in <module>
2 print(foo)
3 print(len(foo))
----> 4 foo[5]
IndexError: list index out of range
# slicing
foo = ['a', 'b', 'c', 'd']
print(foo[0:2])
['a', 'b']
# string -> list
foo = 'a,b,c,d,e,f'
print(foo.split(','))
['a', 'b', 'c', 'd', 'e', 'f']
Strings verhalten sich ähnlich zu Listen - man kann einzelne Buchstaben mithilfe eines Indizes anspringen.
Aufgabe
Wie lautet der Ausdruck aus um den letzten Buchstaben des Strings “Clara Schumann” anzuzeigen?
Grundlagen shell¶
Ein Terminal / Shell erlaubt es uns Befehle in einem Ordner auszuführen.
Linux -> on your own
Die wichtigsten Befehle sind (Unix = OS X und Linux)
Unix |
Windows |
Long Name |
Bedeutung |
---|---|---|---|
|
|
print working directory |
Zeigt den Pfad des aktuellen Verzeichnis an |
|
|
list |
Listet den Inahlt des aktuellen Verzeichnis auf |
|
|
Startet im aktuellen Verzeichnis ein Jupyter Notebook Server |