Top Banner
40

Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Oct 08, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Python Grundkurszur Übung Diskrete Strukturen

Christof Brä[email protected]

Bauhaus-Universität Weimar

Fakultät Medien

2. November 2012

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 1 / 46

Page 2: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Outline

Einführung

GrundlagenVariablenDatentypenKontrollstrukturenInput/OutputModuleEin komplettes Skript

Hinweise

Referenzen

Übungsaufgaben

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 2 / 46

Page 3: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Einführung

Python

I Programmiersprache

I �Interpreter�: Programm, das Anweisungen einliest, verarbeitet undauswertet

I �Skript�: Textdatei mit Python-Anweisungen, kann vom Interpreterverarbeitet werden (�ein Skript ausführen�)

I Aktuelle (10/2012) Sprachversionen:Python 2: 2.7.3, Python 3: 3.3.0

I Bevorzugt sollte Python 3 eingesetzt werden

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 3 / 46

Page 4: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Einführung

Hello, Python!

http://xkcd.com/353/

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 4 / 46

Page 5: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Einführung

Motivation

I Einfach und leicht zu erlernen

I Algorithmen lassen sich schnell und unkompliziert umsetzen

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 5 / 46

Page 6: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Einführung

Beispielprogramm: Primzahltest� �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 gefundenfor 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')� �

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 6 / 46

Page 7: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Einführung

Einrückungen

I Python benutzt Einrückungen um Codeblöcke zu kennzeichnen

I Aufeinanderfolgende Codezeilen mit gleicher Einrücktiefe werden alszusammengehörig interpretiert

I Zur Einrückung sollten Leerzeichen genutzt werden, niemals Tabs

I Anzahl der Leerzeichen ist nicht vorgeschrieben, Standard sind 4

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 7 / 46

Page 8: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Variablen

Variablen

� �greeting = 'Hello'number = 23food_list = ['spam', 'eggs', 'bacon']2go = 'coffee' # Error (wirft SyntaxError)� �

I Variablen speichern (korrekter: referenzieren) Daten

I Der Zuweisungsoperator (=) weist einer Variablen (links) einen Wert(rechts) zu

I Variablennamen dürfen nur aus Buchstaben, Zi�ern und demUnterstrich (_) bestehen (und dürfen nicht mit Zi�ern beginnen)

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 9 / 46

Page 9: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Datentypen

Ganze Zahlen (Z)

� �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)� �

I Ganze Zahlen (int) können beliebig groÿ (bzw. klein) werden(begrenzt nur durch den Speicher des Rechners)

I Angabe in Dezimal-, Binär-, Oktal- oder Hexadezimalnotation

I Achtung: In Python 2 werden führende Nullen auch ohne das kleine�o� als Oktal interpretiert (027 ist 23)!

I Weitere Zahlentypen (�oat und complex) spielen im Rahmen derVorlesung Diskrete Strukturen keine Rolle

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 11 / 46

Page 10: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Datentypen

Arithmetische Operatoren� �x + y # Additionx - y # Subtraktionx * y # Multiplikationx / y # Division (Anmerkung beachten)x // y # Ganzzahldivisionx % y # Modulo (Divisionsrest)pow(x, y) # Potenzierung, von x ** y wird abgeratendivmod(x, y) # (x//y, x%y)-x # Negation� �

I Anmerkung zur Division:In Python 2 sind Division und Ganzzahldivision identisch, beide lieferndas Ergebnis abgerunded. In Python 3 liefert die Division einenFliesspunktwert (3 / 2 liefert 1.5).Im Rahmen der Vorlesung Diskrete Strukturen ist ausdrücklich dieGanzzahldivision zu verwenden.

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 12 / 46

Page 11: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Datentypen

Wahrheitswerte und None� �>>> 3 >= 2True>>> True and FalseFalse>>> not FalseTrue>>> test = print('spam')spam>>> print(test)None� �

I True und False kennzeichnen Wahrheitswerte (�boolesche Werte�)I Vergleichsoperatoren (==, !=, <, <=, > und >=) liefern

