4. Unterrichtsblock

Python Operatoren

Operatoren werden verwendet, um Operationen an Variablen und Werten auszuführen. Im folgenden Beispiel wird der + Operator verwendet, um zwei Werte zu addieren:

print(10 + 5)

Python teilt die Operatoren in folgende Gruppen ein:

Python Arithmetikoperatoren

Arithmetische Operatoren werden mit numerischen Werten verwendet, um allgemeine mathematische Operationen auszuführen:

OperatorNameBeispiel
+Additionx + y
Subtraktionx – y
*Multiplikationx * y
/Divisionx / y
%Rest (Modulus)x % y
**Potenzierungx ** y
//Ganzzahldivision (ohne Rest)x // y

Aufgabe

Probiere o.g. Operatoren aus.

Python Zuweisungsoperatoren

Zuweisungsoperatoren werden verwendet, um Variablen Werte zuzuweisen:

OperatorBeispielGleich zu
=x = 5x = 5
+=x += 3x = x + 3
-=x -= 3x = x – 3
*=x *= 3x = x * 3
/=x /= 3x = x / 3
%=x %= 3x = x % 3
//= x //= 3x = x // 3
**=x **= 3x = x ** 3
&=x &= 3x = x & 3
|=x |= 3x = x | 3
^=x ^= 3x = x ^ 3
>>=x >>= 3x = x >> 3
<<=x <<= 3x = x << 3

Aufgabe

Probiere o.g. Operatoren aus.

Python Vergleichsoperatoren

Vergleichsoperatoren werden verwendet, um zwei Werte zu vergleichen:

OperatorNameBeispiel
==Ist gleichx == y
!=Ist nicht gleichx != y
>Größer alsx > y
<Kleiner alsx < y
>=Größer oder gleichx >= y
<=Kleiner oder gleichx <= y

Aufgabe

Probiere o.g. Operatoren aus.

Python Logikoperatoren

Logische Operatoren werden verwendet, um bedingte Anweisungen zu kombinieren:

OperatorBeschreibungBeispiel
and Gibt true aus, wenn beide Bedingungen wahr sindx < 5 and  x < 10
orGibt true aus, wenn einer der beiden Bedingungen wahr istx < 5 or x < 4
notKehrt das Ergebnis um – gibt true aus, wenn die Bedingung falsch istnot(x < 5 and x < 10)
# Beispiel and Operator
x = 5
print(x > 3 and x < 10)  # Gibt True aus, weil 5 größer als 3 AND 5 kleiner als 10 ist

# Beispiel or Operator
x = 5
print(x > 3 or x < 4)  # Gibt True aus, weil eine der Bedingungen wahr ist 

# Beispiel not Operator
x = 5
print(not(x > 3 and x < 10))  # Gibt False aus, weil beide Bedingungen wahr sind

Python Identitätsoperatoren

Identitätsoperatoren werden verwendet, um die Objekte zu vergleichen, nicht wenn sie gleich sind, sondern wenn sie tatsächlich dasselbe Objekt mit demselben Speicherort sind:

OperatorBeschreibungBeispiel
is Gibt True zurück, wenn beide Variablen dasselbe Objekt sindx is y
is notGibt True zurück, wenn beide Variablen nicht dasselbe Objekt sindx is not y
# Beispiel
x = ["Zwetschge", "Apfel"]
y = ["Zwetschge", "Apfel"]
z = x

print(x is z)  # Gibt True aus, weil z im selben Objekt wie x ist

print(x is y)  # Gibt False aus, weil x nicht im selben Objekt wie y ist, selbst wenn beide den selben Inhalt haben

print(x == y)  # Um den Unterschied zwischen "is" und "==" zu demonstrieren

Python Zugehörigkeitsoperatoren

Zugehörigkeitsoperatoren werden verwendet, um zu testen, ob eine Sequenz in einem Objekt dargestellt wird:

OperatorBeschreibungBeispiel
in Gibt True zurück, wenn eine Sequenz mit dem angegebenen Wert im Objekt vorhanden istx in y
not inGibt True zurück, wenn eine Sequenz mit dem angegebenen Wert nicht im Objekt vorhanden istx not in y
# Beispiel
x = ["Zwetschge", "Apfel"]
print("Apfel" in x)

# Gibt True aus, weil die Sequenz mit dem Wert "Apfel" in der Liste enthalten ist

Bitweise Python-Operatoren

Bitweise Operatoren werden verwendet, um (binäre) Zahlen zu vergleichen:

OperatorNameBeschreibungBeispiel
ANDSetzt jedes Bit auf 1, wenn beide Bits 1 sindx & y
|ORSetzt jedes Bit auf 1, wenn eines von zwei Bits 1 istx | y
^XORSetzt jedes Bit auf 1, wenn nur eines von zwei Bits 1 istx ^ y
~NOTKehrt die Bits um (Komplementäroperator)~x
<<Zero fill left shiftVerschiebung nach links, indem Nullen von rechts hinzugefügt werden und die Bits ganz links wegfallenx << 2
>>Signed right shiftVerschiebung nach rechts, indem Kopien des Bits ganz links von links hinzugefügt werden, und die Bits ganz rechts wegfallenx >> 2

Beispiele zu bitweisen Operatoren: https://www.digitalocean.com/community/tutorials/python-bitwise-operators

Prioritäten von Operatoren

Die Operatorpriorität beschreibt die Reihenfolge, in der Operationen ausgeführt werden.

Klammern haben den höchsten Vorrang, was bedeutet, dass Ausdrücke innerhalb von Klammern zuerst ausgewertet werden müssen:

print((6 + 3) - (6 + 3))  # Ergebnis?

Die Multiplikation * hat Vorrang vor der Addition +, daher werden Multiplikationen vor Additionen ausgewertet:

print(100 + 5 * 3)  # Ergebnis?

Die Prioritätsreihenfolge wird in der folgenden Tabelle beschrieben, beginnend mit der höchsten Priorität ganz oben:

OperatorBeschreibung
()Klammern
**Potenzierung
+x  -x  ~xUnäres Plus, unäres Minus und bitweises NICHT
*  /  //  %Multiplikation, Division, Ganzzahl Division und Rest
+  -Addition und Subtraktion
<<  >>Bitweise links and rechts shifts
&Bitweises UND
^Bitweises XODER
|Bitweises ODER
==  !=  >  >=  <  <=  is  is not  in  not in Vergleichs-, Identitäts-, und Zugehörigkeits-Operatoren
notlogisches NICHT
andUND
orODER

Wenn zwei Operatoren dieselbe Priorität haben, wird der Ausdruck von links nach rechts ausgewertet. Addition +und Subtraktion -haben dieselbe Priorität, daher wertet Python den Ausdruck von links nach rechts aus:

print(5 + 4 - 7 + 3)  # Ergebnis?

Aufgabe

Probiere o.g. Reihenfolge von Operatoren aus.

  • Multipliziere 25 mit 4 und drucke das Ergebnis aus
  • Teile 100 durch 5 und drucke das Ergebnis aus
# Verwende den richtigen Zugehörigkeitsoperator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob "Zwetschge" im Obst-Objekt vorhanden ist
obst = ["Zwetschge", "Apfel"]
if "Zwetschge" __ obst:
  print("Ja, Zwetschge zählt zu Obst!")

# Prüfe mit dem richtigen Vergleichsoperator anstelle der __ zwei Unterstriche, ob 5 ungleich 10 ist
if 5 __ 10:
  print("5 und 10 sind nicht gleich")

# Verwende den richtigen logischen Operator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob mindestens eine von zwei Aussagen wahr ist
if 7 == 115 __ 200 == 200:
  print("Mindestens eine der Aussagen ist wahr")

Boolsche Werte

Beim Programmieren muss man oft wissen, ob ein Ausdruck True oder False ist. Man kann jeden Ausdruck in Python auswerten und eine von zwei Antworten erhalten: True oder False.

