Teil 4: Operatoren

Lernziele
  • Die Rechenoperatoren von Python sicher anwenden und die Reihenfolge beachten
  • Ganzzahldivision und Rest voneinander unterscheiden
  • Potenzen berechnen
  • Die eingebauten Funktionen max, min und round verwenden
  • Verschachtelte Ausdrücke von Hand vereinfachen

Neue Befehle und Zeichen:

  • // ganzzahlige Division
  • % Rest der Division (Modulo)
  • ** Potenz
  • max() gibt den grössten Wert zurück
  • min() gibt den kleinsten Wert zurück
  • round() rundet eine Zahl

Operatoren

Rechnen

Python kennt die vier Grundoperationen +, -, * und /. Es gilt Punkt vor Strich, und mit Klammern legst du die Reihenfolge selbst fest.

print(2 + 3 * 4)
print((2 + 3) * 4)
Drei besondere Operatoren

Der Modulo-Operator % ist nützlicher, als er aussieht. Mit ihm prüfst du zum Beispiel, ob eine Zahl gerade ist: Bei zahl % 2 == 0 bleibt kein Rest.

Beispiel

Eine Wanderung dauert 500 Minuten. Wie viele volle Stunden sind das, und wie viele Minuten bleiben übrig?

minuten = 500
print(minuten // 60, "h", minuten % 60, "min")

Die beiden Operatoren gehören zusammen: // sagt, wie oft die 60 in die 500 hineinpasst, % sagt, was danach übrig bleibt. Zusammen ergeben sie wieder die Ausgangszahl, denn 8⋅60+20=5008\cdot 60 + 20 = 500.

Eingebaute Funktionen

Python bringt fertige Funktionen mit. Eine davon kennst du schon: print. Zwei weitere sind max und min. Sie nehmen beliebig viele Zahlen entgegen und geben die grösste bzw. die kleinste zurück.

print(max(42, 3.0, 42.0001))
print(min(3, 9, 12, -100, -99))
Rückgabewert

max gibt einen Wert zurück, es zeigt ihn nicht selbst an. Willst du das Ergebnis sehen, brauchst du print darum herum oder speicherst es in einer Variable:

groesste = max(3, 7)
print(groesste)

Mit round rundest du auf die nächste ganze Zahl. Ein zweites Argument gibt die Anzahl Nachkommastellen an: round(3.14159, 2) ergibt 3.14.

Aufgaben

Aufgabe 4.1

Berechne von Hand, was Python ausgibt. Prüfe erst danach mit dem Computer.

PythonLoading editor…
print(7 / 2)
print(7 // 2)
print(7 % 2)
print(2 ** 5)
print(10 - 2 * 3)
Aufgabe 4.2

Untersuche den Unterschied zwischen / und //. Probiere alle vier Kombinationen von int und float aus und trage die Ergebnisse in die Tabelle ein.

3 / ...3 // ...3.0 / ...3.0 // ...
... 2
... 2.0

Wann ist das Ergebnis ein int? Notiere deine Regel.

PythonLoading editor…
Aufgabe 4.3

Berechne von Hand, was die folgenden Ausdrücke ergeben: 7 % 2, 8 % 2, 9 % 3, 5 % 7 und 100 % 7. Der Fall 5 % 7 ist der interessante, erkläre ihn. Formuliere danach, woran du am Rest erkennst, dass eine Zahl durch eine andere teilbar ist.

Aufgabe 4.4

Warum geben diese beiden Zeilen Fehlermeldungen? Beantworte das von Hand, ohne den Computer zu Hilfe zu nehmen, und korrigiere sie.

print(max("zwei", 3))
print(min(1, 2, 3)))
Aufgabe 4.5

Schreibe ein Programm, das drei Noten einliest und den Durchschnitt, die beste und die schlechteste Note ausgibt. Runde den Durchschnitt auf eine Nachkommastelle.

PythonLoading editor…
Aufgabe 4.6

Vereinfache den folgenden Ausdruck von Hand, ohne ihn auszuführen. Begründe jeden Schritt.

max(x - 3, min(x + 10, x + 5))
Aufgabe 4.7

Schreibe ein Programm, das prüft, ob eine eingelesene Zahl gerade ist, und das Ergebnis als Text ausgibt. Verwende dafür %.

PythonLoading editor…
Aufgabe 4.8

Berechne von Hand, was 17 // 5 * 5 + 17 % 5 ergibt. Prüfe deine Antwort danach mit dem Computer und probiere andere Zahlen anstelle der 17 aus. Erkläre, warum immer dasselbe herauskommt.

PythonLoading editor…
Aufgabe 4.9

Übersetze die Formel

f(x)=3x2−5x+2x+1f(x) = \frac{3x^2 - 5x + 2}{x + 1}

in Python. Lies x mit float(input("x: ")) ein und gib den Wert von f(x) aus. Teste dein Programm mit x = 4. Achte auf die Klammern.

PythonLoading editor…
Aufgabe 4.10

Übersetze die Formel

g(x)=x2+9−2x3g(x) = \sqrt{x^2 + 9} - 2x^3

in Python. Lies x wieder mit float(input("x: ")) ein. Die Wurzel schreibst du als Potenz mit dem Exponenten 0.5. Teste dein Programm mit x = 4.

PythonLoading editor…
Aufgabe 4.11

Sage voraus, was round(2.5), round(3.5), round(-0.5) und round(2.675, 2) ergeben. Prüfe danach mit dem Computer. Zwei der vier Ergebnisse überraschen. Recherchiere, woher das kommt.

PythonLoading editor…
Aufgabe 4.12

Lies zwei ganze Zahlen a und b mit int(input(...)) ein und gib die kleinere der beiden aus, ohne min zu verwenden. Nutze stattdessen max auf clevere Weise.

PythonLoading editor…
Aufgabe 4.13

Zwischen zwei Städten führen zwei Strassen. Auf jeder Strasse liegen Brücken, und jede Brücke hat ein zulässiges Höchstgewicht in Tonnen. Ein Lastwagen kommt nur über eine Strasse, wenn er über jede ihrer Brücken passt.

Zwei Strassen mit Brücken a bis eZwei Strassen mit Brücken a bis e

Lies die fünf Höchstgewichte a bis e mit float(input(...)) ein und gib aus, wie schwer der Lastwagen höchstens sein darf, damit er überhaupt vom Start zum Ziel kommt. Verwende dafür min und max.

PythonLoading editor…

Weitere Aufgaben

Zusatzaufgabe 4.14

Eine Kreditkartenfirma berechnet den minimal auszahlbaren Betrag nach dieser Regel: Der Minimalbetrag ist entweder 10 Franken oder 2,1 Prozent des Kontostands, je nachdem, was grösser ist. Übersteigt das den Kontostand, wird stattdessen der Kontostand genommen.

Schreibe ein Programm, das den Minimalbetrag ausgibt und dabei max und min benutzt. Die Variable kontostand ist vordefiniert.

PythonLoading editor…
kontostand = 1250  # vorgegeben
Zusatzaufgabe 4.15

Untersuche den Operator ** genauer. Was ergibt 2 ** 3, was 3 ** -1, was 9 ** 0.5? Formuliere, was der Operator allgemein tut.

PythonLoading editor…
Zusatzaufgabe 4.16

Schreibe ein Programm, das eine Anzahl Sekunden einliest und daraus Stunden, Minuten und Sekunden berechnet. Verwende // und %.

PythonLoading editor…
Zusatzaufgabe 4.17

Schreibe ein Programm, das die Quersumme einer dreistelligen Zahl berechnet. Die Zahl ist in der Variablen zahl vorgegeben. Hole dir die drei Ziffern mit // und % einzeln heraus und addiere sie.

PythonLoading editor…
zahl = 372  # vorgegeben