WahrheitswerteI Boolesche Operatoren: and, or zum Verknüpfen und not zum

Umkehren von WahrheitswertenI None kennzeichnet die Abwesenheit eines WertesI Funktionen ohne de�nierten Rückgabewert liefern None

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 13 / 46

Page 12: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Datentypen

Sequenztypen� �s = 'eggs and spam' # ein String ist eine Zeichensequenzs[0] # liefert 'e's[0:4] # liefert 'eggs''spam' + 'eggs' # Sequenzen koennen verknuepft werden� �

I string, list und tuple

I Darstellung geordneter Mengen

I Geordnet: Jedes Element hat eine eindeutige Position (�index�)

I �Slicing�: Zugri� auf einen Bereich (�range�) der Sequenz

I Indexzählung beginnt bei 0

I Bereichsangaben sind nichtinklusiv, d.h. [x:y] liefert den Ausschnittvon Position x bis Position y-1

I Verknüpfung ist nur für Sequenzen gleichen Typs erlaubt

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 14 / 46

Page 13: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Datentypen

Sequenztypen (2)

� �numbers = [5, 42, 23]42 in numbers # liefert True5 not in numbers # liefert Falselen(numbers) # liefert 3min(numbers) # liefert 5max(numbers) # liefert 42� �

I Mit den Operatoren in und not in kann man auf das Vorkommeneines Elements in der Sequenz testen

I len() liefert die Anzahl der Elemente

I min() und max() liefern das kleinste bzw. gröÿte Element (in Python 3müssen die Elemente dabei vom gleichen Typ sein)

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 15 / 46

Page 14: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Datentypen

Sequenztypen: string

� �s = 'Spam and Eggs. 's.split('a') # liefert ['Sp', 'm ', 'nd Eggs. ']s.replace('Spam', 'Bacon') # liefert 'Bacon and Eggs. 's.lower() # liefert 'spam and eggs. 's.strip() # liefert 'Bacon and Eggs.'� �

I Geordnete Menge von Zeichen

I �Immutable�: Modi�kationsoperatoren wie replace() oder strip()erzeugen einen neuen String

I split() ohne Parameter teilt an Whitespace (Leerzeichen, Tabs,Zeilenumbruch, . . . )

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 16 / 46

Page 15: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Datentypen

Sequenztypen: list

� �l = ['spam', 3]l.append('eggs') # ['spam', 3, 'eggs']l[1] = 'bacon' # ['spam', 'bacon', 'eggs']l[0] # liefert 'spam'l[-1] # liefert 'eggs'l[3] # Error (wirft IndexError)k = l[:] # Kopie von l, k = l waere nur eine

# weitere Referenz auf die gleiche Liste� �I Geordnete Menge beliebiger Werte

I �Mutable�: Der Inhalt der list kann geändert werden

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 17 / 46

Page 16: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Datentypen

Sequenztypen: tuple

� �t = ('christof', 'braeutigam', 40008)t[2] # liefert 40008t[2] = 11105 # Error (wirft TypeError)vname, nname, matnr = t # tuple unpacking� �

I Geordnete Menge beliebiger Werte

I �Immutable�: Der Inhalt ist nicht änderbar

I �Tuple unpacking�:Im Beispiel werden 3 Variablen gesetzt, vname = 'christof', nname ='braeutigam' und matnr = 40008. Diese Methode ist dem Zugri� überden Index vorzuziehen, da die Semantik der Elemente des Tupels klarererkennbar ist.

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 18 / 46

Page 17: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Datentypen

Abbildungstyp: dict

� �d = {'eggs': 1, 'spam': 3}d['spam'] # liefert 3'spam' in d # True3 in d # Falsed['spam'] = 5 # {'eggs': 1, 'spam': 5}d['bacon'] = 2 # {'bacon': 2, 'eggs': 1, 'spam': 3}d['egs'] # Error (wirft KeyError)for k in d: # iteriert ueber keys

print(k)for k, v in d.items(): # iteriert ueber (key, value) Tupel

print(k, v)� �I Ungeordnete Menge von Key:Value Paaren, mutable

I Key muss immutable sein, Value ist beliebig

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 19 / 46

Page 18: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Kontrollstrukturen

Fallunterscheidung (Bedingte Verzweigung)

� �if 'spam' in food:

print("I don't like spam")elif 'eggs' in food:

print("I don't like eggs")else:

print("Ok, i'll give it a try")� �I if leitet eine Fallunterscheidung ein

I Beliebig viele weitere Fälle können mit elif behandelt werden

I else behandelt den Fall, daÿ keine Bedingung zutri�t

I Genau eine Verzweigung wird ausgeführt: Die erste, deren BedingungTrue liefert oder der else-Zweig

I Die elif-Zweige und der else-Zweig sind optional

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 21 / 46

Page 19: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Kontrollstrukturen

Schleife (while loop)

� �# ziehe so lange eine Zufallszahl bis es eine Primzahl istn = some_random_number()while not isprime(n):

n = some_random_number()# n ist jetzt eine Primzahl� �

I while führt einen Codeblock so oft aus, wie die Bedingung True liefert(die Bedingung ist der Teil zwischen while und dem Doppelpunkt)

I Die Funktion isprime() im Beispiel liefert False wenn n prim ist,darum wird ihr Rückgabewert mit dem Operator not negiert

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 22 / 46

Page 20: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Kontrollstrukturen

Iteration (for loop)

� �for name in ['Alice', 'Bob', 'Carol']:

print('Hello,', name)for x in range(100):

print(x)� �I for iteriert über eine Menge von Werten

I Die Funktion range(n) wird in diesem Zusammenhang häu�geingesetzt um den Codeblock genau n-mal auszuführen

I Die Variable x nimmt dabei jeden Wert der Menge genau einmal an(im Beispiel 0 bis 99) und kann im Schleifenkörper verwendet werden

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 23 / 46

Page 21: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Kontrollstrukturen

Funktionen� �def add(lval, rval):

return lval + rval

result = add(23, 42)� �I Funktionsde�nition: Beschreibung der Funktion

I �Kopf� bzw. �Signatur�: Name der Funktion, formale Parameter

I �Körper�: Codeblock mit beliebigen Anweisungen (eingerückt!)

I Jede Funktion hat einen Rückgabewert, angegeben mit demSchlüsselwort return

I Die return-Anweisung kann weggelassen werden, in diesem Fall gibtdie Funktion den Wert None zurück

I Funktionsaufruf mit Übergabe von Argumenten und Zuweisung desRückgabewertes an eine Variable (result)

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 24 / 46

Page 22: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Kontrollstrukturen

Funktionen (2)

� �def fibonacci(n):

"""Gibt die n-te Fibonaccizahl zurueck."""if n in (0, 1):

return nelif n > 1:

return fibonacci(n - 1) + fibonacci(n - 2)else:

raise ArithmeticError('n muss positiv sein')� �I �Rekursion�: Funktionen können sich selbst aufrufen

I (Achtung: Rekursion dient häu�g eher der eleganten Darstellung alsder e�zienten Berechnung)

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 25 / 46

Page 23: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Input/Output

Ausgabe

� �print "I'm a Python 2 print statement!"print("I'm a Python 3 print function!")

print('{0} bottles of {1}'.format(99, 'beer'))# gibt '99 bottles of beer' aus� �

I print() gibt Text auf der Standardausgabe aus

I In Python 3 ist print() eine Funktion. In Python 2 ist print nur eineAnweisung, in der aktuellen Python 2 Version kann es aber schon alsFunktion genutzt werden.

I Formatstring zur Einbettung von Daten in Text (die gezeigte Variantefunktioniert in beiden Python-Versionen)

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 27 / 46

Page 24: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Input/Output

Arbeiten mit Files� �fin = open('in.txt') # in.txt im nur-lese-modus oeffnenfout = open('out.txt', 'w') # (1) out.txt wird geloescht!for line in fin:

