7B: Mathematik

Lektion 7 besteht aus drei Teilen A, B und C, die in beliebiger Reihenfolge bearbeitet werden können.

Bislang haben wir mathematische Berechnungen angestellt, indem wir Pythons Operatoren +, -, *, / und die Funktionen max und min verwendet haben. In dieser Lektion werden wir einige weitere Operatoren und Funktionen sehen, und wir werden lernen, wie wir komplexere Berechnungen anstellen können.

Mathematische Operatoren

Wir haben bereits gesehen, wie man Operatoren verwendet, um zu addieren (a + b), subtrahieren (a - b), multiplizieren (a * b) und dividieren (a / b). Wir werden jetzt mehr über drei zusätzliche Operatoren lernen.

  • Der Potenz-Operator a ** b berechnet ab (a, das insgesamt b mal mit sich selbst multipliziert wird). Zum Beispiel ergibt 2 ** 3 das Ergebnis 8 (nämlich 2*2*2).
  • Der ganzzahlige Divisions-Operator a // b berechnet den "Quotienten" von a dividiert durch b und ignoriert den Rest. So ergibt zum Beispiel 14 // 3 das Ergebnis 4.
  • Der Teilungsrest-Operator a % b (auch: Modulo-Operator) berechnet den Rest, wenn a durch b dividiert wird. So hat zum Beispiel 14 % 3 das Ergebnis 2.

Beispiel
Die Operatoren für  Potenzen, ganzzahlige Division und Teilungsreste

Programmierübung : Eggsactly
Eierkartons haben Platz für exakt 12 Eier. Schreibe ein Programm, das eine ganzzahlige Anzahl von Eiern aus dem input() liest und dann zwei Zahlen ausgibt: wieviele Kartons mit diesen Eiern gefüllt werden können, und wieviele Eier übrig sein werden. Zum Beispiel ist die Ausgabe, die 27 Eiern entspricht

2
3
da 27 Eier 2 Kartons füllen, wobei 3 Eier übrig bleiben. Hinweis

Du kannst die Eingabe für das Programm in die Box unten eingeben.

Der Modulo-Operator wird für eine Vielzahl an Aufgaben verwendet. Er kann verwendet werden, um Fragen wie die folgenden zu beantworten:

  • Wenn es jetzt 10 Uhr ist, wie spät wird es in 100 Stunden sein? (Hier wird der Rest einer Division durch 12 benötigt; es muss also modulo 12 gerechnet werden.)
  • Wird das Jahr 2032 ein Schaltjahr sein? (Hier muss modulo 4, 100 und 400 gerechnet werden.)

Das Testen von Schaltjahren ist ein Beispiel für die Überprüfung von Teilbarkeit. In der nächsten Übung bitten wir dich, ein Programm zu schreiben, das ganz allgemein die Teilbarkeit überprüft.

Programmierübung : Teilbarkeit
Schreibe ein Programm, das zwei positive ganze Zahlen a und b in unterschiedlichen Zeilen einliest. Wenn a durch b teilbar ist, gib die  Botschaft "divisible" (also teilbar) aus. Wenn nicht, gib die Botschaft "not divisible" (also nicht teilbar) aus. Zum Beispiel, für folgende Eingabe:

14
3
sollte das Programm "not divisible" ausgeben. Hinweis
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Mathematische Funktionen

Python kann die meisten mathematischen Funktionen berechnen, die sich auf einem wissenschaftlichen Taschenrechner befinden.

  • sqrt(x) berechnet die Quadratwurzel der Zahl x.
  • exp(x) und log(x) sind die Exponentialfunktion und der natürliche Logarithmus.
  • sin(x), cos(x), tan(x) und andere trigonometrische Funktionen sind verfügbar.
  • pi, die mathematische Konstante 3.1415..., gehört ebenfalls dazu.

Wenn du die trigonometrischen Funktionen von Python verwendest, musst du den Winkel x als Radiant angeben, nicht in Grad.

Python beinhaltet eine derart große Menge an Funktionen, dass sie in Gruppen organisiert werden, die Module genannt werden. Die oben gezeigten Funktionen gehören zum math Modul. Bevor du eine Funktion eines Moduls verwendest, musst du das Modul importieren, wie du es im Beispiel unten siehst. Um eine Funktion eines Moduls zu verwenden, musst du den Modulnamen eingeben, dann einen Punkt, und dann den Namen der Funktion.

Beispiel
Funktionen des Moduls math verwenden

Programmierübung : Pizza Circles
Deine Freunde haben ihre quadratischen Pizzas gegessen und bestellen jetzt eine runde Pizza. Schreibe ein Programm, um die Fläche dieser kreisrunden Pizza zu berechnen. Die Eingabe ist eine Gleitpunktzahl r, die den Radius in cm angibt. Die Ausgabe sollte die Fläche in cm2 sein, die mit der  Formel A=pi*r2 berechnet wird. Verwende Pythons pi Konstante, anstatt 3.1415... zu tippen.
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Programmierübung : Geometrisches Mittel
Das geometrische Mittel
zweier Zahlen a und b ist die Zahl

\sqrt{ab}

