3 minute read

# ##

gtp5: Gesamtlösung – Übungsblatt 1: Kontrollstrukturen (Python)

Verständnisfragen

  1.  Wie werden einzelne Anweisungen in Python voneinander getrennt?

    -   Durch Zeilenumbrüche. Mehrere Anweisungen in einer Zeile können

        mit ; getrennt werden.

  1.  Wie werden Anweisungsblöcke in Python definiert/markiert?

    -   Durch Einrückung (Indentation) und einen Doppelpunkt : am Ende

        der Kopfzeile.

  1.  Konstrukte für allgemeine Kontrollstrukturen:

    -   Sequenz: hintereinander ausgeführte Anweisungen

    -   Auswahl: if, elif, else

    -   Wiederholung: for, while

    -   Aufruf: Funktionsaufruf mit def


Programmieraufgaben

Aufgaben 4–8: Zeichenlänge, Kommentare, Variable umfang


text = input("Bitte eine Eingabe machen: ")

laenge = len(text)

print(f"Anzahl der eingegebenen Zeichen: {laenge}")

  

if laenge < 3:

    print("Hinweis: weniger als drei Zeichen.")

if laenge >= 3:

    print("Hinweis: drei oder mehr Zeichen.")

if laenge > 10:

    print("Hinweis: mehr als zehn Zeichen.")

  

if laenge > 10:

    umfang = "lang"

else:

    umfang = "kurz"

  

print("umfang =", umfang)


Aufgaben 9–12: Geburtsjahr prüfen und Schaltjahr berechnen


def ist_schaltjahr(j):

    return (j % 4 == 0 and j % 100 != 0) or (j % 400 == 0)

  

while True:

    roh = input("Bitte Geburtsjahr (1582–2015, 0=Abbruch, 1=erneut): ")

    try:

        jahr = int(roh)

    except ValueError:

        print("Ungültig. Bitte Zahl eingeben.")

        continue

  

    if jahr == 0:

        print("Abbruch gewählt.")

        break

    if jahr == 1:

        continue

    if not (1582 <= jahr <= 2015):

        print("Jahr außerhalb des Bereichs.")

        continue

  

    if ist_schaltjahr(jahr):

        print(f"{jahr} ist ein Schaltjahr.")

    else:

        print(f"{jahr} ist kein Schaltjahr.")

    break


Aufgabe 13: Zählschleifen


for i in range(1, 11): print(i, end=" ")

print()

for i in range(-10, 11): print(i, end=" ")

print()

for i in range(10, -1, -1): print(i, end=" ")

print()

for i in range(1, 22, 2): print(i, end=" ")

print()


Aufgabe 14: Liste und Quadratzahlen


i = [2, 3, 5, 7, 11, 13]

for x in i:

    print(f"{x}:{x*x}")


Aufgabe 15: Drei positive Zahlen einlesen


import math

  

werte = []

for k in range(1, 4):

    roh = input(f"Bitte {k}. Zahl eingeben: ")

    try:

        z = float(roh)

    except ValueError:

        print("Ungültige Eingabe.")

        break

  

    if z < 0:

        print("Negative Zahl – Abbruch.")

        break

  

    werte.append(z)

else:

    print("Eingegebene Zahlen:", werte)

    print("Quadratwurzeln:")

    for z in werte:

        print(f"√{z} = {math.sqrt(z)}")


Aufgabe 16: Leere for-Schleife


for _ in range(10):

    pass


Aufgabe 17: Zahlenrätsel – allgemeine Suchlösung


from itertools import product

  

def ist_loesung(z):

    if not (100 <= z <= 999):

        return False

    quer = sum(int(d) for d in str(z))

    return (quer == 10) and (z % 7 == 0)

  

def finde_erste_loesung(start, ende):

    for z in range(start, ende):

        if ist_loesung(z):

            return z

    return None

  

erste = finde_erste_loesung(100, 1000)

print("Erste Lösung:", erste)


Erklärung: 1582 <= geburtsjahr <= 2015

  •   Dies ist eine verkettete Vergleichsoperation (chained

    comparison).

  •   Entspricht: (1582 <= geburtsjahr) and (geburtsjahr <= 2015)

  •   Ergebnis ist True, wenn das Geburtsjahr zwischen 1582 und 2015

    liegt.

  •   Beispiel: | Jahr | Ausdruck | Ergebnis |

    |——|———–|———–| | 1500 | 1582 ≤ 1500 ≤ 2015

    | False | | 1999 | 1582 ≤ 1999 ≤ 2015 | True | | 2020 | 1582

    ≤ 2020 ≤ 2015 | False |

Grund: 1582 war das Einführungsjahr des Gregorianischen Kalenders.

Updated: