Einführung in Python (2)

Ähnliche Dokumente
Termin 6: Medienprogrammierung in Python Bildverarbeitung (3)

Funktionen in Python

Informatik I. 4. Funktionen: Aufrufe und Definitionen. 25. Oktober Albert-Ludwigs-Universität Freiburg. Informatik I.

1 def Anweisung. 2 Argumentübergabe. 3 Lokale Variablen. 4 Default Argumente. 5 Aufruf mit Schlüsselwort. 6 Variable Argumente. Funktionen in Python

Funktionen in Python

Programmierung in Python

Programmierkurs Python I

Python 2. Vorlesung Computerlinguistische Techniken Alexander Koller. 28. Oktober 2014

2. Programmierung in C

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung. Übungsblatt 3. Abgabe: Freitag, 15. November 2013, 18:00 Uhr

Python Einführung. Monica Selva Soto. 24 März Mathematisches Institut

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Vorlesung Skriptsprachen Duale Hochschule Stuttgart Sommersemester Dipl.-Ing. (FH) Volker Schepper

Python Prozeduren und Funktionen

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme.

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Informatik I: Einführung in die Programmierung

Vorsemesterkurs Informatik Übungsaufgaben. Tag 4a - Python

1 Funktionsaufrufe. Informatik I: Einführung in die Programmierung 4. Funktionen: Aufrufe und Definitionen. Funktionsaufrufe

Programmieren in Python

2. Programmierung in C

JAVA - Methoden

6. Unterprogramme 6-1

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

Einführung in die Computerlinguistik

SAGE-Tutorium 02 im SoSe 2009

Inhaltsverzeichnis Einleitung xi Kapitel 1: Die Vorbereitung aufs Abenteuer

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden

Einstieg in die Informatik mit Java

Algorithmen und Programmieren II Einführung in Python (Teil 3)

Programmierkurs Python I

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

6. Funktionen, Parameterübergabe

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

Einstieg ins Programmieren mit Python

Einstieg in die Informatik mit Java

Informatik I. Informatik I Iteratoren Generatoren Das Modul itertools. Iterierbare Objekte Iteratoren. Python-Interpreter

Crashkurs Python und Sage U23 Krypto-Mission

Funktionen. Parameterübergabe. Keyword-Parameter. Achtung

A2.1 Python. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A2.1 Python. A2.2 Kurzer Sprachüberblick. A2.3 Selectionsort in Python

Informatik I: Einführung in die Programmierung

Module, Packete und PIP

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Objektorientierte Programmierung (ZQ1u2B)

Algorithmen und Datenstrukturen

Programmieren mit statistischer Software

Bash-Skripting Linux-Kurs der Unix-AG

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Algorithmen und Programmieren II Einführung in Python (Teil 2)

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Modulare Programmierung

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Ausnahmen-Behandlung

Funktionen in JavaScript

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Klassenvariablen, Klassenmethoden

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

2 Eine einfache Programmiersprache

Algorithmen und Datenstrukturen II

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Python als praktischer Helfer

Inhalt. 4.7 Funktionen

Einstieg in die Informatik mit Java

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

Objektorientiertes Programmieren II

Einführung in die Programmierung

Einstieg in die Informatik mit Java

Python. 4. Auflage. Gregor Lingl. Auf der CD: Aktuelle Version Python und alle Programmbeispiele und Aufgabenlösungen aus dem Buch

Statistisches Programmieren

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

2 Eine einfache Programmiersprache

Programmieren in Python 3. Variablen, Funktionen und Bedingungen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Matlab: eine kleine Einführung

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Michael Weigend. Python GE-PACKT

Vorkurs Informatik WiSe 17/18

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Implementieren von Klassen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Einführung in die Programmierung

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Programmieren mit Python

Einführung in die Programmierung Wintersemester 2010/11

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Programmierung und Angewandte Mathematik

Informatik für Schüler, Foliensatz 18 Rekursion

Funktionen in JavaScript

