AB 3 Programmierung mit Python


Bedingte Anweisungen und Verzweigungen


Schau dir dieses Video an. Es hilft dir, ins Thema einzusteigen.

if-Anweisung


In vielen Situationen reicht es nicht aus, dass ein Programm einfach nur Daten verarbeitet oder ausgibt. Manchmal soll es Entscheidungen treffen, je nachdem, was eingegeben oder berechnet wurde.


Beispiel:
Lisa hat ihren Computer so programmiert, dass er sie erkennt und begrüßt, wenn sie sich als Lisa vorstellt. Alle anderen Personen gehen leer aus. Wie funktioniert das? Bei if prüft der Computer die Bedingung, ob der Wert der Variable name gleich "Lisa" ist. Nur wenn das der Fall ist, führt er den eingerückten Code darunter aus und schreibt die Begrüßung hin.

name = input("Wie ist dein Name? ")
if name == "Lisa": 
    print("Hallo, Lisa!")
    print("Schön, dass du da bist.")


Python nutzt Einrückungen (Leerzeichen am Anfang einer Zeile), um den Gültigkeitsbereich im Code zu definieren. Andere Programmiersprachen verwenden oft geschweifte Klammern {} für diesen Zweck.


if-Anweisung ohne Einrückung führt zu einem Fehler:

name = input("Wie ist dein Name? ")
if name == "Lisa": 
print("Hallo, Lisa!")
print("Schön, dass du da bist.")


Probiere das Beispiel aus. Schreibe dein eigenes Begrüßungsprogramm. Denke daran, dass für den Vergleich nach if unbedingt das doppelte Gleichheitszeichen == erforderlich ist, um den richtigen Vergleich durchzuführen.


Beispiel
Neben Lisa verwendet auch ihr Bruder Fred den Computer. Das Programm soll also nicht nur Lisa, sondern auch Fred begrüßen. Damit sieht das Programm so aus:

name = input("Wie ist dein Name? ")
if name == "Lisa":
    print("Hallo Lisa!")
    print("Schön, dass du da bist.")
if name == "Fred":
    print("Hallo Fred,")
    print("Willkommen zurück!")


Erklärung: Zuerst fragt der Computer mit input nach dem Namen und speichert die Antwort in der Variable name. Dann prüft er, ob der Name "Lisa" ist. Wenn das nicht der Fall ist, überspringt der Computer alles, was unter if name == "Lisa": eingerückt steht. Als Nächstes prüft der Computer, ob der eingegebene Name "Fred" ist. Wenn ja, begrüßt er Fred. Ansonsten überspringt er wieder alles, was eingerückt ist.


Behalte die folgenden Konzepte und Befehle im Hinterkopf, um die Aufgaben erfolgreich zu lösen:


if Bedingung:
Nach if gibst du in der Bedingung an, was der Computer prüfen soll. Zum Beispiel prüft if x < 5, ob der Wert von x kleiner ist als 5. if y >= 7 prüft, ob der Wert von y größer oder gleich 7 ist. Nach der Bedingung steht immer ein Doppelpunkt. Darunter steht eingerückt, was der Computer tun soll, wenn die Bedingung erfüllt ist. Wenn die Bedingung nicht erfüllt ist, dann überspringt der Computer alle eingerückten Zeilen.


if Variable == Wert
Wenn du in einem Vergleich prüfen möchtest, ob eine Variable einen bestimmten Wert hat, musst du ein doppeltes Gleichheitszeichen verwenden. Wenn der Wert ein Text ist, dann muss der Text in Anführungszeichen stehen. Wenn der Wert eine Zahl ist, dürfen keine Anführungszeichen stehen.


if Variable != Wert
Wenn du prüfen möchtest, ob der Wert einer Variable von einem bestimmten Wert verschieden ist, dann verwendest du statt == die zwei Zeichen !=. Sie stehen für “ungleich”.


Zusammengefasst unterstützt Python die folgenden logischen Bedingungen:


Aufgabe 1
Schreibe ein Programm, das den Benutzer zuerst fragt, wie es ihm geht. Wenn der Benutzer "gut" eingibt, antwortet das Programm mit "Das freut mich". Wenn der Benutzer "schlecht" eingibt, dann antwortet das Programm mit "Das tut mir leid".


Aufgabe 2
Schreibe ein Programm, das den Benutzer nach der Temperatur in Grad Celsius fragt. Liegt die Temperatur über 30 Grad, soll das Programm "Es ist heiß" ausgegeben.
Achtung: Verwende int() oder float(), um die Benutzereingabe in eine Zahl umzuwandeln.


Aufgabe 3
Schreibe ein Programm, das den Benutzer nach einem Passwort fragt und überprüft, ob das eingegebene Passwort "python123" ist. Wenn das Passwort korrekt ist, soll "Zugang erlaubt" ausgegeben werden.


Aufgabe 4
Schreibe ein Programm, das eine Variable note definiert und ihr einen Wert zwischen 1 und 6 zuweist. Überprüfe den Wert der Variablen und gib "Sehr gut" aus, wenn note den Wert 1 hat.


Aufgabe 5
Erkläre, warum der folgende Code nicht richtig funktioniert:

preis = 5
if preis > "20":
    print("Zu teuer.")


if-else-Anweisungen


Die if-Anweisung führt Befehle nur aus, wenn die Bedingung erfüllt ist. Mit else legst du fest, welche Anweisungen der Computer ausführen soll, wenn die Bedingung nicht erfüllt ist. So kannst du zwei unterschiedliche Abläufe im Programm festlegen – je nachdem, ob die Bedingung wahr oder falsch ist.


Beispiel
Der folgende Code ähnelt dem vorgezeigten Beispiel im Abschnitt if-Anweisung. Anstatt mit if name != "Lisa": zu prüfen, ob der Name nicht Lisa ist, sagen wir dem Computer mit else direkt, was er tun soll, wenn die Bedingung name == "Lisa" nicht erfüllt ist.

name = input("Wie ist dein Name? ")
if name == "Lisa":
    print("Hallo Lisa!")
    print("Schön, dass du da bist.")
else:
    print("Dich kenne ich nicht.")


Bei einer if-else-Anweisung wählt der Computer zwischen zwei Alternativen. Wenn die Bedingung hinter if erfüllt ist, führt er die Befehle der if-Anweisung aus. Andernfalls die der else-Anweisung.


Noch ein Beispiel:

x = float(input("Gib eine Zahl ein: "))

if x > 0:
    print(x, "ist positiv")
else:
    print(x, "ist nicht positiv")


Erklärung: In diesem Programm wird der Benutzer aufgefordert, eine Zahl einzugeben, die in der Variable x mithilfe der float()-Funktion als Dezimalzahl gespeichert wird. Das Programm prüft mit der if-Anweisung, ob die Zahl größer als 0 ist. Wenn das der Fall ist, wird im Terminal ausgegeben, dass die Zahl positiv ist. Wenn die Bedingung nicht erfüllt wird (also die Zahl kleiner oder gleich 0 ist), greift die else-Anweisung, und das Programm gibt aus, dass die Zahl nicht positiv ist.


Aufgabe 6
Schreibe ein Programm, das den Benutzer nach seinem Alter fragt. Wenn das eingegebene Alter 18 Jahre oder älter ist, soll "Du bist volljährig" ausgegeben werden. Andernfalls soll "Du bist noch nicht volljährig" ausgegeben werden.


Aufgabe 7
Schreibe ein Programm, das den Benutzer nach der Hauptstadt von Deutschland fragt. Wenn der Benutzer die richtige Antwort gibt, soll das Programm "Gut gemacht" ausgeben. Andernfalls soll "Das ist nicht korrekt" ausgegeben werden.


Aufgabe 8
Der folgende Code funktioniert nicht wie erwartet, wenn das Budget kleiner als der Preis ist. Erkläre das Problem:

budget = 10000
preis = 15000
if preis >= budget:
    print("Du kannst dir das Auto leisten.")
