Zum Inhalt springen

Rechnen und Operatoren

Aus Wikibooks
(Weitergeleitet von Python/Rechnen)

Sobald Python installiert und gestartet ist, können Sie damit rechnen. Tippen Sie die gewünschte Rechenoperation in die Befehlszeile ein und drücken Sie Enter. Das Ergebnis wird Ihnen in der nächsten Zeile angezeigt.

Hier ein paar Beispiele (probieren Sie es ruhig selbst aus):

>>> 3
3
>>> 1+2
3
>>> 8/3*3
8.0
>>> 8//3*3.0
6.0
>>> 8%3*3
6
>>> 8//3*3
6
>>> 8/0.7
11.428571428571429

Wie Ihnen vielleicht auffällt, wird das Ergebnis unterschiedlich dargestellt, mal als Ganzzahl (6) oder als Gleitkommazahl (11.428571428571429). Dies liegt daran, dass Python unterschiedliche Datentypen für Zahlen nutzt. Bevor wir näher auf dieses Thema eingehen, schauen wir kurz, welche Rechenoperatoren Sie nutzen können.

Rechenoperatoren

[Bearbeiten]

Python stellt Ihnen sieben verschiedene Rechenoperatoren zur Verfügung (die Spalte „Verknüpfung“ ist jeweils mit einem Link zum Wikipedia-Artikel versehen).

Verknüpfung Operator-Symbol Beispiel Ergebnis
Potenz ** 2**3 8
Multiplikation * 2 * 3 6
Division / 14 / 3 4.666666666666667
Ganzzahlige Division // 14 // 3 4
Modulo % 14 % 3 2
Addition + 1 + 2 3
Subtraktion - 10 - 3 7

Überraschend ist vielleicht ** für die Potenzrechnung, statt des gewohnten 2³. Grund dafür ist schlicht die einfache und schnelle Eingabe über die Tastatur.

Aus dem Alltag ungewohnt (weil selten genutzt) sind vielleicht die ganzzahlige Division und der Modulo (die klassische Division in Zeile eins):

>>> 9/4
2.25
>>> 9//4
2
>>> 9%4
1

Sie sind aber wichtig für das Verstehen der Datentypen. Folgendes Beispiel aus der Wikipedia soll zur Verdeutlichung dienen:

9 : 4 = 2, Rest 1, da 9 = 4 × 2 + 1 („4 passt 2-mal in 9 und es bleibt 1 übrig“ – der Rest ist also 1) 

Möglicherweise sehen sie jetzt schon, wie Sie dieses Beispiel auf Python übertragen können:

  • 9 // 4 = 2 („4 passt 2-mal in 9...)
  • 9 % 4 = 1 (...und es bleibt 1 übrig“ – der Rest ist also 1)

Bitweise Operatoren

[Bearbeiten]

Wie in anderen Programmiersprachen gibt es auch in Python Operatoren für Bitmanipulation ganzer Zahlen:

Operation Operator-Symbol Beispiel Ergebnis binär
bitweises Und & 7 & 1 1 111 (7)
001 (1)
001 (1)
bitweises Oder | 5 | 3 7 101 (5)
011 (3)
111 (7)
bitweises XOR ^ 7 ^ 3 4 111 (7)
011 (3)
100 (4)
bitweises Not ~ ~7 -8 0...0111 (7)
1...1000 (-8)
bitweise Verschiebung (shift) nach links << 1 << 3 8 0001
1000
bitweise Verschiebung (shift) nach rechts >> 10 >> 1 5 1010
0101

Rangfolge der Operatoren

[Bearbeiten]

Wie das folgende Beispiel verdeutlicht, wird das Rechenergebnis durch die Priorität beeinflusst, in welcher die Rechenoperationen durchgeführt werden:

>>> 4+2**3
12
>>> (4+2)**3
216

Wie sieht also die Operatorrangfolge in Python aus?

  1. als erstes werden Klammern ausgewertet
  2. danach die Potenzen
  3. Multiplikation/Division/Division mit Rest/Modulo
  4. als letztes die Addition/Subtraktion

Die Einträge einer Zeile sind dabei gleichberechtigt. Gleichberechtigte Einträge werden meistens von links nach rechts ausgewertet; die wichtigste Ausnahme ist das Potenzieren: 2**2**3 = 2**(2**3) = 256. Diese Eigenschaft der Operatoren wird Operatorassoziativität[1] genannt.

Auf der Seite Rangfolge der Operatoren im Anhang ist eine Tabelle mit der Rangfolge und Assoziativität aller Operatoren.

Zahlen: int und float

[Bearbeiten]

Kommen wir zurück zu unserem Eingangsbeispiel:

>>> 1+2
3
>>> 8/0.7
11.428571428571429

Python 3 unterscheidet zwischen Ganzzahlen und Gleitkommazahlen. Letztere haben einen gebrochenen Teil hinter dem Dezimaltrennzeichen. Als Dezimaltrennzeichen nutzt Python den Punkt (.), und nicht, wie in Deutschland üblich, das Komma (,). Ein 3.1 entspricht also dem deutschen 3,1. Die beiden Typen werden mit den englischen Wörtern int für integer (Ganzzahlen) und float (Gleitkommazahlen) bezeichnet.