SFZ FN Sj. 12/13. Python 4 Grundlagen. W.Seyboldt. Python, SFZ FN, Sj 12/13

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

Speicher und Adressraum

C.3 Funktionen und Prozeduren

Girls Day 2017 Programmierung

Transkript:

Kapitel 8: Einführung in Python (2) Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Definition von Funktionen Definition einfacher Funktionen lokale und globale Variablen Parameterübergabe Rekursive Funktionen Import von Modulen import-anweisung Ausgewählte Module der Python Standardbibliothek Literatur M. Weigend. Objektorientierte Programmierung mit Python. MITP. 2006. J. Elkner and A. B. Downey. How to Think Like a Computer Scientist. Learning with Python 2nd Edition. http://www.ibiblio.org/obp/thinkcspy/ 1

Python Definition und Ausführung von Skripten Öffnen des Editors Ausführen/Laden mit: Run Module F5 Editor Konsole/Shell Python Definition und Ausführung von Skripten Python-Skript: Text-Datei mit Endung.py Python-Skripte können enthalten Definition von Funktionen Definition von Klassen (später in VL) beliebige weitere Anweisungen, die bei Laden des Skripts sofort ausgeführt werden Hauptprogramm Skript: Bei Laden/Ausführung des Skripts (in IDLE mit Taste F5): 2

Definition von Funktionen def funktionsname(arg1, arg2, ): anweisungsblock Funktionskopf Schlüsselwort def, Funktionsname, Parameterliste in Klammern, Doppelpunkt Funktionskörper Anweisungsblock, d.h. Folge von Anweisungen eingerückt! mit Schlüsselwert return kann ein Rückgabewert festgelegt werden Rückgabewert kann auch Tupel, Liste oder anderes Objekt sein def summierebis(n): sum = 0 for i in range(1,n+1): sum = sum + i return sum def sumandmultiplyto(n): sum = 0 prod = 1 for i in range(1,n+1): sum = sum + i prod = prod * i return (sum,prod) Definition von Funktionen: Vom Struktogramm zum Programm Beispiel: Euklidischer Algorithmus ggt(a,b) b!= 0 a > b ja nein a = a-b b=b-a a def ggt(a,b): while b!= 0: if a > b: a = a-b else: b = b-a return a ggt(35,14) 7 ggt(25,35) 5 ggt(50,100) 50 3

Muster: Einlesen von Zahlen def lies_messwerte(): werte = [] messwert = 0 while messwert >= 0: messwert = input("geben Sie eine Zahl ein: ") if messwert >= 0: werte.append(messwert) return werte # Hauptprogramm messwerte = lies_messwerte() print "Eingebenen wurden die Werte:", messwerte print "Max. Wert ist ", max(messwerte) Funktion liest wiederholt jeweils eine Zahl vom Eingabe-Prompt ein Ende der Schleife bei Eingabe einer Zahl < 0 Rückgabe der Eingabewerte als Liste Geben Sie eine Zahl ein: 4 Geben Sie eine Zahl ein: 2.5 Geben Sie eine Zahl ein: 8.25 Geben Sie eine Zahl ein: 0 Geben Sie eine Zahl ein: 1 Geben Sie eine Zahl ein: -1 Eingebenen wurden die Werte: [4, 2.5, 8.25, 0, 1] Max. Wert ist 8.25 "Muster": Programmstück, das so oder in leichter Abwandlung häufig (wieder-) verwendet wird Ausführung von Funktionen - Globale und lokale Namensräume Definition einer lokalen Variable x Definition globaler Variablen x, y lokale Variablen sind nur innerhalb der Funktionsdefinition sichtbar, d.h. können außerhalb nicht verwendet werden innerhalb von Funktionen sind lokale und globale Variablen sichtbar bei Namensgleichheit einer lokalen mit einer globalen Variable wird die lokale Variable ausgewertet def f(): x = 2 print "x in Funktion f(): ", x print "y in Funktion f(): ", y # Hauptprogramm x = 1 y = 1 f() print "x in Hauptprogramm: ", x print "y in Hauptprogramm: ", y x in Funktion f(): 2 y in Funktion f(): 1 x in Hauptprogramm: 1 y in Hauptprogramm: 1 4

