Python 3 Grundlagen (Wiederholung)

Warum?

Warum Programmieren in der Schule?

Techniker müssen später in der Praxis immer wieder Probleme lösen. Um diese Intelligenz in der Schule zu fördern eignet sich Mathematik und das Programmieren. Es ist nicht wichtig über welche Programmiersprache dies geschieht. Die Strukturen und Lösungsansätze sind ähnlich in unterschiedlichen Sprachen. Ob ich Schleifen oder Fehlersuche in Pascal, in Assembler, oder auf einer SPS erlerne ist nicht relevant. Wichtig ist, dass der Schüler sich das Wissen selbst erarbeitet ( learning by doing ).

Warum Python?

Weil es die einzige Programmiersprache ist die nach der englischen Comedy-Truppe "Monty Pythons Flying Circus" benannt ist ;).
Python ist eine moderne, objektorientierte Programmiersprache in der sich Programme schneller und einfacher entwickeln lassen als in anderen Sprachen. Python hat eine sparsame und äußerst übersichtliche Syntax, was die Einstiegshürde für den Anfänger minimiert und die Fehlersuche erleichtert.
Python ist freie Software (der Sourcecode ist offen und Python ist kostenlos).Programme die in Python geschrieben wurden laufen plattformunabhängig auf fast allen Rechnern. Daneben bringt Python mit Tkinter ein mächtiges, einfaches und platformunabhängiges Werkzeug zur Programmierung grafischer Benutzeroberflächen mit, wie wir im nächsten Kapitel sehen werden.
Daneben gibt es für Python hunderte fertige freie Module, die viele Standard-Programmieraufgaben abdecken, und so das Programmieren wesentlich vereinfachen.

Python Version 3

Es gibt leider zwei Python Versionen (2.x und 3.x). In Linux ist es daher nötig die Programme mit dem Kommando

    python3

zu starten (statt python).
Wir verwenden ausschließlich die 3er Version (aktuell Python 3.5.2).

Diese Seite inspiriert sich an einem englischen Dokument von Jean-claude Feltes (Danke Jean-Claude!). Es existiert somit auch ein englisches Dokument mit dem Namen python_basics.pdf.

Installation

In Linux, ist Python meist schon in beiden Versionen installiert. Fehlt trotzdem die dreier Version, so kann sie mit:

    sudo apt install python3, idle3

in Ubuntu oder Debian (Raspberry Pi) nachinstalliert werden.

Für Windows findet man auf python.org, die entsprechende Installationsdatei. Unter Windows muss man, falls kein entsprechender Pfad gesetzt wurde, in das Python Verzeichnis unter C:\ wechseln um Programme auszuführen. Besser ist es beim Installieren unter advanced zu veranlassen, dass der Pfad richtig eingetragen wird.

Python interaktiv

Der interaktive Modus von Python ermöglicht es einzelne Zeilen Python-Code einzugeben und die Wirkung sofort zu testen. In Linux tippt man einfach

    python3

in Windows wählt man das Programm-Icon Python (Command Line).

Eine zweite Möglichkeit ist die im die zum Standard-Paket von Python gehörende Entwicklungsumgebung IDLE die ein eigenes Shell-Fenster besitzt. In Linux tippt man einfach

    idle3

in Windows wählt man das entsprechende Programm-Icon.

Der interaktive Modus ist durch das Prompt aus drei spitzen Klammern zu erkennen.

    >>>

Verlassen kann man den interaktiven Modus mit Ctrl+D.

Man kann die ineraktive Shell als einfachen, aber sehr präzisen Taschenrechner nutzen:

    >>> 3.14*5
    15.700000000000001    

Folgende Operatoren können verwendet werden:


Operator Wirkung Beispiel Erklärung
-x, +x / Negatives, Positives Vorzeichen unäre Operatoren
+, -, *, / Addition, Subtraktion, Multiplikation, Division
// ganzzahlige Division 84 // 5 = 4 84/5 = 16, Rest = 4
% modulo 84 % 5 = 4 84/5 = 16, Rest = 4
** Potenz 2**10 = 1024
~, & , ❘, ^ Bitweise: Inversion (unär), UND, ODER, XOR 23 & 13 = 5 0b10111 @ 0b01101 = 0b00101
<<, >> Verschiebung (bitweise) 3 << 2 = 12 0b11 << 2 = b01100
not, and ,or logisches (boolsches) NICHT, UND, ODER a and b = True falls a = True und b = True
<, >, <=, >=, ==, != Vergleiche 2 == 3 False
is, is not, in , not in Identitätstest, Test auf Zugehörigkeit
lamda Lamda-Ausdruck

