Was wenn ?

If Abfragen in Python

Beim letzten mall haben wir uns den Input des Users gegeben und haben mit diesem. gerechnet. Das Problem war jedoch das der rechen Operator zum rechnen immer gleich war.

zahl1 = input("Die erste Zahl bitte ")
zahl2 = input("Die zweite Zahl bitte ")

print(int(zahl1) + int(zahl2))

Wir können eingeben was wir wollen. Das Programm wird niemals die beiden Zahlen multiplizieren oder dividieren. Es wird immer Addiert.

Aber es wäre doch schick wenn wir vom Programm gefragt werden welche Operation wir ausführen wollen, oder? Realisieren können wir das mit if Anweisungen. Eine solche kann in etwa so aussehen:

string = "Hallo"

if string == "Hallo" :
	print("Der string ist Hallo !")

Wir definieren erst eine Variable namens string und weisen ihr den Wert “Hallo” zu.

Nachdem if geben wir in derselben Zeile noch eine Bedingung an. In diesem Fall ist die Frage ob die Variable den Wert “Hallo” besitzt. Dies geschieht mit dem Vergleichsoperatoren  == dieser gibt ein ein True zurück wenn der Inhalt auf der Linken Seite gleich dem auf der Rechten Seite ist.

Diese Anweisung schließen wir mit einem [:]. Anschließend machen wir einen Absatz und danach kommt der Code der ausgeführt werden soll wenn die Bedienung stimmt.

Was soll dieser Absatz ?

In anderen Sprachen gibt es sowas wie IF Abfragen natürlich auch. Die Besonderheit Bei Python ist das der Block der ausgeführt werden soll wenn die Bedingung Wahr ist mit Einrückungen dargestellt wird. Solche Einrückungen werden wir später auch noch woanders sehen. Zum Beispiel bei Funktionen oder Schleifen. Solche Einrückungen machen wir entweder mit einem Tabulator oder mit einer beliebigen Anzahl an Leertasten. Wichtig ist nur das die Anzahl dieser, im gesamten Programm gleich bleiben. Weil das unübersichtlich wird empfehle ich eher Tabulatoren zu verwenden.

else, was wenn nicht ?

Wir können jetzt schonmal darauf reagieren wenn die Bedingung wahr ist. Mit else Blöcken können wir einen alternativ Block ausführen wenn die Bedingung nicht Wahr ist.

zahl = 42
if zahl == 43:
	#Dieser teil wird nicht ausgefuhrt
	print("Zahl ist 43 !")
else:
	#Dieser block wird ausgefuhrt
	print("Zahl ist nicht 43 !")

Wie wir schon bereits gelernt haben wird der if Block dann ausgeführt wenn wir die Bedingung wahr ist, also wenn zahl gleich 43 ist. In diesem Fall wird jedoch der else Block ausgeführt da die Bedienung nicht zutrifft.

Else mit Bedingung, elseif

Eine letzten fall von if Verzweigung gibt es noch. Mit Elseif, in Python elif abgekürzt. Können wir eine Bedingung an das else binden. Ein Beispiel !

zahl = 41
if zahl == 43:
	#Dieser teil wird nicht ausgefuhrt
	print("Zahl ist 43 !")
elif zahl = 42
	#Dieser block wird ausgefuhrt
	print("Zahl ist 42 !")
else:
	print("Die zahl ist nicht 42 und nicht 43 ! ")

Beachte hierbei das zahl nicht mehr 42 sondern 41 ist. Das Programm gibt somit den else Block aus. Änderst du zahl jedoch zu 42 wird der elif Block ausgeführt. Der else Block wird immer dann ausgeführt wenn keiner der if Anweisungen bzw. elif Anweisungen zutrifft. Du kannst übrigens so viele elif aneinander reihen wie du willst.

Der Rechner

Nun wo wird es aber auch mal Zeit unser neues Wissen über If Anweisungen auch richtig zu nutzen ! Wir werden nun den Rechner vom letzten mal dynamischer gestallten in dem wir mit input und if Abfragen verschiedene Rechen Operationen ausführen.

zahl1 = int(input("Die erste Zahl bitte "))
zahl2 = int(input("Die zweite Zahl bitte "))

operator = input("Wie sollen die Zahlen verrechnet werden ? addieren (+), multiplizieren (*), subtrahieren (-), dividieren (/)")

Als erstes holen wir uns die Eingaben des Benutzers und machen die Zahlen auch gleich zu ints.

ergebnis = 0

