Der Modulo-Operator in Python und FizzBuzz

Über mathematische Operatoren hatte ich bereits vor einiger Zeit einen Blogbeitrag veröffentlicht. In diesem Artikel geht es hingegen nur um den Modulo-Operator, der auch als Restwert-Operator bezeichnet wird. Wie der Name vermuten lässt, dient er dazu, den Restwert einer Division zu bestimmen. In Python wird dieser Operator durch das %-Zeichen repräsentiert.

Angewendet auf die Division von 7 durch 2 führt dies zum Ergebnis von 1. Denn 2 passt dreimal in die Zahl 7; 1 bleibt als Restwert übrig.

Der Modulo-Operator kann auch bei Gleitkommazahlen (float) angewendet werden:

>>> 7.0 % 5.5
1.5

In der Praxis wird aber in diesen Fällen häufig der Methode fmod()aus der Bibliothek math der Vorzug gegeben, da die Präzision höher ist.

>>> import math
>>> math.fmod(7.0, 5.5)
1.5

Ein bekanntes Beispiel für die Demonstration des Modulo-Operators ist FizzBuzz. Dabei handelt es sich um ein Programm, das überprüft, ob eine Zahl durch 3, durch 5 oder durch 3 und 5 geteilt werden kann. Ist die Zahl durch 3 teilbar, soll „Fizz“ ausgegeben werden, ist die Zahl durch 5 teilbar, soll „Buzz“ ausgegeben werden und ist die Zahl durch 3 und 5 teilbar, soll „FizzBuzz“ ausgegeben werden. Für den Fall, dass eine Zahl weder durch 3 noch durch 5 teilbar ist, soll lediglich die Zahl angezeigt werden.

Zur Lösung dieses Problems kann man sich den Umstand zunutze machen, dass in jenen Fällen, in denen die eingegebene Zahl durch 3, 5 oder 15 teilbar ist, der Restwert 0 betragen muss. Die Lösung könnte in Python also wie folgt aussehen:

def check_number(number: int):

    if number % 3 == 0 and number % 5 == 0:
        print("FizzBuzz")
    elif number % 3 == 0:
        print("Fizz")
    elif number % 5 == 0:
        print("Buzz")
    else:
        print(f"{number}")


def main():
    try:
        number = int(input("Enter a number: "))
        check_number(number)
    except ValueError as e:
        print(e)
        print("Invalid input! Please enter a valid number.")


if __name__ == "__main__":
    main()

Dabei wurde in diesem Codebeispiel berücksichtigt, dass der Benutzer eventuell keine Zahl (int) eingibt. Überprüft wird dies durch eine Ausnahmebehandlung in der main()-Funktion.

Dieses kleine Programm ist Bestandteil des Projekts small-python-projects. In diesem Github-Repository veröffentliche ich hin und wieder einfache Python-Beispiele, die sich an Programmiereinsteiger richten. Falls ihr eine Idee für ein kleines Programm habt, das in dieses Repository aufgenommen werden sollte, dann könnt ihr gerne ein Pull Request durchführen. Weitere Informationen finden sich in der Datei CONTRIBUTING.md.