Natürlich gibt in Python viele eingebaute Funktionen:

    >>> hex(1024)
    '0x400'
    >>> bin(1024)
    '0b10000000000'

Ganze Ausdrücke mit Klammern können eingetippt werden:

    >>> (20.0+4)/6
    4
    >>> (2+3)*5
    25

Es können aber auch Variablen genutzt werden um zu rechnen:

    >>> a=2.0
    >>> b = 3.36
    >>> a+b
    5.359999999999999
    >>> a-b
    -1.3599999999999999
    >>> a**2 + b**2
    15.289599999999998
    >>> a>b
    False

Der Name einer Variablen darf natürlich kein Schlüsselwort von Python sein. Schlüsselwörter sind:


False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass
break except in raise

Module importieren

Mathematische Funktionen die nicht im Standard-Paket enthalten sind (Zweierwurzel, Sinus, Konstatnten wie Pi) befinden sich in einem Modul mit dem Namen math. Um diese Nutzen zu können muss das Modul (die Bibliothek) eingebunden werden. Dazu gibt es drei Möglichkeiten.

1. Die einfachste Methode ist einfach alles aus dem Modul zu importieren.

    >>> from math import *
    >>> print (sin(pi/4))
    0.7071067811865475

Das hat aber den Nachteil, dass Namenskonflikte auftreten können (wenn zum Beispiel eine Variable sin oder pi heißt). Dies ist also nur zu empfehlen wenn bekannt ist was sich alles im Modul befindet.

2. Die zweite Methode besteht darin das Modul als solches mit seinem eigenen Namen zu importieren oder ihm einen (ev. kürzeren) Alias-Namen zuzuweisen.

    >>> import math
    >>> print(math.pi)
    3.141592653589793
    >>> import math as m
    >>> print(m.pi)
    3.141592653589793

Das hat den Nachteil, dass der Code größer wird und mehr Tipparbeit anfällt.

3. Die dritte und in diesem Kurs bevorzugte Version besteht darin nur das zu importieren was benötigt wird.

    >>> from math import sin, pi
    >>> print(sin(pi/8))
    0.3826834323650898

Hier noch zwei weitere Beispiele in denen das Modul `math: genutzt wird.

Aufgabe B1:

Teste die beiden folgenden Programme zur Berechnung des Umfangs eines Kreises und der Amplitude einer Sinuswelle (sqrt() für die Quadratwurzel) im interaktivem Modus:

    >>> from math import pi
    >>> diameter = 5
    >>> perimeter = 2 * pi * diameter
    >>> perimeter
    31.41592653589793
    >>> from math import sqrt
    >>> Ueff = 230
    >>> amplitude = Ueff * sqrt(2)
    >>> amplitude
    325.2691193458119

Python Skripte

Programme werden in Python auch noch Skript genannt. Dabei handelt es sich um einfache Textdateien mit der Endung .py oder .pyw. Sie können mit einem beliebigen Texteditor geschrieben werden (kate, geany, nano, wordpad) und dann mit python3 bzw. `python ausgeführt werden. Bsp.:

    python3 my1script.py

Am einfachsten nutzt man IDLE die Entwicklungsumgebung von Python. Dazu öffnet man ein neues Editor-Fenster mit Ctrl+N (File -> New File), tippt das Skript unf führt rs mit F5 (Run -> Run Module) aus. Beim ersten Mal wird der Name des Skripts abgefragt.

Achtung

  1. Python nutzt Leerzeichen für seine Struktur. Das Einrücken erfolgt in diesem Kurs, wie meist in Python, mit jeweils 4 Leerzeichen. Zu viele oder zu wenige Leerzeichen bewirken Fehler! Nutze keinen Tabulator, außer wenn dieser vom Editor durch 4 Leerzeichen ersetzt wird.

  2. Genau wie in Linux ist es nicht egal ob Buchstaben groß oder klein geschrieben werden. Pi und pi sind zwei unterschiedliche Variablen!

