Programmieren in Python 3. Variablen, Funktionen und Bedingungen

Ähnliche Dokumente
Programmieren in Python

Informatik I: Einführung in die Programmierung

Programmieren in Python

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

Programmierkurs Python I

Programmieren I + II Regeln der Code-Formatierung

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

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

Programmierkurs Python I

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

Programmieren I + II Regeln der Code-Formatierung

Funktionen in Python

Funktionen in Python

Python für Linguisten

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

Einführung in die Programmiertechnik

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

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Einführung in Python. Übung zur Vorlesung NLP Beate Krause, Dominik Benz NLP-Übung: Einführung in Python 1

Programmierkurs Python I

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

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

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

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Algorithmen und Programmieren II Einführung in Python

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Schöner Programmieren

Schöner Programmieren

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Übungen zu Programmieren - Code-Formatierung -

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Variablen, Konstanten und Datentypen

Programmieren in Python

Modellierung und Programmierung 1

Programmierung in Python

Welche Informatik-Kenntnisse bringen Sie mit?

Java I Vorlesung Imperatives Programmieren

Programmieren in Python

Programmierkurs C++ Lösungen zum Übungsblatt 3. Nils Eissfeldt und Jürgen Gräfe. 2. November Aufgabe 5

Programmierpraktikum Java Entdecken Merkblatt 2

Einfache Rechenstrukturen und Kontrollfluß

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

JAVA-Datentypen und deren Wertebereich

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Übersicht Shell-Scripten

Unterlagen. CPP-Uebungen-08/

Einführung in die Programmierung II. 3. Kontrollstrukturen

Funktionen nur wenn dann

Grundlagen der Informatik 2. Typen

Tag 4 Repetitorium Informatik (Java)

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Programmieren in Java

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

Funktionen in JavaScript

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Wo sind wir? Übersicht lexikale Struktur von Java

3.2 Datentypen und Methoden

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

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

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in Python

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

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

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

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

Projekt 3 Variablen und Operatoren

Einstieg in die Informatik mit Java

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

Einführung in die Computerlinguistik

Scala. Funktionale (Zustandslose) Objekte

Elementare Konzepte von

Einführung in die Programmierung Wintersemester 2011/12

Anweisungen in Python

AuD-Tafelübung T-B5b

Einstieg in die Informatik mit Java

CADSTAR MRP-Link. MRP-Link ist erstellt von:

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Schleifen in C/C++/Java

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

Programmieren mit Python

Sage 0: Einführung Basics

Einstieg in die Informatik mit Java

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

GI Vektoren

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

Java Einführung Methoden. Kapitel 6

Typ-Polymorphismus. November 12, 2014

C++ - Einführung in die Programmiersprache Schleifen

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Tag 4 Repetitorium Informatik (Java)

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Transkript:

Variablen, Funktionen und Bedingungen Programmieren in Python 3. Variablen, Funktionen und Bedingungen Robert Mattmüller Albert-Ludwigs-Universität Freiburg Handlungsplanungs-Praktikum Wintersemester 2010/2011 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 1 / 34 2 / 34 Variablen Variablen: Details 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 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 3 >>> print(10 + egg) NameError: name egg is not defined 3 / 34 4 / 34

Variablen: Typprüfung (1) Variablen: Typprüfung (2) 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 (1+7j) >>> spam = 100 100 >>> spam = "spam, spam, spam, spam" spam, spam, spam, spam Im Gegensatz zu Variablen sind Ausdrücke aber getypt, und Typfehler werden erkannt: >>> print("eins" + 1) TypeError: Can t convert int object to str implicitly >>> print(1j < 4) TypeError: no ordering relation is defined for complex numbers >>> print("gambolputty"[2.0]) TypeError: string indices must be integers 5 / 34 6 / 34 Variablen: Tuple Unpacking (1) Variablen: Tuple Unpacking (2) Man kann mehrere Werte gleichzeitig zuweisen: >>> spam, egg = 7, 13 7 >>> print(egg) 13 Diesen Vorgang bezeichnet man als tuple unpacking mehr zu Tupeln später. 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 egg >>> print(egg) spam >>> print(spegg) spamegg 7 / 34 8 / 34

Variablen: Die Variable Variablen, Funktionen und Bedingungen 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 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 9 / 34 10 / 34 Funktionen Einrücken! 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 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 11 / 34 12 / 34

Einrücken im interaktiven Interpreter Achtung: Tabs und Spaces 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! 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/). 13 / 34 14 / 34 Wo wir schon mal bei der Formatierung sind... Lange Zeilen (2) 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. 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. 15 / 34 16 / 34

Zurück zu den Funktionen Funktionen: Details >>> def triple(egg): return 3 * egg >>> print(triple(10)) 30 >>> def double(spam): return 2 * spam >>> print(double(5.5)) 11.0 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. 17 / 34 18 / 34 Funktionen: Beispiele Funktion: Polymorphie (1) >>> 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 Python-Funktionen sind von Haus aus polymorph: >>> def double(anything): return 2 * anything >>> print(double(10.2)) 20.4 >>> print(double("badger")) badgerbadger 19 / 34 20 / 34

Funktion: Polymorphie (2) Funktionen mit mehreren Ergebnissen Typfehler werden zur Laufzeit erkannt: >>> def double(anything): return 2 * anything >>> print(double(none)) 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 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. 21 / 34 22 / 34 Eingebaute Funktionen ( builtins ) Weitere eingebaute Funktionen: int, float & Co. Ä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. 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. 23 / 34 24 / 34

Eingebaute Funktionen: Beispiele Variablen, Funktionen und Bedingungen >>> min(10, 7.0, -100) -100 >>> divmod(100, 3) (33, 1) >>> pow(3, 1000000, 10) 1 >>> max() TypeError: max expected 1 arguments, got 0 >>> float(10) 10.0 >>> complex( ) (10+0j) 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 25 / 34 26 / 34 Abfragen mit if und else Mehr zu if und else >>> def factorial(n): if n <= 1: return 1 else: return n * factorial(n - 1) >>> print(factorial(10)) 3628800 Hoffentlich selbsterklärend... 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. 27 / 34 28 / 34

while-schleifen Mehr zu Bedingungen >>> def factorial(n): result = 1 i = 2 while i <= n: result = result * i i = i + 1 return result >>> print(factorial(10)) 3628800 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). Hoffentlich selbsterklärend... while-schleifen sind in Python vergleichsweise selten, da for (später) meistens eine bessere Alternative ist. 29 / 34 30 / 34 Beispiel zu and, or und not Bedingungen: Der Typ bool >>> 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 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. 31 / 34 32 / 34

Mehr zu bool Mehr zu bool (2) 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 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 33 / 34 34 / 34