if operator == "+":
	ergebnis = zahl1 + zahl2
elif operator == "-":
	ergebnis = zahl1 - zahl2
elif operator == "/":
	ergebnis = zahl1 / zahl2
elif operator == "*":
	ergebnis = zahl1 * zahl2
else:
	print("Die Eingabe war falsch, bitte nochmal !")

print(ergebnis)

Anschließend machen wir mehrere elseif Abfragen um zu entscheiden was den der Nutzer nun will und reagieren darauf. Am ende geben wir das Ergebnis aus.

Das wärs dann auch wieder, im heutigen post haben wir unseren Rechner schicker gemacht und uns if Abfragen angeguckt. Beim nächsten mal machen wir den Rechner noch schicker und beschäftigen uns mit Schleifen Vielen dank fürs Lesen und bis dahin.

Schleifen

Heute Erkläre ich wie Schleifen in Python funktionieren

10 mall Hallo Welt bitte !

Ganz simpel gesagt können wir mit Schleifen Programmteile beliebig oft wiederholen. Sollten wir zum Beispiel (warum auch immer) 10x Hallo Welt in der Konsole ausgeben wollen, können wir entweder 10 print Anweisungen verwenden oder einfach folgendes schreiben:

i = 0
while i < 10:
	print("Hallo Welt !")
	i = i + 1

Nachdem wir die Variable i definiert und auf 0 gesetzt haben, benutzen wir das KeyWord while und geben genauso wie bei den if Bedingungen einen Vergleich an. Wir fragen hier aber nicht nach einen festen Wert, sondern nur ob i allgemein kleiner als 10 ist. Sollte das der Fall sein, wird der Block in der Schleife ausgeführt. Im Block selbst geben wir “Hallo Welt” aus und (sehr wichtig) rechnen i plus 1. Sollten wir dies nicht tun bleibt i immer 0 also kleiner als 10 und die Schleife läuft ewig weiter.

Die for schleife und die range Funktion

Oben haben wir die While Schleife verwendet, neben dieser gibt es aber noch eine Weitere. Wollen wir eine Aktion X mal oft wiederholen, so wie im ersten Beispiel, können wir die for Schleife verwenden.

Um diese zu verwenden brauchen wir aber ein grobes Verständnis der range Funktion. Die range Funktion erwartet zwei Zahlen und gibt uns ein Range Objekt zurück. Was ein Objekt genau ist, interessiert uns aber erstmal nicht. Das Range Objekt ist quasi ein Zahlenbereich von x bis y. Also anstatt unserer Hilfsvariable i hoch zu zählen benutzen wir die range Funktion mit unserem Zahlenbereich.

for i in range(0, 10):
	print("Hallo Welt !")

Diese Schleife macht exakt das Gleiche wie unsere Schleife zuvor. i ist hierbei immer der aktuelle Durchlauf. Also beim ersten Durchlauf 0, beim zweiten Durchlauf 1, beim dritten Durchlauf 2 und so weiter … Man beachte hierbei, dass range(0, 10) uns den Zahlenbereich von 0 bis 9 zurückgibt. Unsere Schleife läuft also 10 mal, nur wird nie der Durchlauf 10 erreicht, bzw. wird i niemals 10 sein.

break und continue

Es kann mall vorkommen das wir aus einer Schleife springen wollen und diese abrechen. Dafür verwenden wir das break statement.


for i in range(0,10):
	if i == 5:
		break
	print("Hallo Welt")

In diesem Beispiel wird nur 5 mal, statt 10 mal “Hallo Welt” ausgegeben. Da sobald i gleich 5 ist wir aus der Schleife springen.


for i in range(0,10):
	print("Hallo Welt")
	if i % 2 == 0:
		continue
	print(i)

In diesem Beispiel geben wir 10 mal Hallo Welt aus. Sollte i nicht durch 2 glatt geteilt werden können, geben wir i nochmal aus. Wenn i durch 2 glatt teilbar ist springen wir wieder zum Anfang der Schleife und überspringen somit das i ausgeben wird.

Bedeutung vom %

Eventuell bist du ein wenig irritiert vom % Zeichen. Dies ist ein ganz normaler Rechen-Operator wie + oder *. Das % steht für Modulo und bedeutet so viel wie geteilt rechnen auf Grundschulniveau. Modulo gibt uns also den Rest aus der nicht geteilt werden kann, zumindest hieß es so in der Grundschule. 3 Modulo(%) 2 ergibt also 1. 4 Modulo(%) 2 ist 0, da kein Rest übrig bleibt.

