Programmieren in Python

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

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

Programmierung in Python

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

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

Python Programmieren. Variablen, Ausdrücke und Anweisungen

Kurzeinführung in Python

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

Programmieren in Python

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Java Einführung Methoden. Kapitel 6

Einstieg in die Informatik mit Java

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Programmieren mit Python

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

Kapitel 2 Ihr erstes Python-Programm

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

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

5.4 Klassen und Objekte

Linux Tutorium. 12. Shellprogrammierung. Version vom :38:56

Prinzipien der Softwareentwicklung S. Strahringer

Grundlagen der Programmierung

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Grundlagen von Python

Skriptsprachen am Beispiel Python

Einführung in die C-Programmierung

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

Python-Workshop. Python für C/C++ Programmierer. Carl Friedrich Bolz. Carl Friedrich Bolz

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

1 Polymorphie (Vielgestaltigkeit)

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

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

Kurze Einführung in die Programmiersprache C++ und in Root

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

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

1. Der Einstieg in Java. Was heißt Programmieren?

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

ModProg 15-16, Vorl. 5

Einführung in die Programmierung

Algorithmik und Programmieren

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

Lua - Erste Schritte in der Programmierung

Theorie zu Übung 8 Implementierung in Java

Grundlagen der Programmierung in C Funktionen

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Programmierstile in C

Einführung in Python. Gliederung

Die Algorithmenbeschreibungssprache Jana

Selber Programmieren

Coding Standards Brandbox

Die Kunst des schönen Kodierens

28. April Python ist eine Interpreter Sprache. einfach durch eigene C Module erweiterbar. Daten werden dynamisch getypt

Einführung in die Computerlinguistik Einführung in Python (1)

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Funktionales Programmieren in Python

4 Kontrollfluss-Diagramme

Einführung in die Java- Programmierung

Einführung in Python (1)

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Kurzeinführung in C. Johannes J. Schneider

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Luis Kornblueh. May 22, 2014

Probeklausur: Programmierung WS04/05

Einführung in Python Übung 1

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

1. Der Einstieg in Java

Grundlagen der Programmierung

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Objektorientierte Programmierung OOP Programmieren mit Java

Propädeutikum zur Programmierung

Einführung in die Programmierung

Programmieren für Wirtschaftswissenschaftler SS 2015

Reguläre Ausdrücke in Python

Übungsblatt 2. Abgabe: Freitag, 7. November 2014, 18:00 Uhr

Herzlich Willkommen. Über mich Termine Literatur Über PHP

Funktionale Programmierung mit Haskell

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Einfache Rechenstrukturen und Kontrollfluss II

JAVA - Methoden

Computergrundlagen Programmieren in C

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Informatik für Schüler, Foliensatz 3 Vorhandene Funktionen und Wiederholschleifen

Processing Info zu Variablen und Bedingungen

Python so macht Programmieren Spass

Grundlagen von C. Ausarbeitung von Jonas Gresens

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

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

Probeklausur: Programmierung WS04/05

Primitive Datentypen und Felder (Arrays)

Funktionale Programmierung

Transkript:

3. Variablen, Funktionen und Bedingungen Albert-Ludwigs-Universität Freiburg Handlungsplanungs-Praktikum Wintersemester 2010/2011

Variablen, Funktionen und Bedingungen Bisher sind wir über die Funktionen eines Taschenrechners nicht hinaus gekommen. Damit sich daran etwas ändert, brauchen wir auf jeden Fall Variablen und Funktionen. Im Einzelnen behandeln wir: Variablen Funktionen: def, return Bedingungen: if, while, bool

Variablen Variablen und Zuweisungen sehen in Python nicht sonderlich überraschend aus: >>> spam = 111 * 111 >>> spam 12321 >>> egg = spam * spam >>> egg 151807041 >>> spam = egg * egg >>> spam 23045377697175681