Wenn man zwei Werte vergleicht, wird der Ausdruck ausgewertet und Python gibt die boolesche Antwort zurück:

print(10 > 9)
print(10 == 9)
print(10 < 9)

Wenn man eine Bedingung in einer if-Anweisung ausführt, gibt Python True oder False zurück:

# Ausgabe einer Nachricht basierend darauf, ob die Bedingung True oder False ist:
a = 200
b = 33

if b > a:
  print("b ist größer als a")
else:
  print("b ist nicht größer als a")

Werte und Variablen auswerten

Mit der bool()Funktion kann man jeden Wert auswerten und True oder False erhalten

# Auswertung eines Strings und einer Zahl:
print(bool("Hello"))
print(bool(15))

Aufgabe

Probiere o.g. Funktion aus.

# Bewertung von zwei Variablen:
x = "Hello"
y = 15

print(bool(x))
print(bool(y))

Aufgabe

Probiere o.g. Funktion aus.

Die meisten Werte sind wahr

Fast jeder Wert wird mit True bewertet, wenn er irgendeinen Inhalt hat.

  • Jeder String ist True, außer leeren Strings.
  • Jede Zahl ist True, außer 0.
  • Alle Listen, Tupel, Mengen und Dictionaries sind True, außer leere.
# Folgendes wird True zurückgeben:
bool("abc")
bool(123)
bool(["Zwetschge", "Apfel", "Birne"])

Einige Werte sind falsch

Tatsächlich gibt es nicht viele Werte, die als False gewerten werden, außer leeren Werten wie ()[]{}"", die Zahl 0 und dem Wert None. Und natürlich ergibt False ebenfalls den Wert False.

# Folgendes gibt False zurück:
bool(False)
bool(None)
bool(0)
bool("")
bool(())
bool([])
bool({})

Ein weiterer Wert, oder in diesem Fall ein Objekt wird als False ausgewertet: Das ist dann der Fall, wenn man ein Objekt hat, das aus einer Klasse mit einer __len__ Funktion besteht, die 0 oder False zurückgibt:

class meineklasse():
  def __len__(self):
    return 0

meinobjekt = meineklasse()
print(bool(meinobjekt))

Funktionen können einen booleschen Wert zurückgeben

Man kann Funktionen erstellen, die einen booleschen Wert zurückgeben:

# Gib die Antwort einer Funktion aus:
def meineFunktion() :
  return True

print(meineFunktion())

Man kann Code basierend auf der booleschen Antwort einer Funktion ausführen:

# Gib "JA!"  aus, wenn die Funktion True zurückgibt, ansonsten wird "NEIN!" ausgeben:
def meineFunktion() :
  return True

if meineFunktion():
  print("JA!")
else:
  print("NEIN!")

Python hat auch viele eingebaute Funktionen, die einen booleschen Wert zurückgeben, wie die isinstance() Funktion, die verwendet werden kann, um festzustellen, ob ein Objekt von einem bestimmten Datentyp ist:

# Überprüfung, ob ein Objekt eine ganze Zahl ist oder nicht:
x = 200
print(isinstance(x, int))

Aufgabe

Teste die Codes aus dieser Lektion und verwende dabei unterschiedliche Werte & Parameter.

Löse folgende Aufgaben:

# Welcher Wert wird ausgegeben?
print(7 > 6)

# Welcher Wert wird ausgegeben?
print(15 == 10)

# Welcher Wert wird ausgegeben?
print(7 < 6)

# Welcher Wert wird ausgegeben?
print(bool("Zwetschge"))

# Welcher Wert wird ausgegeben?
print(bool(0))

Aufgabe

Kombiniere das heute Erlernte mit den Inhalten vorherigen Unterrichtsblöcke und probiere verschiedene Konstellationen aus.

# Verwende den richtigen Zugehörigkeitsoperator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob "Banane" nicht im Obst-Objekt ist
obst = ["Apfel", "Orange"]
if "Banane" __ obst:
    print("Banane ist nicht unter den Obstsorten!")

