Teil 8: Eigene Funktionen

Lernziele
  • Eine eigene Funktion mit def schreiben und aufrufen
  • Funktionen Argumente übergeben
  • Mit return einen Wert zurückgeben und weiterverwenden
  • Den Unterschied zwischen Ausgeben und Zurückgeben erklären
  • Funktionen innerhalb anderer Funktionen aufrufen

Neue Befehle:

  • def definiert eine eigene Funktion
  • return gibt einen Wert zurück und beendet die Funktion

Eigene Funktionen

Funktionen kennst du schon: print, input, max. Jetzt schreiben wir eigene. Funktionen machen Programme kürzer, übersichtlicher und leichter zu korrigieren, weil eine Änderung nur an einer Stelle nötig ist.

def sag_hallo():
    print("Hallo")

sag_hallo()
sag_hallo()
Aufbau einer Funktion

Argumente

Damit eine Funktion mit verschiedenen Werten arbeiten kann, übergibt man ihr Argumente.

def gerade(x):
    if x % 2 == 0:
        print("gerade")
    else:
        print("ungerade")

gerade(10)
gerade(13)

Mehrere Argumente werden mit Kommas getrennt. Die Funktion erwartet immer genau so viele, wie bei der Definition angegeben wurden.

def teilbar(a, b):
    if a % b == 0:
        print(a, "ist durch", b, "teilbar")

Rückgabewerte

Bisher haben unsere Funktionen etwas ausgegeben. Nützlicher ist es meist, wenn sie ein Ergebnis zurückgeben, mit dem das Programm weiterrechnen kann. Dafür gibt es return.

def teilbar(a, b):
    if a % b == 0:
        return True
    else:
        return False

for n in range(10):
    if teilbar(n, 2):
        print(n)
Ausgeben oder zurückgeben

Weil teilbar bereits True oder False liefert, genügt im if der blosse Aufruf. Der Vergleich == True ist überflüssig.

Funktionen in Funktionen

Eine Funktion darf andere Funktionen aufrufen. So baust du grössere Programme aus kleinen, geprüften Bausteinen.

def teilbar_bis(n):
    for x in range(n):
        if teilbar(x, 3):
            print(x)

teilbar_bis(20)

Aufgaben

Aufgabe 8.1

Schreibe die Funktion quadrieren(x), die das Quadrat zurückgibt. Teste sie mit 3.

PythonLoading editor…
Aufgabe 8.2

Schreibe die Funktion summe_zwei(a, b), die die Summe zurückgibt. Teste sie mit 5 und 7.

PythonLoading editor…
Aufgabe 8.3

Schreibe die Funktion rechteck(l, b), die Fläche und Umfang zurückgibt.

PythonLoading editor…
Aufgabe 8.4

Schreibe die Funktion max3(a, b, c), die den grössten der drei Werte zurückgibt, ohne max zu verwenden.

PythonLoading editor…
Aufgabe 8.5

Schreibe die Funktion durch_vier(n), die True zurückgibt, wenn n durch 4 teilbar ist.

PythonLoading editor…
Aufgabe 8.6

Schreibe die Funktion ist_prim(n), die prüft, ob n eine Primzahl ist. Eine Primzahl ist nur durch 1 und sich selbst teilbar.

PythonLoading editor…
Aufgabe 8.7

Schreibe die Funktion minimum(x, y), die den kleineren Wert zurückgibt, ohne min zu verwenden.

PythonLoading editor…
Aufgabe 8.8

Schreibe einen Kreisrechner kreis(radius), der Durchmesser, Umfang und Fläche zurückgibt. Verwende für die Kreiszahl vorerst 3.14159.

PythonLoading editor…

Weitere Aufgaben

Zusatzaufgabe 8.9

Teste deine Funktion ist_prim mit den Zahlen 2, 3, 4, 11 und 15. Welche Ergebnisse erwartest du, bevor du das Programm laufen lässt? Welcher Testfall ist am wichtigsten?

PythonLoading editor…
Zusatzaufgabe 8.10

Schreibe die beiden Funktionen c_to_f(c) und f_to_c(f) zur Umrechnung von Temperaturen. Es gilt f=c⋅1.8+32f = c \cdot 1.8 + 32. Prüfe, ob 00 Grad Celsius zu 3232 Grad Fahrenheit werden und umgekehrt.

PythonLoading editor…
Zusatzaufgabe 8.11

Schreibe die Funktion fakultaet(n) mit einer Schleife und teste sie mit 5.

PythonLoading editor…
Zusatzaufgabe 8.12

Schreibe die Funktion buchstabensuche(buchstabe, wort), die True zurückgibt, wenn der Buchstabe im Wort vorkommt. Löse die Aufgabe zuerst mit einer Schleife.

PythonLoading editor…