fout.write(line) # (2) Python 2 Variantefout.close() # files immer schliessen!fin.close()� �

I open() ermöglicht den Zugri� auf ein File

I Standardmäÿig werden Files im nur-lese-Modus geö�net

I open() mit dem Argument 'w' ö�net das File zum schreiben

I (1) Achtung: Mit dem Ausführen dieser Zeile wird 'out.txt' neuangelegt. Gab es zuvor schon ein File mit diesem Namen wird esgelöscht.

I (2) Obwohl es auch so funktioniert, würde man in Python 3 hierprint(line, end=““, file=fout) schreiben

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 28 / 46

Page 25: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Module

Module

� �import sys # importiert das Modul syssys.argv[1] # liefert das erste Kommandozeilenargument

# alternativ kann nur ein bestimmter Name importiert werden:from sys import argvargv[1] # die Angabe von sys. ist dann unnoetig� �

I Ein Modul bündelt Python-Code um ihn anderen Modulen bzw.Skripten zur Verfügung zu stellen

I Die import-Anweisung macht den Inhalt eines Moduls im eigenenSkript verfügbar

I Jedes Python-Skript stellt ein Modul dar

I Die Python-Standardbibliothek ist in Modulen organisiert

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 30 / 46

Page 26: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Module

Module

� �import math # mathematische Funktionen und Konstantenmath.log(10, 2) # liefert den Zweierlogarithmus von 10math.pi

import random # Funktionen zur Zufallswerterzeugungrandom.randrange(100) # liefert einen Zufallswert von 0-99

import os # Systemfunktionenos.listdir('.') # liefert Liste des aktuellen Verzeichnisses� �

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 31 / 46

Page 27: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Grundlagen Ein komplettes Skript

Skript Template und Aufruf� �import sys

def show_arguments():"""Gibt alle Kommandozeilenargumente aus."""for arg in sys.argv: # ['script.py', ...]

print(arg)

if __name__ == '__main__':show_arguments()� �

I Das if-Konstrukt verhindert den Aufruf der Funktionshow_arguments() wenn das Skript als Modul importiert wird

I Den Code in ein Text�le �script.py� speichern und aufrufen:� �$ python3 script.py some arguments go here� �Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 33 / 46

Page 28: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Hinweise

Geschützte Namen

I Variablen und Funktionen deren Namen mit einem oder zweiUnterstrichen beginnen, sollte man nicht benutzen

I Eine Ausnahme bildet das Konstruktif __name__ == ’__main__’

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 34 / 46

Page 29: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Hinweise

Hilfesystem

� �>>> help(isprime)Help on function isprime in module __main__:

isprime(n)Gibt True zurueck, wenn n eine Primzahl ist,ansonsten False. n muss eine Ganzzahl >= 0 sein.� �

I help() ruft Pythons Hilfesystem auf

I Beispiel: help(isprime) zeigt die Signatur der Funktion (Name undParameter), sowie den Docstring � wenn man einen geschrieben hat.

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 35 / 46

Page 30: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Hinweise

Hilfreiche Tools

I pydoc � Die Python-Dokumentation auf der Kommandozeile

I py�akes � Analysiert Skripte und weist auf typische Fehler hin

I pylint � Analysiert den Stil eines Skripts

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 36 / 46

Page 31: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Hinweise

Hinweise zur Bearbeitung der Programmieraufgaben

I Python-Skripte sind einfache Textdateien mit der Dateiendung �.py�.

I Skripte werden mit einem Editor verfasst, nicht mit einerTextverarbeitung.

I Brauchbare Editoren: notepad++, gEdit, kate, vim, emacs, TextMate

I Kommandozeilenargumente sind Argumente, die einem Programmbeim Aufruf auf der Kommandozeile übergeben werden.

I Für alle Übungsaufgaben ist davon auszugehen, dass alle Eingaben alsKommandozeilenargumente übergeben werden sollen!

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 37 / 46