Ein erstes Skript

Das folgende Skript berechnet die Fläche eines Kreises:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "circle_area.py"
    # A script to calculate the area of a circle

    from math import pi

    d = 10.0            # diameter as const.
    A = pi * d**2 / 4
    print ("diameter =", d)
    print ("area =", A)

Die ersten vier Zeilen sind nicht unbedingt notwendig, aber oft hilfreich. Alles hinter dem Nummernzeichen # (hash, hashtag) wird in Python als Kommentar angesehen und nicht im Skript ausgeführt.

Die erste Zeilen sieht aus wie ein Kommentar und wird auch nicht im Programm ausgeführt. Es handelt es sich aber um ein sogenanntes Shebang, das in Linux bewirkt, dass "/usr/bin/env python3" beim Aufruf des Python-Skript ausgeführt wird. Dadurch kann in Linux das Python-Skript durch ein Klick mit der Maus ausgeführt werden wie ein normales Programm. Allerdings muss die Datei dazu die richtigen Rechte besitzen, d.h. sie für den Anwender ausführbar sein (Befehl: chmod u+x circle_area.py).

Die zweite Zeile legt fest wie das Skript kodiert ist. In Linux und im Netz ist das Default utf-8. In Windows kodieren einige Editoren aber auch in latin-1 (iso-8859-1) oder iso-8859-15. Die Zeile ist also nur nötig wenn in Windows programmiert wurde und Zeichenfehler bei z.B. Umlauten auftreten.

Die dritte Zeile ist eine Kommentarzeile und enthält den Dateinamen des Python-Skripts, so wie eine Beschreibung. Kommentare in Programmen sind extrem wichtig. Erstens damit man auch nach einigen Monaten noch weiß was man da programmiert hat (der Mensch ist leider äußerst vergesslich) und zweitens damit andere Programmierer das Programm verstehen können. Um möglichst vielen Programmieren Zugang zu gewären sollten die Kommentare wenn möglich in Englisch sein.

Aufgabe B2:

Teste das Programm in IDLE. Die Ausgabe erfolgt im Shell-Fenster.

Eingabe über die Tastatur

Natürlich soll das Programm unterschiedliche Flächen berechnen. Das geht einfacher wenn der Nutzer interaktiv mit der Tastatur die Werte ändern kann und nicht dauernd den Programmcode verändern muss. Dazu dient die Methode (Funktion) input

Das folgende Programm erfragt den Namen eines Nutzers und grüßt ihn:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "hello.py" testing input()

    s = input("What is your name?")
    print ("Hello", s)
Aufgabe B3:

Ändere das vorige Programm, so dass der Durchmesser vom Benutzer abgefragt wird. !!Die input()-Methode gibt eine Zeichenkette (string) zurück. Diese muss zuerst mit der int()-Methode (bei ganzen Zahlen) oder der float()-Methode in eine Zahl umgewandelt werden, bevor die Berechnung durchgeführt wird
(d = float(input("Please enter the diameter: "))).

Objekte

Python ist eine objektorientierte Sprache. Fast alles in Python, auch einfache Variablen, sind Objekte. Ein Objekt besteht aus Attributen (Variablen, Daten) und Methoden (Funktionen).
Ein Objekt "Lampe" könnte zum Beispiel die Attribute "eingeschaltet" (ja, nein) und "helligkeit" (0-800 Lumen) besitzen und die Methoden "einschalten()" und "ausschalten()".

Wenn wir

    d = 10

eintippen entsteht ein neues Objekt vom Typ integer(ganze Zahl). Hätten wir 10.0 eingetippt, wäre ein Objekt vom Typ float (Gleitkommazahl) entstanden.

Es gibt viele Objekte in Python. Die wichtigsten sind:


Objekt Typ Klassenname Beispiele Beschreibung
Integer (Ganze Zahl) int a = 5 , b = -3 signed integer, 32 bit
Float (Gleitkommazahl) float pi = 3.14, f = 3.0e-10 double precision floating point number, 64 bit
Complex (Komplexe Zahl) complex c = 3+5j , c = complex(3,5) complex number
Character (Zeichen) chr c = 'A', c2 = chr(66) character 1 Byte
String (Zeichenkette) str s = "Monthy Python" list of characters, text string

