Table Of ContentPython Grundkurs
zur (cid:220)bung Diskrete Strukturen
Christof Br(cid:228)utigam
christof.braeutigam@uni-weimar.de
Bauhaus-Universit(cid:228)tWeimar
Fakult(cid:228)tMedien
2. November 2012
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 1/46
Outline
Einf(cid:252)hrung
Grundlagen
Variablen
Datentypen
Kontrollstrukturen
Input/Output
Module
Ein komplettes Skript
Hinweise
Referenzen
(cid:220)bungsaufgaben
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 2/46
Einf(cid:252)hrung
Python
(cid:73) Programmiersprache
(cid:73) (cid:18)Interpreter(cid:16): Programm, das Anweisungen einliest, verarbeitet und
auswertet
(cid:73) (cid:18)Skript(cid:16): Textdatei mit Python-Anweisungen, kann vom Interpreter
verarbeitet werden ((cid:18)ein Skript ausf(cid:252)hren(cid:16))
(cid:73) Aktuelle (10/2012) Sprachversionen:
Python 2: 2.7.3, Python 3: 3.3.0
(cid:73) Bevorzugt sollte Python 3 eingesetzt werden
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 3/46
Einf(cid:252)hrung
Hello, Python!
http://xkcd.com/353/
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 4/46
Einf(cid:252)hrung
Motivation
(cid:73) Einfach und leicht zu erlernen
(cid:73) Algorithmen lassen sich schnell und unkompliziert umsetzen
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 5/46
Einf(cid:252)hrung
Beispielprogramm: Primzahltest
(cid:7) (cid:4)
def isprime(n):
"""Gibt True zurueck, wenn n eine Primzahl ist,
ansonsten False. n muss eine Ganzzahl >= 0 sein.
"""
if n <= 1:
return False
# teste alle moeglichen Divisoren von 2 bis n-1
# wenn der Divisionsrest 0 ist, wurde ein Teiler gefunden
for d in range(2, n):
if (n % d) == 0:
return False
return True # kein Teiler gefunden, n ist prim
if isprime(23):
print('23 ist eine Primzahl')
else:
print('23 ist keine Primzahl')
(cid:6) (cid:5)
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 6/46
Einf(cid:252)hrung
Einr(cid:252)ckungen
(cid:73) Python benutzt Einr(cid:252)ckungen um Codebl(cid:246)cke zu kennzeichnen
(cid:73) Aufeinanderfolgende Codezeilen mit gleicher Einr(cid:252)cktiefe werden als
zusammengeh(cid:246)rig interpretiert
(cid:73) Zur Einr(cid:252)ckung sollten Leerzeichen genutzt werden, niemals Tabs
(cid:73) Anzahl der Leerzeichen ist nicht vorgeschrieben, Standard sind 4
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 7/46
Grundlagen Variablen
Variablen
(cid:7) (cid:4)
greeting = 'Hello'
number = 23
food_list = ['spam', 'eggs', 'bacon']
2go = 'coffee' # Error (wirft SyntaxError)
(cid:6) (cid:5)
(cid:73) Variablen speichern (korrekter: referenzieren) Daten
(cid:73) Der Zuweisungsoperator (=) weist einer Variablen (links) einen Wert
(rechts) zu
(cid:73) Variablennamen d(cid:252)rfen nur aus Buchstaben, Zi(cid:27)ern und dem
Unterstrich (_) bestehen (und d(cid:252)rfen nicht mit Zi(cid:27)ern beginnen)
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 9/46
Grundlagen Datentypen
Z
Ganze Zahlen ( )
(cid:7) (cid:4)
a = 31 # Dezimalnotation (Basis 10)
# Programmierer nutzen oft andere Notationen:
a = 0b11111 # 31 in Binaernotation (Basis 2)
a = 0o37 # 31 in Oktalnotation (Basis 8)
a = 0x1F # 31 in Hexadezimalnotation (Basis 16)
(cid:6) (cid:5)
(cid:73) Ganze Zahlen (int) k(cid:246)nnen beliebig gro(cid:255) (bzw. klein) werden
(begrenzt nur durch den Speicher des Rechners)
(cid:73) Angabe in Dezimal-, Bin(cid:228)r-, Oktal- oder Hexadezimalnotation
(cid:73) Achtung: In Python 2 werden f(cid:252)hrende Nullen auch ohne das kleine
(cid:18)o(cid:16) als Oktal interpretiert (027 ist 23)!
(cid:73) Weitere Zahlentypen ((cid:29)oat und complex) spielen im Rahmen der
Vorlesung Diskrete Strukturen keine Rolle
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 11/46
Grundlagen Datentypen
Arithmetische Operatoren
(cid:7) (cid:4)
x + y # Addition
x - y # Subtraktion
x * y # Multiplikation
x / y # Division (Anmerkung beachten)
x // y # Ganzzahldivision
x % y # Modulo (Divisionsrest)
pow(x, y) # Potenzierung, von x ** y wird abgeraten
divmod(x, y) # (x//y, x%y)
-x # Negation
(cid:6) (cid:5)
(cid:73) Anmerkung zur Division:
In Python 2 sind Division und Ganzzahldivision identisch, beide liefern
das Ergebnis abgerunded. In Python 3 liefert die Division einen
Fliesspunktwert (3 / 2 liefert 1.5).
Im Rahmen der Vorlesung Diskrete Strukturen ist ausdr(cid:252)cklich die
Ganzzahldivision zu verwenden.
ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 12/46
Description:Achtung: In Python 2 werden führende Nullen auch ohne das kleine o als Oktal interpretiert (027 ist min() und max() liefern das kleinste bzw. gröÿte Element (in Python 3 müssen die Elemente .. Dive into Python 3. Apress; 2009.