Ausführung von Funktionen - Globale und lokale Namensräume def f(): x = 2 print "Globaler Namensraum von f(): ", globals() print "Lokaler Namensraum von f(): ", locals() Standardfunktionen # Hauptprogramm x = y = 1 f() Globaler Namensraum von f(): {'f': <function f at 0x00B45830>, ' builtins ': <module ' builtin ' (built-in)>, 'x': 1, 'y': 1, ' name ': ' main ', ' doc ': None} Lokaler Namensraum von f(): {'x': 2} Ausführung von Funktionen - Globale und lokale Namensräume Innerhalb von Funktionen können globale Variablen gelesen, aber nicht ohne Weiteres verändert werden Zur Veränderung einer globalen Variable innerhalb einer Funktion dient die global-anweisung (teilt Python mit, dass Zuweisung an eine globale Variable erfolgen soll) def verdopple(): global x x = x * 2 # Hauptprogramm x = 10 verdopple() print x 20 5

Zur Verwendung globaler Variablen Globale Variablen sind scheinbar bequem, weil sie im ganzen Programm sichtbar sind nicht notwendig, sie beim Aufruf einer Funktion als Parameter zu übergeben Sie werden aber auch leicht zur Fehlerquelle! Z.B. Möglichkeit zur Definition von Funktionen, die bei Aufruf mit gleichen Parametern unterschiedliche Ergebnisse liefern (siehe rechts) manchmal effizienter Code oft verwirrend! dies verletzt Prinzip der referentiellen Transparenz: Wert eines Ausdrucks sollte nur von seiner Umgebung abhängen def f(x): global count count = count + 1 return x + count count = 0 f(1) 2 f(1) 3 f(1) 4 globale Variablen sollten sparsam, evtl. überhaupt nicht verwendet werden! Ausführung von Funktionen - Parameterübergabe (1) Auf formale Parameter, d.h. Namen der Parameter im Funktionskopf, kann im Funktionskörper genau wie auf lokale Variablen zugegriffen werden Bei Aufruf der Funktion halbiere() wird der Parameter innerhalb der Funktion an eine andere Variable gebunden Sind die als Parameter übergebene Objekte unveränderbar z.b. Zahlen, Strings, Tupel dann haben Veränderungen innerhalb der Funktion keine Auswirkungen auf Objekte außerhalb def halbiere(zahl): zahl = float(zahl) zahl = zahl / 2 return zahl n = 5 halbiere(n) 2.5 n # n bleibt unverändert 5 n = halbiere(n) print n 2.5 6

Ausführung von Funktionen - Parameterübergabe (2) Veränderbare Objekte, z.b. Listen, können, wenn sie als Argumente einer Funktion übergeben werden, in dieser Funktion modifiziert werden (die Veränderungen sind auch außerhalb der Funktion wirksam)! def quadriere(l): for i in range( len(l) ): l[i] = l[i] * l[i] # Hauptprogramm liste = [1,2,3,4,5] print liste quadriere( liste ) print liste Programmlauf: [1, 2, 3, 4, 5] [1, 4, 9, 16, 25] Voreingestellte Parameter Manche Funktionen haben optionale Parameter, die bei Funktionsaufruf weggelassen werden können In der Funktionsdefinition werden für diese Default-Werte angegeben: def funktionsname(arg1=wert1, arg2=wert2, ): def wertetabelle(anzahl=3, schritt=0.5): x = 0.0 for i in range(anzahl): print x, ' ', x*x x = x + schritt wertetabelle() 0.0 0.0 0.5 0.25 1.0 1.0 wertetabelle(3,1) 0.0 0.0 1.0 1.0 2.0 4.0 wertetabelle(5) 0.0 0.0 0.5 0.25 1.0 1.0 1.5 2.25 2.0 4.0 7