Aufgabe B4:

Tippe in IDLE die folgenden beiden Zeilen:

    s = "Hallo"
    b = s.

Warte nach dem Tippen des Punktes kurz. IDLE zeigt dir nun die für das string-Objekt zur Verfügung stehenden Methoden. Eine der Methoden heißt strip(). Teste die Methode mit folgendem Code:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "test_strip.py" testing the strip() method

    s = "Hallo"
    print(s)
    b = s.strip('o')
    print(b)

Verzweigungen: if...elif...else

Oft benötigt man in Programmen Verzweigungen um ,abhängig von einer Bedingung, Code auszuführen oder auch nicht. Die Bedingung ist dabei ein logischer Ausdruck, der "wahr" sein muss, damit die Verzweigung stattfindet.

Beispiele von Bedingungen:


Beispiel Erklärung
x == 5 "wahr" wenn x gleich 5
x != 5 "wahr" wenn x nicht gleich 5
x < 5 "wahr" wenn x kleiner 5
x >= 5 "wahr" wenn x grösser oder gleich 5
(x != 5) AND (x <= 10) "wahr" wenn x kleiner gleich 10 UND nicht gleich 5

Im folgenden Programm wird nur der User mit dem Namen Tom begrüßt:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "greet_tom.py" my first if

    s = input ("Input your name: ")
    if s == "Tom":
        print ("HELLO", s)

Die if-Anweisung beginnt mit dem Schlüsselwort if, gefolgt von der Bedingung und sehr wichtig dem Doppelpunkt. Der Code-Block (hier nur eine Zeile) der ausgeführt werden soll, muss um 4 Leerzeichen eingerückt werden.

Mit Hilfe der else-Anweisung (mit Doppelpunkt!) kann ein zweiter Code-Block ausgeführt werden, wenn die Bedingung "nicht wahr" ist:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "greet_tom_2.py" my first if else

    s = input ("Input your name: ")
    if s == "Tom":
        print ("HELLO", s)
    else:
        print ("Hello stranger")

Mehrere Bedingungen können mit Hilfe der elif-Anweisungen ausgewertet werden. In Python existiert keine case- oder switch-Anweisung.

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "greet_tom_3.py" my first elif

    s = input ("Input your name: ")
    if s == "Tom":
        print ("HELLO", s)
    elif s == "Ketty":
        print ("I'm glad to see you", s)
    elif s == "Ben":
        print ("I didn't expect you",s)
    else:
        print ("Hello stranger")
Aufgabe B5:

Teste die drei Programme. Ändere Text und Namen.

Abfangen von Laufzeitfehlern mit try...except

Während das Programm läuft, kann es leicht zu Systemfehlern kommen, bei denen das Programm einfach abbricht. Es ist viel eleganter, wenn das Programm einen solchen Fehler (Ausnahme, exception) erkennt, und mit einer sinnvollen Meldung abfängt.

Dies geschieht mit der try...except-Anweisung. Der Programmteil, wo eine Ausnahme zu erwarten ist, befindet sich hinter try:. Hinter except: befindet sich dann der Code der ausgeführt werden soll, falls eine solche Ausnahme auftritt.

Zum Beispiel erzeugt ein Eingabefehler (Text statt Integerzahl) eine ValueError-Ausnahme. Eine eindeutigen Fehleraussage soll dies sauber dokumentieren:

    try:
        x = int(input("Please enter a number: "))
    except ValueError:
        print("Oops!  No valid number.  Please try again...")

Eine Division durch Null bewirkt einen ZeroDivisionError. Öffnet man eine nicht vorhandene Datei erhält man einen IOError. Unterbricht man ein Programm mit Ctrl+C so wird eine KeyboardInterrupt-Ausnahme erzeugt. Diese kann dann zum Beispiel genutzt werden um noch offene Dateien zu schließen.

Aufgabe B6:

Schreibe ein kurzes Programm, das zwei Zahlen dividiert und bei der Division durch Null eine Fehlermeldung ausgibt.

While Schleife

Sobald Aufgaben mehrfach zu erledigen sind nutzen wir Schleifen in der Programmierung. In Python gibt es nur 2 Arten von Schleifen:

