Ein Baustein für Primzahltests
Verhaltensbeschreibung
Ziel ist es weiterhin, eine Funktion zu entwickeln, mit der man natürliche Zahlen daraufhin überprüfen kann, ob sie Primzahlen sind oder nicht.
Die Funktion istPrimzahl
verarbeitet eine Zahl vom Typ int
(d.h. eine ganze Zahl) und liefert als Ergebnis einen Wert vom Typ bool
(d.h. einen der beiden Wahrheitswerte True
oder False
) zurück.
Ein erster Implementierungsversuch
Hier eine Implementierung zu einem der Primzahltestalgorithmen aus dem letzten Abschnitt.
xxxxxxxxxx
undefined
Aufgabe 1
Ergänze weitere Testaufrufe der Funktion istPrimzahl
. Überlege dir, welche Testaufrufe hier besonders sinnvoll sind.
Eine Implementierung mit Testfällen
Eine implementierte Funktion sollte immer gründlich getestet werden. Meist reicht dazu nicht nur ein Testfall. Vielmehr muss man unterschiedlichste Situationen mit Testfällen abdecken. Hierzu zählen insbesondere die Randfälle.
Beim Testen kommt es darauf an, die Erwartungen, die man an eine Funktion hat, mit dem tatsächlichen Verhalten abzugleichen. Eine gute Strategie ist es, die Erwartungen vorab schon einmal zu dokumentieren.
Python bietet eine Möglichkeit, Verhaltensbeschreibungen in Form von Testfällen in die Implementierung von Funktionen zu integrieren und diese Testfälle dann automatisiert zu überprüfen. Mehr über dieses Thema findest du im Abschnitt Exkurs - Modultest in Python.
Wenn man diese Funktionsdefinition ausführt, dann werden die Testfälle überprüft und man erhält genaue Rückmeldungen.
Aufgabe 2
(a) Probiere das selbst aus. Wie sind die Rückmeldungen von Python zu deuten?
(b) Verbessere die Funktionsdefinition so, dass alle Testfälle den Test bestehen. Tipp: Du musst zu Beginn eine zusätzliche Fallunterscheidung vorsehen.
Verwendung einer Funktion als Baustein
Eine gut getestete Funktionsdefinition kann man bei weiterführenden Problemlösungen als Baustein verwenden. Hier ein Beispiel, bei dem überprüft werden soll, ob ein Primzahlzwilling vorliegt.
Der Funktionsbaustein wird hier mit einer import
-Anweisung in das Programm integriert. Die importierte Funktion istPrimzahl
befindet sich hier in der Datei primzahltest.py
.
Aufgabe 3
(a) Teste selbst, indem du die Funktionsdefinition ausführst.
(b) Die geschachtelte Fallunterscheidung kann man vermeiden, wenn man einen logischen Operator benutzt. Informiere dich im Abschnitt Bedingungen über logische Operatoren.
Aufgabe 4
Entwickle eine Funktionsdefinition für eine Funktion naechstePrimzahl
. Benutze die Funktion istPrimzahl
als Baustein.