Schreibe ein Programm, das zwei Zeilen von positiven Gleitpunktzahlen aus dem Input liest, und ihr geometrisches Mittel ausgibt.
Beispiel: Wenn die Eingabe folgendes ist:

5.0
20.0
dann sollte die Ausgabe 10.0. sein.
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Alles zusammenfügen

Wie du in der vorhergehenden Übung schon gesehen hast, kann man mathematische Ausdrücke zusammenbauen, indem man Operatoren kombiniert. Python wertet die Ausdrücke aus, indem es dieselbe Operatorrangfolge verwendet, die wir im Matheunterricht gelernt haben:

Klammern zuerst, dann Exponenten, darauf folgen Division und Multiplikation, dann schließlich Addition und Subtraktion,

die wir uns mit dem Akronym "KEDMAS" merken können. Division von Ganzzahlen und Modulo passen in die Kategorie "Division und Multiplikation". So wird zum Beisiel der Ausdruck

3 * (1 + 2) ** 2 % 4
ausgewertet, indem die Addition in Klammern ausgeführt wird (1+2 = 3), dann der Exponent (3 ** 2 = 9) , dann die Multiplikation (3 * 9 = 27), und schließlich Modulo, so dass das Ergebnis 27 % 4 = 3 lautet.

Kurzübung: Operatorrangfolge
Berechne den Wert des Python-Ausdrucks

6 - 52 // 5 ** 2
Richtig!

Division von ganzen Zahlen mit negativen Zahlen: Die Ausdrücke a // b und int(a / b) sind gleichwertig, wenn a und b positiv sind. Wenn jedoch a negativ ist, verwendet a // b die Option "gegen negativ unendlich runden" und int(a / b) verwendet "gegen 0 runden."

Beispiel
Ganzzahlige Division mit negativen Zahlen

Ganze Zahlen und Gleitpunktzahlen

Das Resultat eines mathematischen Ausdrucks ist eine Zahl. Wie wir schon zuvor gesehen haben, kann eine Zahl in Python einen dieser zwei Typen haben: int oder float. Der Typ int repräsentiert ganze Zahlen (Englisch: integers), sowohl positive als auch negative, die so groß sein können, wie du willst.

Python akzeptiert keine Zahlen, die in der Form 1 000 000 oder 1,000,000 geschrieben werden. Tippe statt dessen 1000000.

Der Typ float repräsentiert Dezimalzahlen - wobei die echten mathematischen Dezimalzahlen im Computer nur angenähert werden können; deshalb sprechen wir lieber von Gleitpunktzahlen (Englisch: floating point numbers). Genau wie ein einfacher Taschenrechner für die Zahl 1/3  den Näherungswert 0.33333333 abspeichert, macht es auch Python mit Dezimalzahlen.

Weil Python Näherungswerte von Dezimalzahlen verwendet, kann es sein, dass manche Gleichungen, die mathematisch korrekt sind, unter Umständen in Python nicht gelten.
Beispiel
Beispiel
Aus diesem Grund ist es wichtig, einen gewissen Spielraum für diese Näherungswerte zuzulassen, wenn du Zahlen des float Typs vergleichst. So wird im internen Auswertungssystem dieser Seite eine float-Ausgabe als korrekt bewertet, wenn sie näherungsweise gleich der erwarteten Antwort ist.

Wir beenden diese Lektion mit einigen Übungen.

Programmierübung : Klammer-Test
Du sollst drei ganze Zahlen nehmen, die ersten zwei Zahlen addieren und anschließend das Resultat mit der dritten Zahl multiplizieren. Schreibe ein Programm, das die drei Zahlen einliest und das korrekte Ergebnis ausgibt. Tipp
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Programmierübung : A Feat With Feet
Für dieses Programm ist die Eingabe eine Gleitpunktzahl, die eine Höhe gemessen in Fuß darstellt. Schreibe ein Programm, das die äquivalente Höhe in Zentimetern ausgibt und dabei folgende Formel verwendet: 1 Fuß = 30.48 cm. Wenn zum Beispiel die Eingabe 0.5, ist, dann sollte die Ausgabe 15.24 sein.
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Programmierübung : Erdanziehungskraft
Ein Päckchen wird mit einer Geschwindigkeit von v m/s und bei einer Höhe von 11.000 m aus einem Flugzeug geworfen. Während es fällt, wird der Abstand zum Boden angegeben mit der Formel -4.9t2 - vt + 11000, wobei t die Zeit in Sekunden ist, seit es abgeworfen wurde. Schreibe ein Programm, das die Zeit ausgibt, die das Päckchen braucht, um den Boden zu erreichen. Die Eingabe für dein Programm ist die positive Gleitpunktzahl v. Die benötigte Zeit wird mittels der folgenden quadratischem Formel angegeben:

\displaystyle{t=\frac{v-\sqrt{v^2-4(-4.9)(11000)}}{2(-4.9)}}

Du kannst die Eingabe für das Programm in die Box unten eingeben.

Glückwunsch! Nachdem du diese Übungen bewältigt hast, bist du bereit, dich anderen Lektionen zuzuwenden!