Progammierkurs Python

Sitzung 1 - Grundlagen

Python is a programming language that lets you work quickly and integrate systems more effectively

GitHub Logo

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 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.

Die wichtigsten Befehle sind (Unix = OS X und Linux)

Unix

Windows

Long Name

Bedeutung

pwd

echo %cd%

print working directory

Zeigt den Pfad des aktuellen Verzeichnis an

ls

dir

list

Listet den Inahlt des aktuellen Verzeichnis auf

jupyter notebook

jupyter notebook

Startet im aktuellen Verzeichnis ein Jupyter Notebook Server