Schlüsselwort-Argumente Bisher: Aufruf von Funktionen mit Positionsargumenten Reihenfolge der Argumente bei Aufruf entsprechend Funktionsdefinition In Python auch möglich: Aufruf mittels Schlüsselwort-Argumente der Form funktionsname(arg1=wert1, arg2=wert2, ) def wertetabelle(anzahl=3, schritt=0.5): x = 0.0 for i in range(anzahl): print x, ' ', x*x x = x + schritt wertetabelle(schritt=0.1) 0.0 0.0 0.1 0.01 0.2 0.04 wertetabelle(schritt=0.1, anzahl=5) 0.0 0.0 0.1 0.01 0.2 0.04 0.3 0.09 0.4 0.16 Rekursive Funktionen Rekursive Funktion: Funktion, die sich selbst aufruft z.b. Fakultät: n! = 1 * 2 * * n rekursive Formulierung der Fakultätsfunktion: 1! = 1 n! = n * (n-1)!, n > 1 120 3628800 2432902008176640000 def fak(n): if n == 1: return 1 else: return n * fak(n-1) # Hauptprogramm print fak(5) print fak(10) print fak(20) 8

Rekursive Funktionen Fibonacci-Folge: 1, 1, 2, 3, 5, 8, 13, Rekursive Formulierung Basisfall: fib(1) = 1 Basisfall: fib(2) = 1 Rekursionsfall (n>2): fib(n) = fib(n-1) + fib(n-2) def fib(n): if n == 1 or n==2: return 1 else: return fib(n-1) + fib(n-2) mit Rückgabe als Liste: def fib1(n): if n == 1: return [1] elif n== 2: return [1,1] else: bisher = fib1(n-1) i = bisher[n-2] + bisher[n-3] return bisher + [i] Dokumentation von Funktionen - Docstrings Unterhalb des Funktionskopfes sollte ein Kommentar in dreifachen Anführungszeichen angebracht werden Dieser Docstring der Funktion kann im interaktiven Modus mit der help()- Funktion zum Vorschein gebracht werden def fak(n): """Berechnung der Fakultaet einer Zahl. Eingabe: eine Zahl n Ausgabe: Fakultaet n! der Zahl Autor: Bernhard Jung, 15.11.2005 """ if n == 1: return 1 else: return n * fak(n-1) help(fak) Help on function fak in module main : fak(n) Berechnung der Fakultaet einer Zahl. Eingabe: eine Zahl n Ausgabe: Fakultaet n! der Zahl Autor: Bernhard Jung, 15.11.2005 9

Programmieren im Großen import - Anweisung mittels import-anweisung kann man Module (Python-Skripte) in andere Skripte importieren Definitionen von Funktionen (und Klassen) anderer Module werden so im aktuellen Modul verfügbar import-anweisungen o.ä. gibt es in allen gängigen Programmiersprachen Import von Standardmodulen (ausgeliefert mit Python-Distribution) von Dritten geschriebene Module (im Web zahlreich zu finden) selbst geschriebenen Skripten Formen (Python) import modul1, modul2, Zugriff auf Funktionsdefinitionen mittels modul1.definition from modul import name1, name2, importiert nur die benannten Funktionsdefinitionen des Moduls Zugriff auf Definitionen ohne Erwähnung des Modulnamens from modul import * importiert alle Definitionen des Moduls Zugriff auf Definitionen ohne Erwähnung des Modulnamens Beispiele Programmieren im Großen import - Anweisung Beispiel: Gewünscht ist Verwendung der Funktionen des Python-Skripts (Moduls) "primzahlen.py" in anderem Python-Skript """Funktionen fuer Primzahlen""" def prim(n): "Testet, ob n Primzahl ist" for teiler in range(2,n): if n % teiler == 0: return False return True primzahlen.py def primliste(n): u"liefert eine Liste der Primzahlen kleiner gleich n" if n < 2: return [] result = [] for zahl in range(2, n+1): if prim(zahl): result.append(zahl) return result 10