Die while-Schleife nutzt eine Bedingung um abzubrechen. Die Syntax ist ähnlich wie bei der if-Aweisung.
Die for-Schleife nutzt Listen und keine klassischen Schleifenzähler um die Anzahl der Durchläufe zu bestimmen (siehe weiter unten).

In der folgenden Aufgabe werden die Quadratwurzeln aller Zahlen von 0-100 errechnet. Achte auf die Syntax (Doppelpunkt und 4 Leerzeichen für den Code-Block)!

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "sqrt_0_100.py" 
    # Calculate square root of numbers 0 to 100

    from math import sqrt

    i = 0 # init. loop counter
    while i<= 100:
        print (i, "\t\t" , sqrt(i)) # '\t' for tabulator
        i = i + 1                   # increment i, more Pythonic: i += 1
    print ("READY!")

Der eingerückte Block wird so oft wiederholt wie die Bedingung i <= 100 "wahr" ist, also 101-mal.

Achtung

Vermeide Endlosschleifen! Die folgende Schleife wird nie abgebrochen. Das Programm stoppt nie und muss mit Ctrl+Cabgebrochen werden.

    i = 0
    while i<= 5 :
        print (i)
Aufgabe B7:

Schreibe ein Programm, das den Kosinus von 0 bis 180° in 2 Grad Schritten berechnet.

Tupel

In Python können mehrere Objekte unter einem Objekt zusammengefasst werden. Es gibt verschiedene Möglichkeiten solcher Sequenzen. Neben Zeichenketten (strings) und Oktetfolgen (bytestrings) sind dies Tupel und Listen. Ein Tupel fasst eine Folge von Objekten durch Komma getrennt zwischen runden Klammern zusammen. Die Objekte müssen nicht vom gleichen Typ sein.
Genau wie bei strings die Zeichen können bei Tupel die einzelnen Elemente nicht verändert werden. Tupel kann man nutzen um kleine Mengen an Daten zusammenzufassen wie zum Beispiel Koordinaten:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "testing_tuples.py" 

    (x,y) = (5, 3)
    coordinates = (x,y)
    print ("coordinates x and y:", coordinates)

    dimensions = (8, 5.0, 3.14)
    print (dimensions)
    print ("x =", dimensions[0])
    print ("y =", dimensions[1])
    print ("z =", dimensions[2])

Mit eckigen Klammern kann auf die einzelnen Objekte im Tupel zugegriffen werden (das erste Objekt hat den Index 0!).

Aufgabe B8:

Teste das obige Programm.

Listen