Im Gegensatz zu manch anderen Programmiersprachen nimmt uns Python hier viel Arbeit ab. Dies betrifft besonders die Speicherung (besonders die Reservierung und Freigabe von Arbeitsspeicher). Dies wird im nächsten Kapitel deutlicher werden. Um zu erfahren, welchen Datentyp Python ausgewählt hat, nutzen wir die Funktion type():

>>> type(1+ 2)
<class 'int'>
>>> type (8/0.7)
<class 'float'>
>>> type(11.428571428571429)
<class 'float'>

Als Ergebnis teilt uns Python den jeweiligen Datentyp (class) mit.

Die Leerzeichen hinter „type“ und vor der „2“ sind übrigens absichtlich gewählt um zu zeigen: Python ist clever genug, um sich davon nicht durcheinander bringen zu lassen. Trotzdem ist es natürlich sinnvoll, innerhalb eines Programmes die Leerzeichen nicht willkürlich zu platzieren, allein schon wegen der besseren Lesbarkeit für Menschen. Am Anfang einer Zeile ist die Anzahl der Leerzeichen sogar vorgegeben, wie wir später noch sehen werden.

Exkurs: Vermutlich werden Sie früher oder später über den Datentyp long stolpern. Dieser wurde, in den Versionen vor Python 3, für den Umgang mit und die Speicherung großer Zahlen genutzt. In Python 3 hat int diese Rolle mit übernommen.

Ganzzahlige Literale (numerische Konstanten) können in Python als Dezimal-, Binär-, Oktal- oder Hexadezimalzahlen mit oder ohne Vorzeichen ausgedrückt werden.

Wir Menschen rechnen hauptsächlich im Dezimalsystem, also dem Zahlensystem mit der Basis 10. Folgende Tabelle zeigt die Darstellung ganzer Zahlen in den anderen genannten Zahlensystemen:

Zahlensystem Basis Präfix Beispiel in Dezimal
Dual-/Binär- 2 0b 0b11 3
Oktal- 8 0o 0o11 9
Hexadezimal- 16 0x -0x11 -17

Das Präfix muss der jeweiligen Zahl vorangestellt werden und beginnt immer mit 0 (Null) und einem Buchstaben:

>>> 0b11
3
>>> 0o11
9
>>> 0X11
17

Wie Sie sehen können, gibt Python die Zahlen standardmäßig im Dezimalsystem aus.

float

[Bearbeiten]

Gleitkommazahlen werden in Python mit Dezimalpunkt, mit Exponent oder mit beiden angegeben, Beispiele:

Ohne Exponent: 0.1 -150. .03
Mit Exponent: 1E-1 -1.5e2 3E-2
Standard-Format: 0.1 -150.0 0.03

Zifferngruppierung

[Bearbeiten]

Ziffern, einschließlich der Hexadezimalziffern können mit _ als Trennzeichen gruppiert werden.

Beispiele:

>>> 1_000_000
1000000
>>> 0o3_751
2025
>>> 0xAC_DC
44252

Exkurs: Mathematische Funktionen

[Bearbeiten]

Vielleicht fehlt Ihnen in der obigen Auflistung die Möglichkeit, Quadratwurzeln zu ziehen. Diese Fähigkeit stellt Ihnen Python nicht direkt zur Verfügung, sondern als Teil des "math-Moduls". Der Vollständigkeit halber soll Ihnen hier die Möglichkeit aufgezeigt werden, auch wenn wir damit dem Stoff vorgreifen.

>>> from math import sqrt
>>> sqrt(9)
3.0
  1. Sie tippen from math import sqrt ein und drücken Enter (dies müssen Sie einmalig pro Sitzung tun) - eine Rückmeldung erhalten Sie nicht.
  2. Sie rufen "sqrt()" mit einer nicht-negativen Zahl (vom Typ float oder int) als Parameter auf.

Das Ergebnis ist immer vom Typ float.

Für die Wurzel aus negativen Zahlen brauchen Sie wiederum ein anderes Modul:

>>> import cmath
>>> cmath.sqrt(-9)
3j

Das Ergebnis wird als komplexe Zahl dargestellt. Mehr dazu später.

Um den interaktiven Modus als wissenschaftlichen Rechner zu nutzen, bietet es sich an, alle mathematischen Standard-Funktionen aus math zu importieren. Das geht mit * als Wildcardsymbol:

from math import *
from builtins import pow        # builtins.pow kann mehr als math.pow

Zusammenfassung

[Bearbeiten]

Sie haben gelernt, dass Sie Python als Taschenrechner nutzen können. Sie wissen, welche Rechenoperatoren Ihnen zur Verfügung stehen und kennen die Datentypen int und float. Ebenso wissen Sie, wie Sie den Datentyp herausfinden.

Nach diesem doch etwas trockenen Kapitel kommen wir zu den Variablen.

Seitentitel: Python/ Rechnen
(Python/ Rechnen)
(Python/ Rechnen)
  1.  Operatorassoziativität