else:
    print("Das Auto ist zu teuer.")


Die if-elif-else-Kette


In vielen Situationen reicht es nicht aus, nur zwischen zwei Möglichkeiten zu entscheiden. Oft gibt es mehrere Bedingungen, die ein Programm berücksichtigen muss. Hier kommt die if-elif-else-Struktur ins Spiel. Sie ermöglicht es dem Computer, verschiedene Bedingungen der Reihe nach zu prüfen. Sobald eine Bedingung erfüllt ist, wird der zugehörige Code ausgeführt, und alle weiteren Bedingungen werden ignoriert.


Beispiel:
In einem Freizeitpark sind die Eintrittspreise je nach Alter unterschiedlich:

Der folgende Code prüft, welche Altersgruppe zutrifft, und gibt den entsprechenden Eintrittspreis aus:

alter = 12

if alter < 4:
    print("Der Eintritt ist kostenlos.")
elif alter < 18:
    print("Der Eintritt kostet 25€.")
else:
    print("Der Eintritt kostet 40€.")


Erklärung: Python prüft zuerst, ob die Person jünger als 4 Jahre ist. Falls nicht, wird die nächste Bedingung (unter 18 Jahren) geprüft. Wenn auch diese Bedingung nicht zutrifft, wird der Code im else-Block ausgeführt.


Aufgabe 9
Schreibe ein Programm, das eine Variable temperatur definiert und ihr einen beliebigen Wert zuweist. Überprüfe den Wert der Variable: Wenn die temperatur über 30 Grad liegt, soll "Es ist sehr heiß" ausgegeben werden, bei einer Temperatur unter 10 Grad soll "Es ist sehr kalt" erscheinen, und in allen anderen Fällen soll "Es ist angenehm" ausgegeben werden.


Aufgabe 10
Schreibe ein Programm, das den Benutzer nach der Ampelfarbe fragt. Wenn die eingegebene Farbe "rot" ist, soll "Stop" ausgegeben werden, bei "gelb" soll "Achtung" erscheinen und bei "grün" soll "Los" ausgegeben werden.




Zusatzaufgabe 1
Definiere die Variable age und lege einen Wert für diese Variable fest. Schreibe eine if-elif-else-Kette, die wie folgt die Altersstufe einer Person bestimmt:

Teste dein Programm, indem du verschiedene Werte für die Variable age festlegst, und überprüfe, ob die richtige Meldung ausgegeben wird.


Zusatzaufgabe 2
Ein Onlineshop verkauft T-Shirts, Pullover und Jacken.
Ein T-Shirt kostet 15.99 €, ein Pullover 24.99 € und eine Jacke 39.99 €.
Du schreibst ein Programm, das die Kosten einer Bestellung berechnet.

Beispielablauf:

Wie viele T-Shirts möchtest du bestellen? 3
Wie viele Pullover möchtest du bestellen? 2
Wie viele Jacken möchtest du bestellen? 1
Kaufpreis ohne Versand: 137.94  EUR
Versandkosten: 0 EUR
Gesamtpreis: 137.94 EUR


Du musst dabei if-elif-else-Anweisungen verwenden, um die Versandkosten korrekt zu berechnen.

Gehe die Aufgabe Schritt für Schritt an und schreibe deinen Code Zeile für Zeile. Nach jeder Teilaufgabe solltest du den Code ausführen, um sicherzustellen, dass alles funktioniert. So erkennst du frühzeitig Fehler und kannst sie leichter beheben. Bleib geduldig und überprüfe genau, welche Variablen und Bedingungen du verwenden musst.


Artikel und Anzahl erfassen
a) Definiere folgende Variablen für die Preise:
preis_tshirt = 15.99
preis_pullover = 24.99
preis_jacke = 39.99

b) Frage den Benutzer, wie viele T-Shirts, Pullover und Jacken er bestellen möchte. Verwende die input()-Funktion und speichere die Anzahl in Variablen:
anzahl_tshirts = int(input("Wie viele T-Shirts möchtest du bestellen? "))
anzahl_pullover = int(input("Wie viele Pullover möchtest du bestellen? "))
anzahl_jacken = int(input("Wie viele Jacken möchtest du bestellen? "))

