Py Codes
# ##
gtp5: Gesamtlösung – Übungsblatt 1: Kontrollstrukturen (Python)
Verständnisfragen
- Wie werden einzelne Anweisungen in Python voneinander getrennt?
- Durch Zeilenumbrüche. Mehrere Anweisungen in einer Zeile können
mit ; getrennt werden.
- Wie werden Anweisungsblöcke in Python definiert/markiert?
- Durch Einrückung (Indentation) und einen Doppelpunkt : am Ende
der Kopfzeile.
- 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.