Listen sind interessanter als Tupel, da Listen beliebig verändert werden können. Auch eine Liste kann aus beliebigen Objekten bestehen. Es werden eckige Klammern für Listen verwendet.
Beispiele für Listen:

    nameslist = ["Sam", "Lisy", "Pit"]
    numberslist = [1, 2, 3.14]
    mixedlist = ["Tom", "Müller", 13, "rue Nic Stumper", 4851 , Luxembourg"]

Neue Elemente können mit der append()-Methode angehängt werden. Weitere Methoden sind zum Beispiel sort(), remove() oder insert(). Eine leere Liste wird mit 2 eckigen Klammern erzeugt. Die Länge einer Liste kann mit der len()-Methode ermittelt werden. Mit einem Index kann genauso wie bei Tupel auf einzelne Elemente zugegriffen werden.

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "testing_lists.py" 

    a = [0,1,2]
    print (a)
    a.append(5.0)           # append a float number

    print (a)
    b = []                  # create an empty list
    print (b)
    b.append("Zapzoo")      # append a string
    b.append("Network")    
    b.append("Dullemajik") 
    print (b)
    print (len(b))          # get the length of the list
    print (b[1])

    c = [0]*20              # array of integers with 20 zero elements
    print (c)
    print (len(c))
Aufgabe B9:

Teste das obige Programm.

Die range()-Methode

Die range()-Methode ermöglicht uns sehr einfach eine Liste mit Integer-Nummern zu erstellen! Dazu übergibt man durch Komma getrennt die Parameter Startwert, Endwert und Schrittweite. Hier einige Beispiele:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "testing_range.py" 

    r1 = range(11)         # 0...10
    print (r1)             # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    r2 = range(5, 16)      # 5...15    
    print (r2)             # [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
    r3 = range(4, 21, 2)   # 4...20  step 2
    print (r3)             # [4, 6, 8, 10, 12, 14, 16, 18, 20]
    r4 = range(15, 4, -5)  # 15....5 step -5
    print (r4)             # [15, 10, 5]

!! Die range()-Methode arbeitet nur mit Integer-Zahlen und der Endwert ist nicht in der Liste enthalten !!

For Schleife

Die for Schleife wird für Iterationen verwendet. Iteration bedeutet, dass eine Folge von Elementen durchlaufen wird, und für jedes Element ein Anweisungsblock ausgeführt wird. Dazu verwenden wir meist Listen oder Tupel. Mit der range()-Methode kann wie mit einem Schleifenzähler bestimmt werden wie oft die Schleife durchläuft.

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "testing_for_loop.py" 

    from math import *

    mynames = ["Sam", "Pit", "Misch"]
    for n in mynames:
        print ("HELLO ", n)

    print ('\n')                # new line

    for i in range (0, 5):
        print (i, '\t', sqrt(i))
Aufgabe B10:

Teste die Programme für die range()-Methode und die for Schleife.

Funktionen

Unter Funktionen verstehen wir Code-Blöcke, die eine bestimmte Aufgabe erfüllen und mehrfach verwendet werden sollen (Unterprogramme in Assembler).
Funktionen müssen definiert werden bevor sie benutzt werden können. Danach können sie wie normale Python-Befehle verwendet werden.
In Python sind Funktionen ebenfalls Objekte. Ihre Besonderheit ist, dass sie aufgerufen werden können. Gehören Funktionen zu einem Objekt, nennt man sie Methoden.

Eine Funktion besteht aus dem def Schlüsselwort, gefolgt vom Funktionsnamen, den Parametern (getrennt durch Komma in runden Klammern) und dem Doppelpunkt. Der Code-Block ist um 4 Leerstellen eingerückt. Soll ein Wert oder mehrere Werte von der Funktion zurückgegeben werden, so enthält der Code-Block eine return-Anweisung.

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "testing_functions.py" 

    # function definitions
    def area(b, h):
        """calculate area of a rectangle"""
        A = b * h
        return A

    def perimeter(b, h):
        """calulates perimeter of a rectangle"""
        P = 2 * (b + h)
        return P

    # main program using defined functions
    width = 5
    height = 3
    print ("Area =", area(width, height), "m²")
    print ("Perimeter =", perimeter(width, height), "m")

Der Text in dreifachen Gänsefüßchen hinter der def-Zeile ist ein sogenannter docstring. Docstrings sind Textzeilen, die als erste Zeile bei Funktionen, Methoden, Klassen oder Modulen stehen. Sie werden dann zu _doc_ Spezial-Attributen des Objekts.

Mit den Parametern übergeben wir der Funktion Werte (Objekte) mit denen sie arbeiten kann.

Mit der return-Anweisung geben wir dem Hauptprogramm einen oder mehrere Werte zurück.

Beispiel zur Rückgabe zweier Werte:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "testing_functions2.py" 

    # function definition
    def area_and_perimeter (b, h):
        """calulates area and perimeter of a rectangle"""
        A = b * h
        P = 2 * (b+h)
        return A, P

    # main program using defined function
    ar, per = area_and_perimeter (4, 3)
    print ("Area =", ar, "m²")
    print ("Perimeter =", per, "m")

Hier werden die beiden Werte als Tupel zurückgegeben. Man kann natürlich auch Listen verwenden um mehrere Werte zu übergeben.

Muss kein Wert an das Hauptprogramm zurückgegeben werden, so kann die return-Anweisung natürlich einfach weggelassen werden.

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # "testing_functions3.py" 

    # function definition
    def greeting():
        print("HELLO")

    # main program using defined functions
    greeting()

Fasst man mehrere Funktionen in einer Datei zusammen, so erhält man ein Modul (Programmbibliothek). Dieses Modul kann dann importiert (siehe oben).

Aufgabe B11:

Teste die Programme und schreibe eine Funktion zur Berechnung der Oberfläche und des Volumens einer Kugel. Als Parameter soll der Durchmesser übermittelt werden.


Links und Quellen::