Python Kurs

Presenter Notes

Ablauf des Kurses

  • 25 min Vortrag
  • 5 min Fragen
  • 60 min Programmieren

Folien unter: uves.spline.de/python

Presenter Notes

Womit programmieren wir?

  • Texteditor
  • Gehirn
  • python
    • Programmiersprache
    • Skriptsprache
    • dynamisch typisierte Sprache
    • objektorientiere Sprache

Presenter Notes

Warum python?

  • einfach
  • große Standardbiblothek
  • praktisch
  • awesome

Presenter Notes

Los geht es

Presenter Notes

Lernen am praktischen Beispiel

Im Terminal:

1 # python
2 Python 3.2.2 (default, Nov 21 2011, 16:50:59)
3 [GCC 4.6.2] on linux2
4 Type "help", "copyright", "credits" or "license" for more information.
5 >>>

Für mehr Erfolg: Benutzt ipython

Presenter Notes

Kommentare

1 >>> #(k)ein Kommentar.

Presenter Notes

Datatypes

 1 >>> "aName"     # ein String
 2 "aName"
 3 >>> 1           # ne Zahl
 4 1
 5 >>> [1, 2, 3]   # und eine Liste
 6 [1, 2, 3]
 7 >>> True
 8 True
 9 >>> None
10 >>>

Presenter Notes

Variablen benutzen

1 >>> i = 23
2 >>> i
3 23
4 >>

wikipedia

Presenter Notes

Ausgabe

1 >>> print('Hello World!')
2 >>>

Presenter Notes

Eingabe

1 >>> raw_input('Bitte etwas eingaben: ')
2 Bitte etwas eingaben: <Benutzer gibt etwas ein>
3 'Hello world!'
4 >>>

Presenter Notes

Vereinfachung

1 >>> 23 + 7
2 30
3 >>> 42 % 5
4 2
5 >>> True or False
6 True
7 >>> 'abc' + 'def'
8 'abcdef'

Presenter Notes

Dicts

1 >>> person = {
2     'name' : "foo",
3     'age' : 42
4 }
5 >>> person.['age']
6 42
7 >>> person.['name'] = 'foobar'

Presenter Notes

Arrays Benutzen

 1 >>> list = [1,2,3] # array liste
 2 [...]
 3 >>> list[1]
 4 2
 5 >>> list[0] = 23;
 6 >>> list
 7 [23, 2, 3]
 8 >>> list.append(4)
 9 >>> list
10 [23, 2, 3, 4]

Presenter Notes

Verlassen wir nun die Shell

Presenter Notes

Ein Programm schreiben

  1. Editor öffnen
  2. Schreiben
  3. abspeichern
  4. Terminal öffnen
  5. mit cd / ins richtige Verzeichnis wechseln
  6. starten mit python

Presenter Notes

Was ist eigentlich ein Programm

1 # !/usr/bin/python
2 # -*- coding: utf8 -*-
3 
4 name = raw_input('Hallo Mensch, nenne deinen Namen')
5 print ('Dein Name ist: ' + name)
  • squentielle (nacheinander) Auflistung von Befehlen
  • interagiert mit der Welt (dem Computer) über Ein- und Ausgabe

Presenter Notes

Kontrollfluss

Immer nur sequentiell abarbeiten ist langweilig.

1 #! /usr/bin/python
2 name = raw_input('Wer ist da?')
3 
4 if (name == 'yves' ):
5     print('Hallo!')
6 elif ( name == 'philipp' )
7     print('Jo Maaaaaan!')
8 else:
9     print('Guten Tag!')

wikipedia

Presenter Notes

Wichtig: Codeblöcke!

1 if True:
2     if False:
3         print('tf')
4 
5 else:
6     print('tt')
  • werden eingerückt
  • können geschachtelt werden
  • beginnen nach einem Doppelpunkt

Presenter Notes

Funktionen

Weil wir code wiederverwenden wollen.

1 def word(string):
2     return string + ", word!";

Beispiel:

1 >>> word('Python ist toll')
2 "Python ist toll, word!"

wikipedia

Presenter Notes

Schleifen (for)

1 ponies = [ 'brown', 'yellow', 'pink']
2 for(color in ponies):
3     print('Look! A ' + color + 'pony.')

wikipedia

Schleifen (while)

1 problem='yes'
2 while(problem != 'no'):
3     problem = raw_input('Got a problem?')

wikipedia

Presenter Notes

Endlich Module

1 >>> import time
2 >>> time.ctime()
3 'Wed Apr  4 16:47:11 2012'

Presenter Notes

Module

Erstellen:

1 # Inhalt von myTime.py
2 def getTime():
3     return 'Gleich'

Benutzung:

1 >>> import myTime
2 >>> myTime.getTime()
3 'Gleich'

Presenter Notes

Noch Fragen?

Presenter Notes

Aufgaben und Beispiele? Gibt!

Der einfachste Weg: Auschecken mit git (im Terminal)

> git clone git://github.com/slomo/python-for-erstis.git
Cloning into python-for-erstis...
[...]
Resolving deltas: 100% (1/1), done.
> cd python-for-erstis
> ls
examples  README.md  slides.md  tasks

Oder ihr ladet sie als zip aus dem github webinterface.

mehr zur Benutzung von git oder für Fans von svn und cvs

Presenter Notes

Zusätliche Hilfsmittel

Presenter Notes

Shell in schnell

Ordner wechseln ( benutzt Tab)

> cd ordner/unterordner

Wo bin ich?

> pwd
/tmp/python-for-erstis
> cd ..
> pwd
/tmp/
> cd ~
> pwd
/home/yves

Absolute Pfade vs. relative Pfade

> pwd /home/yves/dir/dir2
> cd /home/yves/.cache  # mit absoluten Pfad
> cd ../../.cache       # mit relativem Pfad

Inhalt des aktuellen Ordners anzeiegen

> ls        # welche Dateien und Ordner gibt es?
> ls -l     # für mehr Infos (Rechte/Benutzer)

Presenter Notes

Shell in schnell

Programm ausführen

> ipython               # Programme aus /bin und /usr/bin
> /opt/usr/bin/python   # mit vollem Pfad
> ./myProgramm.py       # aus lokalen Verzeichnis

Pythonprogramm ausführbar machen

> chmod +x programm.py  # nicht das #! /usr/bin/python vergessen
> ./programm.py

Datei anzeigen

> cat README.md
Python for erstis
=================
[...]

Presenter Notes

Objeckt Orientierung in Python

 1 class Basis:
 2 
 3     def toggleMetho(self): # alle Methode erhalten self als erstes
 4         self.y = self.y.upper()
 5 
 6 class Extended(Basis): # Vererbung
 7 
 8     def __init__(self,arg ): # Constructor
 9         self.y = arg
10 
11     def appendMethod(self, arg):
12         self.y += arg
13 
14 ex = Extended("test") # erzeugt neues Objekt
15 print(ex.y) # Ausgabe: test
16 ex.toggleMethod()
17 print(ex.y) # Ausgabe: TEST
18 ex.appendMetho('test')
19 print(ex.y) # Ausgabe: TESTtest

Presenter Notes