Programmieren im Großen import Anweisung, Beispiel (1) Import des Moduls primzahlen Zugriff mit Modulname Zugriff ohne Modulname Fehler import primzahlen primzahlen.prim(5) True primzahlen.prim(8) False prim(8) Traceback (most recent call last): File "<pyshell#8>", line 1, in -toplevelprim(8) NameError: name 'prim' is not defined Programmieren im Großen import Anweisung, Beispiel (2) Import der Funktion prim aus Modul primzahlen Zugriff ohne Modulname jetzt ok Zugriff auf nicht importierte Funktion Fehler from primzahlen import prim prim(9) False l = primliste(8) Traceback (most recent call last): File "<pyshell#12>", line 1, in -toplevell = primliste(8) NameError: name 'primliste' is not defined 11

Programmieren im Großen import Anweisung, Beispiel (3) Import aller Funktionen aus Modul primzahlen Zugriffe auf beide Funktionen des Moduls from primzahlen import * prim(9) False primliste(13) [2, 3, 5, 7, 11, 13] Programmieren im Großen import Anweisung Wo sucht Python die zu importierenden Module? im aktuellen Verzeichnis wo zuletzt eine.py Datei geöffnet wurde in den Verzeichnissen der sys.path Variable Inspektion in IDLE: File >> Path Browser Inspektion der sys.path Variable 12

Inspektion und Erweitern von sys.path import sys sys.path ['C:\\Python25\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python25.zip', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C:\\Python25\\lib\\site-packages\\PIL'] sys.path.append(r'c:\dokumente und Einstellungen\Jung\Eigene Dateien\MyPythonPrograms') sys.path ['C:\\Python25\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python25.zip', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C:\\Python25\\lib\\site-packages\\PIL', 'C:\\Dokumente und Einstellungen\\Jung\\Eigene Dateien\\MyPythonPrograms'] import primzahlen Standardbibliotheken in Python welche gibt es? IDLE: Help > Python Docs 13

Standardbibliotheken in Python welche gibt es? Ausgewählte Standardbibliotheken: Modul math Definition von Konstanten pi e Definition mathematischer Funktionen ceil(x) x wird aufgerundet floor(x) x wird abgerundet sin(x), cos(x), tan(x) Sinus, Cosinus, Tangens von x asin(x), acos(x), atan(x) degrees(x), radians(x)-konversion zw. Bogenmaß und Grad fabs(x) Betrag von x (als float) log(x), log10(x) Logarithmus von x zur Basis 2 bzw. 10 14

Ausgewählte Standardbibliotheken: Modul math from math import * fabs(-1.1) 1.1000000000000001 pi 3.1415926535897931 cos(pi) -1.0 sin(pi/2) 1.0 floor(8.5) 8.0 ceil(8.5) 9.0 acos(0.5) 1.0471975511965976 Ausgewählte Standardbibliotheken: Modul random Funktionen randint(a, b) liefert zufällige Integer-Zahl zw. a und b (inklusive) random() liefert zufällige Realzahl zwischen 0 und 1 uniform(a,b) - liefert zufällige Realzahl zw. a und b (inklusive) choice(sammlung) liefert ein zufälliges Element der Sammlung (z.b. Liste, Menge) sample( Sammlung, k) liefert k Zufallselemente aus Sammlung 15

Ausgewählte Standardbibliotheken: Modul random from random import * random() 0.79513661012444292 random() 0.93153037147896656 randint(30,39) 36 sample( ['a', 'b', 'c', 'd', 'e'], 3) ['b', 'a', 'c'] sample( ['a', 'b', 'c', 'd', 'e'], 3) ['c', 'a', 'b'] sample( range(50), 10) [23, 14, 43, 6, 29, 42, 24, 18, 28, 8] Auswahl Python-Bibliotheken für Multimedia Tkinter graphische Benutzeroberflächen Bilder Winsound Sound auf Windows-Plattform import winsound winsound.playsound(r'c:\dokumente und Einstellungen\Jung\Eigene Dateien\Sounds\techno_mono.wav', winsound.snd_async ) 16