Der Datentyp boolean.

Sowohl bei den if, als auch bei den Schleifen Anweisungen haben wir stets eine Variable angegeben. Aber Moment mal, wir haben doch stets irgendwelche Gleichungen aufgestellt wie kann das sein? Mehrere Operatoren in Python geben einen booleschen Wert zurück, statt einer Zahl oder ähnliches.

print(42==42)

So gibt dieses print Funktion einfach ein True aus. Wir können aber auch einer Variable True aber auch False direkt zuweisen

boolFalse = False # false wert
boolTrue  = True  # true wert

interessant wird der Boolean wenn wir in in andere Datentypen casten

bool(1) # True
bool(0) # False
bool("Hallo Welt") # True
bool("") #False

Dieses casten passiert bei den Schleifen und bei den if Abfragen implizit. Daher können wir eine endlos Schleife so schreiben:

while 1:
	print("Hey")

Solltest du übrigens im Terminal unter Unix Systemen bzw der CMD unter Windows arbeiten kannst du mit STR + C dein Programm abrechen.

Boolean invertieren

Wenn wir überprüfen wollen ob etwas nicht der Fall ist können wir den boolean auch invertieren. Das machen wir indem wir ein not vor dem boolean schreiben.

b = False

if not b:
	print("in dem if drin !")

Eigentlich würde der Code nicht ausgeführt werden, da wir aber invertieren kommen wir doch rein. Das funktioniert natürlich auch mit den bereits bekannten Vergleichen.

zahl = 42

if not zahl == 43:
	print("in dem if drin !")

Und und oder

Es kommt durchaus mall vor das wir mehrere Bedingungen zusammen hängen wollen. Zum Beispiel das wir prüfen wollen ob die Zahl in einem gewissen Bereich ist.

for i in range(0,100):
	if i > 50 and i < 60:
		print(i)

Die Schleife selbst ist relativ trivial, sie zähl von 0 bis 100. Das Neue ist in dem Code im if Statement. Wenn i größer (>) als 50 UND kleiner (<) als 60 ist, geben wir i aus.

Und Überraschung, Überraschung. Das Gleiche gibt es auch noch mit oder hier ist das Keyword nur eben or. Ein Beispiel !

i = 1
if i == 1 or i == 42:
	print("i ist 1 oder 42 !")

i = 42
if i == 1 or i == 42:
	print("i ist 1 oder 42 !")

In beiden Fällen haben wir die gleiche Abfrage und beide sind Wahr obwohl wir i im laufe des Programmes überschreiben.

Operatoren zum vergleichen

Zu ende nochmal eine Aufführung verschiedener Operatoren die uns alle samt eine booleschen Wert zurückgeben

print(True == True) # True
print(not True == True) # False
print(True == True and True == False) # False
print(True == True or True == False)  # True
print(42 > 1)  # True
print(42 < 1)  # False
print(42 >= 1) # True
print("Hallo Welt" < "Hallo") # False
print("Hallo Welt" > "Hallo") # True
print("Hallo" == "Hallo")    # True

Zu gutter letzt !

Beim letzten mall haben wir mit if Abfragen unseren eigenen kleinen Python Rechner gebaut. Nun machen wir diesen nochmal ein wenig schöner mit einer Schleife.

ergebnis = 0
nochmal = True

while nochmal:
	zahl1 = int(input("Die erste Zahl bitte "))
	zahl2 = int(input("Die zweite Zahl bitte "))

	operator = input("Wie sollen die Zahlen verrechnet werden ? addieren (+), multiplizieren (*), subtrahieren (-), dividieren (/), (E) zum abrechen")

	if operator == "+":
		ergebnis = zahl1 + zahl2
	elif operator == "-":
		ergebnis = zahl1 - zahl2
	elif operator == "/":
		ergebnis = zahl1 / zahl2
	elif operator == "*":
		ergebnis = zahl1 * zahl2
	elif operator == "E":
		nochmal = False
	else:
		print("Die Eingabe war falsch, bitte nochmal !")
	print(ergebnis)
print("Bis zum nästen mal")

Wir fügen eine nochmal Variabel hinzu und geben ihr den Wert True. Gibt der Benutzer statt eines Rechen Operator ein ‘E’ ein setzten wir nochmal auf False. Was dazu führt das wir die Schleife verlassen und das Programm beendet wird.

So das wars dann auch wieder zu schleifen. Ich hoffe es gefiel und bis zum nächsten mal =).