c) Berechne den Gesamtpreis der bestellten Artikel. Definiere eine neue Variable für den Kaufpreis:
kaufpreis = (anzahl_tshirts * preis_tshirt) + (anzahl_pullover * preis_pullover) + (anzahl_jacken * preis_jacke)

d) Gib den Kaufpreis ohne Versandkosten aus:
print("Kaufpreis ohne Versand:", kaufpreis, "EUR")

Versandkosten berechnen
e) Definiere eine neue Variable für die Versandkosten und setze sie zuerst auf Null:
versandkosten = 0
Verwende if-elif-else-Anweisungen, um die Versandkosten zu bestimmen.

f) Gib die Versandkosten aus:
print("Versandkosten:", versandkosten, "EUR")

Gesamtkosten berechnen und ausgeben
g) Berechne den Gesamtpreis (Kaufpreis + Versandkosten) und speichere ihn in einer neuen Variable gesamtpreis:
gesamtpreis = kaufpreis + versandkosten

h) Gib den Gesamtpreis aus:
print("Gesamtpreis:", gesamtpreis, "EUR")

Programm testen
i) Teste dein Programm mit folgenden Beispielen:

Zusatzaufgabe 3
Schau dir das folgende Beispiel eines Text Adventure Spiels an. Kopiere den Code in die Datei script.py, führe den Code aus, und sieh dir an, wie das Spiel funktioniert. Probiere verschiedene Entscheidungen aus, um zu sehen, wie sich die Geschichte verändert.

print("Willkommen zu deinem Text Adventure!")
print("Du wachst in einem dunklen Raum auf. Was willst du tun?")
print("1: Nach links gehen und die Tür öffnen.")
print("2: Nach rechts gehen und die Treppe runtergehen.")

wahl1 = input("Wähle 1 oder 2: ")

if wahl1 == "1":
    print("Du öffnest die Tür und siehst ein Monster!")
    print("1: Kämpfen.")
    print("2: Weglaufen.")
    
    wahl2 = input("Wähle 1 oder 2: ")
    
    if wahl2 == "1":
        print("Du kämpfst und besiegst das Monster. Du hast gewonnen!")
    else:
        print("Du läufst weg und überlebst, aber findest keinen Schatz.")
elif wahl1 == "2":
    print("Du gehst die Treppe hinunter und findest eine Schatztruhe.")
    print("1: Die Truhe öffnen.")
    print("2: Die Truhe nicht öffnen.")
    
    wahl3 = input("Wähle 1 oder 2: ")
    
    if wahl3 == "1":
        print("Du öffnest die Truhe und findest Schätze. Du hast gewonnen!")
    else:
        print("Du öffnest die Truhe nicht. Du wirst nie wissen, was drin war.")

Nachdem du das Beispielspiel ausprobiert hast, erstelle nun dein eigenes Text Adventure. Nutze if, elif, und else, um dem Spieler verschiedene Optionen zu geben und die Geschichte weiterzuentwickeln.


Fachbegriffe


Eine bedingte Anweisung ist ein Teil des Programms, der nur ausgeführt wird, wenn eine bestimmte Bedingung erfüllt ist. Sie hat folgende Form:


wenn Bedingung dann
  Anweisung(en)
ende


Beispiel:

wenn es regnet dann
  nehme einen Regenschirm
ende


Eine Verzweigung entscheidet, welcher von zwei oder mehr Programmteilen abhängig von der Bedingung ausgeführt wird. Sie hat folgende Form:


wenn Bedingung dann
  Anweisung(en)
ansonsten
  Anweisung(en)
ende


Beispiel:

wenn es regnet dann
  nehme einen Regenschirm
ansonsten
  geh ohne Regenschirm
ende


In Python ist es möglich, bedingte Anweisungen und Verzweigungen mit if, elif und else zu erstellen