Variablen: Details In Variablennamen erlaubt sind Buchstaben (Teilmenge von Unicode einschließlich ASCII und Umlauten) und Unterstriche sowie Ziffern. Das erste Zeichen darf keine Ziffer sein. Variablen müssen nicht deklariert werden, sondern werden ins Leben gerufen, sobald ihnen erstmals ein Wert zugewiesen wird. Im Gegensatz zu Perl oder PHP können Variablen nicht verwendet werden, bevor ihnen ein Wert zugewiesen wurde: >>> spam = 3 >>> print(spam) 3 >>> print(10 + egg) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name egg is not defined

Variablen: Typprüfung (1) Python ist zwar eine stark getypte Sprache, aber im Gegensatz zu Sprachen wie C und Java sind nicht Variablen, sondern Ausdrücke getypt. Das bedeutet, dass derselben Variable nacheinander Werte mit unterschiedlichen Typen zugewiesen werden können: >>> spam = 1+7j >>> print(spam) (1+7j) >>> spam = 100 >>> print(spam) 100 >>> spam = "spam, spam, spam, spam" >>> print(spam) spam, spam, spam, spam

Variablen: Typprüfung (2) Im Gegensatz zu Variablen sind Ausdrücke aber getypt, und Typfehler werden erkannt: >>> print("eins" + 1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Can t convert int object to str implicitly >>> print(1j < 4) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: no ordering relation is defined for complex numbers >>> print("gambolputty"[2.0]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: string indices must be integers

Variablen: Tuple Unpacking (1) Man kann mehrere Werte gleichzeitig zuweisen: >>> spam, egg = 7, 13 >>> print(spam) 7 >>> print(egg) 13 Diesen Vorgang bezeichnet man als tuple unpacking mehr zu Tupeln später.

Variablen: Tuple Unpacking (2) Bei simultanen Zuweisungen werden alle zugewiesenen Werte berechnet, bevor der erste Wert zugewiesen wird, was folgenden Trick ermöglicht: >>> spam = "spam" >>> egg = "egg" >>> spam, egg, spegg = egg, spam, spam+egg >>> print(spam) egg >>> print(egg) spam >>> print(spegg) spamegg

Variablen: Die Variable Im Interpreter (und nur dort!) hat die Variable eine besondere Bedeutung. Sie enthält den Wert des letzten nackten Ausdrucks, der berechnet wurde: >>> 2 ** 10 1024 >>> 1024 >>> * 1048576 >>> * 1099511627776

Variablen, Funktionen und Bedingungen Bisher sind wir über die Funktionen eines Taschenrechners nicht hinaus gekommen. Damit sich daran etwas ändert, brauchen wir auf jeden Fall Variablen und Funktionen. Im Einzelnen behandeln wir: Variablen Funktionen: def, return Bedingungen: if, while, bool

Funktionen Um vernünftig programmieren zu können, benötigen wir auf jeden Fall noch Funktionen. Hier sehen wir eine der Besonderheiten von Python: >>> def triple(egg):... return 3 * egg... >>> print(triple(10)) 30 >>> def double(spam):... return 2 * spam File "<stdin>", line 2 return 2 * spam ^ IndentationError: expected an indented block

Einrücken! Python markiert die Blockstruktur eines Programs durch Einrücken, nicht durch Klammerpaare oder Schlüsselwörter. Die Regeln sind ganz einfach: Alles, was zu der Funktion gehört, muss gegenüber der Funktionsdefinition eingerückt sein. Anders ausgedrückt: Man rückt einfach so ein, wie man es in einer anderen Programmiersprache nach den üblichen Konventionen tun würde. Python: Programming the way Guido indented it

Einrücken im interaktiven Interpreter Wie in den Beispielen gesehen, schaltet der interaktive Interpreter den normalen Prompt >>> auf den Fortsetzungsprompt... um, wenn man sich in einem eingerückten Block befindet. Der eingegebene Code wird erst verarbeitet, wenn der eingerückte Block beendet ist (anders ginge es ja auch nicht). Um dem Interpreter mitzuteilen, dass keine weiteren eingerückten Zeilen mehr folgen und er den eingegebenen Code jetzt verarbeiten soll, gibt man eine Leerzeile ein. Diese Leerzeilen sind nur im interaktiven Interpreter erforderlich!

Achtung: Tabs und Spaces Python versteht zum Einrücken sowohl Leerzeichen als auch Tabulatorzeichen. Mischen von Leerzeichen mit Tabulatorzeichen ist verboten und führt zu Fehler TabError. Konvention im Praktikum: Einrücken mit vier Leerzeichen pro Ebene (vgl. PEP 8, http://www.python.org/dev/peps/pep-0008/).

Wo wir schon mal bei der Formatierung sind... Wie wohl schon aufgefallen ist, wird auch das Ende der Anweisung in Python durch Formatierung bestimmt. Genauer: Das Zeilenende beendet die Anweisung. Manchmal möchte man das nicht: ein_langer_name = noch_ein_langer_name + ein_noch_laengerer_name Dies führt nach Verarbeitung der ersten Zeile zu einer Fehlermeldung.

Lange Zeilen (2) Es gibt zwei Methoden zur Abhilfe: Endet eine Zeile mit einem Backslash, wird sie wie in C mit der folgenden Zeile vereinigt: ein_langer_name = noch_ein_langer_name + \ ein_noch_laengerer_name Wenn eine schließende Klammer (rund, eckig oder geschweift) aussteht, beenden Zeilenenden die Anweisung nicht: ein_langer_name = (noch_ein_langer_name + ein_noch_laengerer_name) Es gilt als guter Stil, die erste Variante zu vermeiden und im Zweifelsfall zusätzliche Klammern einzuführen, um die zweite Variante verwenden zu können.

Zurück zu den Funktionen >>> def triple(egg):... return 3 * egg... >>> print(triple(10)) 30 >>> def double(spam):... return 2 * spam... >>> print(double(5.5)) 11.0

Funktionen: Details Funktionen werden mit dem Schlüsselwort def eingeleitet. Funktionen können eine variable Zahl an Argumenten akzeptieren und Default-Argumente haben mehr dazu später. Werte werden mit dem Schlüsselwort return zurückgegeben. Funktionen haben immer ein Resultat. Wird nicht explizit ein Wert zurückgegeben, ist das Resultat der spezielle Wert None, der eine (die einzige) Instanz der Klasse NoneType ist. None spielt in Python die Rolle von NULL in C/C++, null in Java und nil in LISP.

Funktionen: Beispiele >>> def product(x, y, z):... return x * y * z... >>> print(product(5, 6, 7)) 210 >>> def sing():... print("spam, spam, spam, spam")... >>> sing() spam, spam, spam, spam >>> print(sing()) spam, spam, spam, spam None

Funktion: Polymorphie (1) Python-Funktionen sind von Haus aus polymorph: >>> def double(anything):... return 2 * anything... >>> print(double(10.2)) 20.4 >>> print(double("badger")) badgerbadger

Funktion: Polymorphie (2) Typfehler werden zur Laufzeit erkannt: >>> def double(anything):... return 2 * anything... >>> print(double(none)) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in double TypeError: unsupported operand type(s) for *: int and NoneType Mehr zu Pythons Polymorphie unter dem Thema duck typing.

Funktionen mit mehreren Ergebnissen Funktionen können mehrere Resultate haben. Ein Beispiel dafür ist die eingebaute Funktion divmod: >>> print(divmod(20, 6)) (3, 2) Auch hier greift der früher erklärte Tuple-Unpacking-Mechanismus: >>> x, y = divmod(20, 6) >>> print(x) 3 >>> print(y) 2 Mehr dazu später unter dem Thema Tupel.

Eingebaute Funktionen ( builtins ) Ähnlich wie in Java sind in Python die meisten Funktionen in Paketen und Modulen untergebracht. Einige häufig benutzte Funktionen sind aber automatisch verfügbar die sogenannten builtins. Einige wichtige builtins: abs(x) Absolutbetrag der Zahl x. Funktioniert auch für komplexe Zahlen. divmod(x, y) x // y und x % y (liefert zwei Ergebnisse). min(x, y,...), max(x, y,...) Minimum bzw. Maximum der übergebenen Zahlen. Variable Argumentzahl (mindestens 1). pow(x, y[, z]) Bei zwei Argumenten: Berechnet x ** y. Bei drei Argumenten: Berechnet (x ** y) % z.

Weitere eingebaute Funktionen: int, float & Co. Zu den Datentypen int, float und complex gibt es gleichnamige Funktionen, die ihr Argument in den entsprechenden Typ umwandeln. Die Funktion int schneidet den Nachkommateil eines Fließkommaarguments ab: >>> int(7.1) 7 complex akzeptiert ein optionales zweites Argument, das den Imaginärteil angibt. Eigentlich handelt es sich nicht um normale Funktionen, sondern eher um Konstruktoren der gleichnamigen Klassen später mehr.

Eingebaute Funktionen: Beispiele >>> min(10, 7.0, -100) -100 >>> divmod(100, 3) (33, 1) >>> pow(3, 1000000, 10) 1 >>> max() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: max expected 1 arguments, got 0 >>> float(10) 10.0 >>> complex( ) (10+0j)

Variablen, Funktionen und Bedingungen Bisher sind wir über die Funktionen eines Taschenrechners nicht hinaus gekommen. Damit sich daran etwas ändert, brauchen wir auf jeden Fall Variablen und Funktionen. Im Einzelnen behandeln wir: Variablen Funktionen: def, return Bedingungen: if, while, bool

Abfragen mit if und else >>> def factorial(n):... if n <= 1:... return 1... else:... return n * factorial(n - 1)... >>> print(factorial(10)) 3628800 Hoffentlich selbsterklärend...

Mehr zu if und else Neben if und else gibt es noch else-if-blöcke, die man in Python als elif notiert. Die allgemeine Form ist dabei: if <bedingung>: <Code> elif <bedingung>: <Code> elif <bedingung>: <Code>... else: <Code> elif- und else-teile sind optional.

while-schleifen >>> def factorial(n):... result = 1... i = 2... while i <= n:... result = result * i... i = i + 1... return result... >>> print(factorial(10)) 3628800 Hoffentlich selbsterklärend... while-schleifen sind in Python vergleichsweise selten, da for (später) meistens eine bessere Alternative ist.

Mehr zu Bedingungen Für Bedingungen stehen die Vergleichsoperatoren aus C/C++ und Java bereit: ==,!=: Gleichheit und Ungleichheit <, <=, >, >=: Anordnung Verknüpfungen von Aussagen werden in Python als and, or und not geschrieben (nicht &&,,!). Vergleiche können wie in der Mathematik verkettet werden: 0 <= x <= 10 ist also äquivalent zu (0 <= x) and (x <= 10).

Beispiel zu and, or und not >>> def is probably prime(n):... if n == 2:... return True... elif n <= 1 or n % 2 == 0:... return False... elif n <= 20 and not (n == 9 or n == 15):... return True... else:... return n % 3!= 0 and n % 5!= 0

Bedingungen: Der Typ bool Vergleiche können auch außerhalb von if und while auftreten: >>> print(1 + 1 == 2) True >>> condition = 24 < 6 * 6 < 26 >>> condition False Das Ergebnis eines Vergleichs ist entweder die Konstante False oder die Konstante True. Der Typ dieser Konstanten ist bool.

Mehr zu bool Wie in C++ entsprechen True und False den Zahlen 1 und 0 (bool ist Subklasse von int), und man kann mit ihnen rechnen: >>> int(true) 1 >>> print(true + True) 2

Mehr zu bool (2) Ebenso wie int, float & Co. kann man bool als Funktion (bzw. Konstruktor) verwenden. bool(none) ist False. bool(0) ist False (ebenso für 0.0 oder 0j). Ansonsten gilt bool(x) == True, falls x eine Zahl ist. Die Bedingung bei if und while muss nicht unbedingt ein bool sein. Ist sie es nicht, wird sie nach bool konvertiert. Also könnten wir auch schreiben: >>> def factorial(n):... result = 1... while n:... result = result * n... n = n - 1... return result