# Prüfe mit dem richtigen Vergleichsoperator anstelle der __ zwei Unterstriche,
# ob 15 größer ist als 10
if 15 __ 10:
    print("15 ist größer als 10")

# Verwende den richtigen logischen Operator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob beide Aussagen falsch sind
if __ (3 > 5 __ 7 < 2):
    print("Beide Aussagen sind falsch")

# Verwende den richtigen Identitätsoperator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob beide Variablen auf dasselbe Objekt verweisen
a = [1, 2, 3]
b = a
if a __ b:
    print("a und b verweisen auf dasselbe Objekt")

# Verwende den richtigen Vergleichsoperator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob 8 kleiner oder gleich 8 ist
if 8 __ 8:
    print("8 ist kleiner oder gleich 8")

# Verwende den richtigen logischen Operator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob beide Bedingungen wahr sind
if True __ (10 > 2):
    print("Beide Bedingungen sind wahr")

# Prüfe mit dem richtigen Zugehörigkeitsoperator anstelle der __ zwei Unterstriche,
# ob die Zahl 4 in der Liste vorhanden ist
zahlen = [3, 4, 5]
if 4 __ zahlen:
    print("Die Zahl 4 ist in der Liste")

# Verwende den richtigen Vergleichsoperator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob 100 nicht kleiner ist als 50
if 100 __ 50:
    print("100 ist nicht kleiner als 50")

# Verwende den richtigen Identitätsoperator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob x und y nicht dasselbe Objekt darstellen
x = [10, 20, 30]
y = [10, 20, 30]
if x __ y:
    print("x und y sind nicht dasselbe Objekt")

# Verwende den richtigen Zugehörigkeitsoperator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob "Apfel" in einer Textzeichenfolge enthalten ist
obst = "Ich habe einen Apfel und eine Orange"
if "Apfel" __ obst:
    print("Der Text enthält einen Apfel")

# Verwende den richtigen logischen Operator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob eine Bedingung oder die andere wahr ist
if 6 < 3 __ 8 > 2:
    print("Eine der beiden Bedingungen ist wahr")

# Prüfe mit dem richtigen Vergleichsoperator anstelle der __ zwei Unterstriche,
# ob 50 gleich 50 ist
if 50 __ 50:
    print("50 ist gleich 50")

# Verwende den richtigen Zugehörigkeitsoperator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob "Kirsche" nicht in der Liste enthalten ist
obst = ["Banane", "Erdbeere"]
if "Kirsche" __ obst:
    print("Kirsche ist nicht in der Liste enthalten")

# Verwende den richtigen logischen Operator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob keine der beiden Aussagen gleichzeitig wahr ist
if __ (9 > 4 __ 5 < 3):
    print("Keine der beiden Aussagen ist gleichzeitig wahr")

"""
Logische Operatoren:

    and: Dieser Operator gibt True zurück, wenn beide Bedingungen innerhalb der Klammern True sind. Andernfalls gibt er False zurück.
    not: Dieser Operator negiert den Wahrheitswert der nachfolgenden Aussage (nimmt True, macht False daraus, oder umgekehrt).

Bedingungen:

    9 > 4: Das ist True, weil 9 tatsächlich größer als 4 ist.
    5 < 3: Das ist False, weil 5 nicht kleiner als 3 ist.

Kombination der Bedingungen mit and:

    (9 > 4 and 5 < 3): In diesem Ausdruck wird überprüft, ob beide Bedingungen True sind. Da nur die erste Bedingung True ist und die zweite False, ergibt die gesamte Bedingung False.

Anwendung des not Operators:

    not (False): Der False Wert von 9 > 4 and 5 < 3 wird durch den not Operator negiert. Das Ergebnis ist True.

"""

# Verwende den richtigen Vergleichsoperator anstelle der __ zwei Unterstriche,
# um zu prüfen, ob -5 ungleich -10 ist
if -5 __ -10:
    print("-5 ist ungleich -10")