Page 32: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Hinweise

Hinweise zur Bearbeitung der Programmieraufgaben (2)

I Bitte nicht mehr Aufwand treiben als notwendig.

I Ausnahme: Kommentare(einzeilige Kommentare werden mit dem Hash-Zeichen (#) eingeleitet,wie in den meisten Beispielen zu sehen ist)

I Bitte in jedem abgegebenen Skript die Namen aller Gruppenmitgliederau�ühren.

I Bitte die vorgegebenen Skriptnamen sowie Input- und Outputformateeinhalten, damit die Ergebnisse automatisiert geprüft werden können.

I Skripte sollten im UTF8-Encoding vorliegen und keine Umlaute o.a.Sonderzeichen enthalten.

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 38 / 46

Page 33: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Referenzen

Python online

I Python Website [http://python.org/]

Binaries für jedes System gibt es im Downloadbereich

I Das Python Tutorial:[http://docs.python.org/py3k/tutorial/index.html]

I Die library reference:[http://docs.python.org/py3k/library/index.html]

I Styleguide[http://docs.python.org/tutorial/controlflow.html#

intermezzo-coding-style]

[http://www.python.org/dev/peps/pep-0008/]

I Spaÿ mit Python: [http://www.python.org/doc/humor/]

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 39 / 46

Page 34: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Referenzen

Bücher

Je�rey Elkner, Allen B. Downey, and Chris MeyersHow to Think Like a Computer Scientist - Learning with Pythonhttp://www.openbookproject.net/thinkcs/python/english2e/

Mark PilgrimDive into Python 3Apress; 2009http://getpython3.com/diveintopython3/

Zed A. ShawLearn Python the hard wayhttp://learnpythonthehardway.org/

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 40 / 46

Page 35: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Referenzen

Video-Tutorials

I Google's Python class[http://code.google.com/edu/languages/google-python-class/]

I Udacity � Introduction to Computer Science: Building a Search Engine(CS101) [http://www.udacity.com/overview/Course/cs101]

I Udacity � Design of Computer Programs: Programming Principles(CS212) [http://www.udacity.com/overview/Course/cs212]

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 41 / 46

Page 36: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Referenzen

Fragen?

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 42 / 46

Page 37: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Übungsaufgaben

Übungsaufgaben

� �$ python3 sumhex.py 42235 97310xcafe� �

I Schreiben Sie ein Skript, das zwei Zahlen alsKommandozeilenparameter übergeben bekommt und die Summe alsHexadezimalzahl ausgibt. Hinweis: Die Funktionen int() und hex() sindhilfreich zum erledigen dieser Aufgabe.

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 43 / 46

Page 38: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Übungsaufgaben

Übungsaufgaben (2)

I Das folgende Programm würde richtig rechnen, enthält aber vieleProgrammierfehler. Korrigieren Sie es.� �

import math

define project_to_distance(point_x point_y distance):dist_to_origin = math.sqr(pointx**2 + pointy**2)scale == distance / dist_to_originreturn point_x * scale, point_y * scale

print project-to-distance(2,7,4)� �

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 44 / 46

Page 39: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Übungsaufgaben

Übungsaufgaben (3)

� �$ python3 isbncheck.py 123456789Xgueltige ISBN� �

I Schreiben Sie ein Skript, das eine ISBN als Argument entgegennimmtund ausgibt, ob die ISBN gültig ist, oder nicht.

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 45 / 46

Page 40: Python Grundkurs - zur Übung Diskrete Strukturen · Outline Einführung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen

Übungsaufgaben

Übungsaufgaben (4)

� �$ python3 count.py spam.txt123� �

I Schreiben Sie ein Skript, das den Inhalt einer Textdatei 'spam.txt'einliest, zählt wie oft der Begri� 'spam' (in beliebiger Schreibweise -Spam, spAm, SPAM) darin auftaucht und diesen Wert ausgibt.

Christof Bräutigam (BUW) Python Grundkurs 2. November 2012 46 / 46