Prüfungsvorbereitung

Kursinhalte

  • Zeitansatz Teil 1: 20 Minuten
  • Zeitansatz Teil 2: 15 Minuten
  • Zeitansatz Teil 3: 75 Minuten

Teil 1 – Fragen

Mögliche Gesamtpunktzahl: 40

Bewertung: Jede richtige Antwort ergibt einen Punkt.

Verfügbare Zeit: 20 Minuten

Erlaubte Hilfsmittel: Keine Hilfsmittel erlaubt

Kreise die richtige Antwort ein. Es ist jeweils genau eine Antwort richtig.

  1. Was ist das Ergebnis des folgenden Codes?

    print("Guten" + " " + "Tag")
    1. Guten Tag
    2. GutenTag
    3. „Guten Tag“
    4. Es entsteht ein Fehler.
  2. Welches Zeichen leitet in Python einen einzeiligen Kommentar ein?

    1. //
    2. <!–
    3. #
    4. /*
  3. Was passiert beim Ausführen des folgenden Codes?

    print("Python"
    1. Python wird ausgegeben.
    2. Es entsteht ein Syntaxfehler.
    3. Es entsteht ein NameError.
    4. Es erfolgt keine Ausgabe.
  4. Welche Anweisung erzeugt eine Ganzzahl-Variable mit dem Wert 8?

    1. anzahl = 8
    2. anzahl = "8"
    3. anzahl = float(8)
    4. anzahl = str(8)
  5. Welchen Datentyp besitzt der Wert True?

    1. Integer
    2. String
    3. Float
    4. Boolean
  6. Welche Anweisung wandelt den String "4.5" in eine Kommazahl um?

    1. int("4.5")
    2. float("4.5")
    3. str("4.5")
    4. number("4.5")
  7. Wann ergibt der Operator and den Wahrheitswert True?

    1. Wenn mindestens ein Ausdruck wahr ist.
    2. Wenn beide Ausdrücke wahr sind.
    3. Wenn beide Ausdrücke unterschiedlich sind.
    4. Wenn der erste Ausdruck falsch ist.
  8. Welche String-Methode wandelt alle Buchstaben in Kleinbuchstaben um?

    1. upper()
    2. lower()
    3. strip()
    4. replace()
  9. Was ist das Ergebnis von len("Schule")?

    1. 5
    2. 7
    3. 6
    4. Es entsteht ein Fehler.
  10. Welches Ergebnis liefert der folgende Ausdruck?

    "Programmieren"[0:4]
    1. Prog
    2. Progr
    3. gram
    4. Programm
  11. Wie greift man auf das zweite Element der Liste farben zu?

    1. farben[2]
    2. farben[1]
    3. farben(1)
    4. farben->1
  12. Wie fügt man den Wert "neu" am Anfang einer Liste ein?

    1. liste.append("neu")
    2. liste.add(0, "neu")
    3. liste.insert(0, "neu")
    4. liste.push("neu")
  13. Was gibt len([2, 4, 6, 8]) zurück?

    1. 3
    2. 4
    3. 8
    4. 20
  14. Wie ändert man das letzte Element der Liste werte = [1, 2, 3] in den Wert 10?

    1. werte[3] = 10
    2. werte[last] = 10
    3. werte[0] = 10
    4. werte[-1] = 10
  15. Welche Anweisung entfernt das Element mit dem Index 1 aus einer Liste?

    1. liste.remove(1)
    2. liste.pop(1)
    3. liste.delete(1)
    4. liste.clear(1)
  16. Welche Anweisung erzeugt eine neue, aufsteigend sortierte Liste, ohne die ursprüngliche Liste zahlen zu verändern?

    1. zahlen.sort()
    2. zahlen = zahlen.sort()
    3. sorted(zahlen)
    4. zahlen.order()
  17. Welche Methode kehrt die Reihenfolge der Elemente einer Liste um?

    1. reverse()
    2. backward()
    3. invert()
    4. sort()
  18. Was ist das Ergebnis des folgenden Ausdrucks?

    [3, 1, 3, 2].count(3)
    1. 1
    2. 2
    3. 3
    4. 4
  19. Welche Werte enthält list(range(2, 6))?

    1. [2, 3, 4, 5, 6]
    2. [1, 2, 3, 4, 5]
    3. [2, 3, 4, 5]
    4. [3, 4, 5, 6]
  20. Was passiert beim folgenden Code?

    while False:
        print("Start")
    1. „Start“ wird einmal ausgegeben.
    2. „Start“ wird unendlich oft ausgegeben.
    3. Es entsteht ein Syntaxfehler.
    4. Die Schleife wird nicht ausgeführt.
  21. Was bewirkt break innerhalb einer Schleife?

    1. Die aktuelle Iteration wird wiederholt.
    2. Die Schleife wird vollständig beendet.
    3. Das gesamte Programm wird beendet.
    4. Die Schleifenbedingung wird auf True gesetzt.
  22. Was bewirkt continue innerhalb einer Schleife?

    1. Die Schleife wird vollständig beendet.
    2. Die Schleife beginnt wieder bei der ersten Iteration.
    3. Der Rest der aktuellen Iteration wird übersprungen.
    4. Die Schleifenvariable wird gelöscht.
  23. Welche Funktionsdefinition ist syntaktisch korrekt?

    1. function begruessung(name):
    2. def begruessung(name)
    3. def begruessung: (name)
    4. def begruessung(name):
  24. Wie wird die Funktion begruessung mit dem Argument "Mia" aufgerufen?

    1. begruessung("Mia")
    2. begruessung["Mia"]
    3. call begruessung("Mia")
    4. begruessung = "Mia"
  25. Welche Aussage über return ist korrekt?

    1. return gibt immer Text auf dem Bildschirm aus.
    2. return startet die Funktion erneut.
    3. return beendet die Funktion und kann einen Wert zurückgeben.
    4. return darf nur in Schleifen verwendet werden.
  26. Mit welchem Befehl wird das Paket flask installiert?

    1. python flask install
    2. pip install flask
    3. pip flask create
    4. install package flask
  27. Welche Funktion liest eine Eingabe des Nutzers ein?

    1. read()
    2. scan()
    3. get()
    4. input()
  28. Was bewirkt die folgende Anweisung?

    alter = int(input("Alter: "))
    1. Die Eingabe wird in einen Boolean umgewandelt.
    2. Die Eingabe wird in eine Ganzzahl umgewandelt.
    3. Die Eingabe wird automatisch gerundet.
    4. Die Eingabe wird als Liste gespeichert.
  29. Welche Anweisung definiert eine Klasse mit dem Namen Auto?

    1. class Auto:
    2. def Auto:
    3. object Auto:
    4. create Auto:
  30. Welche Methode dient in Python als Konstruktor einer Klasse?

    1. def constructor(self):
    2. def init(self):
    3. def create(self):
    4. def __init__(self):
  31. Wie wird innerhalb einer Klasse ein Instanzattribut gespeichert?

    1. farbe.self = farbe
    2. Auto.farbe = farbe
    3. self.farbe = farbe
    4. this.farbe = farbe
  32. Welche Schreibweise definiert die Klasse Hund als Unterklasse von Tier?

    1. class Hund extends Tier:
    2. class Hund(Tier):
    3. class Hund -> Tier:
    4. class Hund inherits Tier:
  33. Wie wird das JSON-Modul importiert?

    1. import json
    2. include json
    3. require json
    4. import JSON()
  34. Welche Funktion wandelt einen JSON-String in ein Python-Objekt um?

    1. json.loadfile(text)
    2. json.dumps(text)
    3. json.loads(text)
    4. json.parse(text)
  35. Welche Funktion wandelt ein Python-Dictionary in einen JSON-String um?

    1. json.loads(daten)
    2. json.write(daten)
    3. json.load(daten)
    4. json.dumps(daten)
  36. Mit welchem Modus wird eine Datei geöffnet, wenn neue Inhalte am Dateiende ergänzt werden sollen?

    1. open("log.txt", "r")
    2. open("log.txt", "a")
    3. open("log.txt", "w")
    4. open("log.txt", "x")
  37. Welche Bedingung prüft, ob die Variable zahl gerade ist?

    1. zahl / 2 == 0
    2. zahl == 2
    3. zahl % 2 == 0
    4. zahl % 2 == 1
  38. Was ist ein Objekt in der objektorientierten Programmierung?

    1. Eine konkrete Instanz einer Klasse
    2. Eine Schleifenbedingung
    3. Eine importierte Datei
    4. Ein Kommentar im Programmcode
  39. Wie wird die Methode starten() des Objekts auto aufgerufen?

    1. starten(auto)
    2. auto->starten()
    3. starten.auto()
    4. auto.starten()
  40. Wofür wird JSON hauptsächlich verwendet?

    1. Zum Kompilieren von Python-Programmen
    2. Zum strukturierten Speichern und Austauschen von Daten
    3. Zum Zeichnen von Grafiken
    4. Zum Installieren von Python-Paketen

Lösungen Teil 1

  1. A – Guten Tag
  2. C – #
  3. B – Syntaxfehler
  4. A – anzahl = 8
  5. D – Boolean
  6. B – float(„4.5“)
  7. B – Beide Ausdrücke müssen wahr sein
  8. B – lower()
  9. C – 6
  10. A – Prog
  11. B – farben[1]
  12. C – liste.insert(0, „neu“)
  13. B – 4
  14. D – werte[-1] = 10
  15. B – liste.pop(1)
  16. C – sorted(zahlen)
  17. A – reverse()
  18. B – 2
  19. C – [2, 3, 4, 5]
  20. D – Die Schleife wird nicht ausgeführt
  21. B – Die Schleife wird vollständig beendet
  22. C – Der Rest der aktuellen Iteration wird übersprungen
  23. D – def begruessung(name):
  24. A – begruessung(„Mia“)
  25. C – Beendet die Funktion und kann einen Wert zurückgeben
  26. B – pip install flask
  27. D – input()
  28. B – Die Eingabe wird in eine Ganzzahl umgewandelt
  29. A – class Auto:
  30. D – def init(self):
  31. C – self.farbe = farbe
  32. B – class Hund(Tier):
  33. A – import json
  34. C – json.loads(text)
  35. D – json.dumps(daten)
  36. B – open(„log.txt“, „a“)
  37. C – zahl % 2 == 0
  38. A – Eine konkrete Instanz einer Klasse
  39. D – auto.starten()
  40. B – Strukturiertes Speichern und Austauschen von Daten

Teil 2 – Fehlersuche

Mögliche Gesamtpunktzahl: 25 Punkte

Jede vollständig richtige Antwort ergibt: 5 Punkte

Verfügbare Zeit: 15 Minuten

Erlaubte Hilfsmittel

Recherche auf den Seiten www.w3schools.com und www.pythonentwicklerkurs.de

Aufgabenstellung

Benenne bei jeder Codedarstellung die fehlerhafte Zeile und beschreibe den enthaltenen Fehler. Pro Codedarstellung existiert genau ein Fehler.

Hinweise

Die Aufgaben gehen von der Annahme aus, dass für jede Variable und für jedes Argument ein Wert vorhanden ist. Ein Fehler kann sowohl die Syntax als auch die Programmlogik betreffen.


Aufgabe 1

1  class Mitglied:
2      def __init__(self, name):
3          self.name = name
4          self.aktiv = True
5
6  def status_anzeigen(mitglied):
7      if mitglied.aktiv == True
8          print("Mitglied ist aktiv")
9
10 status_anzeigen(Mitglied("Lea"))

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________


Aufgabe 2

1  class Buch:
2      def __init__(self, titel):
3          self.titel = titel
4
5  def titel_ausgeben(buecher):
6      for buch in len(buecher):
7          print(buch.titel)
8
9  titel_ausgeben([Buch("Python"), Buch("Datenbanken")])

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________


Aufgabe 3

1  class Rechner:
2      def __init__(self):
3          self.ergebnis = 0
4
5      def addiere(a, b):
6          return a + b
7
8  rechner = Rechner()
9  print(rechner.addiere(4, 6))

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________


Aufgabe 4

1  class Kunde:
2      def __init__(self, name):
3          self.name = name
4
5  def kunde_suchen(name):
6      return None
7
8  kunde = kunde_suchen("Mia")
9  if kunde is None:
10     print(kunde.name)

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________


Aufgabe 5

1  class Datei:
2      def __init__(self, name):
3          self.name = name
4
5  dateien = [Datei("bericht.pdf"), Datei("liste.txt")]
6  index = 0
7  while index <= len(dateien):
8      print(dateien[index].name)
9      index += 1

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________

Lösungen Teil 2

Lösungsblatt
Abschlussprüfung Python 2026 – Teil 2/3 – Version B

Aufgabe 1

Fehlerhafte Zeile: 7

Fehlerbeschreibung:
Am Ende der if-Bedingung fehlt der Doppelpunkt.

Korrektur:
if mitglied.aktiv == True:

Aufgabe 2

Fehlerhafte Zeile: 6

Fehlerbeschreibung:
Die Funktion len(buecher) liefert eine Ganzzahl. Eine Ganzzahl kann an dieser
Stelle nicht direkt mit einer for-Schleife durchlaufen werden. Da in Zeile 7
auf buch.titel zugegriffen wird, müssen die Buchobjekte selbst durchlaufen
werden.

Korrektur:
for buch in buecher:

Aufgabe 3

Fehlerhafte Zeile: 5

Fehlerbeschreibung:
Bei einer Instanzmethode muss der erste Parameter die aktuelle Instanz
entgegennehmen. Der Parameter self fehlt. Beim Methodenaufruf wird die Instanz
automatisch als zusätzliches Argument übergeben.

Korrektur:
def addiere(self, a, b):

Aufgabe 4

Fehlerhafte Zeile: 9

Fehlerbeschreibung:
Die Bedingung prüft, ob kunde den Wert None besitzt. In diesem Fall wird
anschließend trotzdem auf kunde.name zugegriffen. Ein None-Objekt besitzt
jedoch kein Attribut name. Die Ausgabe darf nur erfolgen, wenn ein Kunde
gefunden wurde.

Korrektur:
if kunde is not None:

Aufgabe 5

Fehlerhafte Zeile: 7

Fehlerbeschreibung:
Die Schleife läuft auch dann noch, wenn index genauso groß wie die Länge der
Liste ist. Der letzte gültige Listenindex ist jedoch immer um 1 kleiner als
die Listenlänge. Dadurch entsteht beim letzten Durchlauf ein IndexError.

Korrektur:
while index < len(dateien):

Teil 3 – Prüfungsaufgabe: Bücherverwaltungssystem

Ausgangslage:

Sie arbeiten in einer kleinen Bibliothek, die ihre Buchverwaltung digitalisieren möchte. Derzeit gibt es eine JSON-Datei mit einer Liste an Büchern. Jedes Buch enthält Titel, Autor, Erscheinungsjahr und Verfügbarkeit.

Datei: buecher.json

[
  {
    "titel": "Der Prozess",
    "autor": "Franz Kafka",
    "erscheinungsjahr": 1925,
    "verfuegbar": true
  },
  {
    "titel": "Faust",
    "autor": "Johann Wolfgang von Goethe",
    "erscheinungsjahr": 1808,
    "verfuegbar": false
  }
]

Bereits vorhandene Python-Dateien:

class Buch:
    def __init__(self, titel, autor, erscheinungsjahr, verfuegbar):
        self.titel = titel
        self.autor = autor
        self.erscheinungsjahr = erscheinungsjahr
        self.verfuegbar = verfuegbar

    def anzeigen(self):
        status = "verfügbar" if self.verfuegbar else "ausgeliehen"
        print(f"{self.titel} von {self.autor} ({self.erscheinungsjahr}) – {status}")
# TODO: Hier soll später die Hauptlogik stehen

Ihre Aufgabe:

Erweitern Sie das Projekt um folgende Funktionalitäten:

  1. Modulstruktur:
    • Importieren Sie die Klasse Buch aus buch.py in main.py.
  2. Dateiverarbeitung und JSON:
    • Lesen Sie die Datei buecher.json ein und erzeugen Sie für jeden Eintrag ein Objekt der Klasse Buch.
    • Geben Sie alle Bücher mit der Methode anzeigen() aus.
  3. Neue Funktionalität hinzufügen:
    • Erstellen Sie eine Funktion, mit der ein neues Buch über Benutzereingabe hinzugefügt wird.
    • Speichern Sie die aktualisierte Liste wieder in buecher.json.

Hinweise zur Bewertung:

  • Saubere Modultrennung
  • Fehlerfreies Einlesen und Schreiben von JSON-Daten
  • Korrekte Verwendung von Klassen und Objekten
  • Funktionierende Interaktion mit der Benutzereingabe

Musterlösung

Zum Anzeigen der Lösung die Lehrkraft fragen.
Hinweis: Die Musterlösung ist als solche zu betrachten. Nicht alle Details aus der Musterlösung müssen für eine volle Punktzahl erfüllt sein. Wichtig ist, dass die Kernfunktionen gegeben sind. Wie diese erreicht werden, wird nicht benotet.

Datei: main.py

import json
from buch import Buch

DATEINAME = "buecher.json"

def buecher_laden():
    """Lädt Bücher aus der JSON-Datei und gibt eine Liste von Buch-Objekten zurück."""
    try:
        with open(DATEINAME, "r", encoding="utf-8") as f:
            daten = json.load(f)
            return [Buch(**eintrag) for eintrag in daten]
    except FileNotFoundError:
        print("Datei nicht gefunden. Es wird eine leere Liste erstellt.")
        return []
    except json.JSONDecodeError:
        print("Fehler beim Lesen der JSON-Datei.")
        return []

def buecher_speichern(buecher_liste):
    """Speichert die aktuelle Liste der Bücher in der JSON-Datei."""
    daten = [
        {
            "titel": buch.titel,
            "autor": buch.autor,
            "erscheinungsjahr": buch.erscheinungsjahr,
            "verfuegbar": buch.verfuegbar
        }
        for buch in buecher_liste
    ]
    with open(DATEINAME, "w", encoding="utf-8") as f:
        json.dump(daten, f, ensure_ascii=False, indent=2)

def neues_buch_hinzufuegen():
    """Fragt Benutzereingaben ab und gibt ein neues Buch-Objekt zurück."""
    print("\n--- Neues Buch hinzufügen ---")
    titel = input("Titel: ")
    autor = input("Autor: ")
    try:
        erscheinungsjahr = int(input("Erscheinungsjahr: "))
    except ValueError:
        print("Ungültiges Jahr. Standardwert 2000 wird gesetzt.")
        erscheinungsjahr = 2000

    verfuegbar_input = input("Verfügbar? (ja/nein): ").strip().lower()
    verfuegbar = verfuegbar_input == "ja"

    return Buch(titel, autor, erscheinungsjahr, verfuegbar)

def main():
    buecher = buecher_laden()

    print("\n--- Bücherliste ---")
    for buch in buecher:
        buch.anzeigen()

    buch_neu = neues_buch_hinzufuegen()
    buecher.append(buch_neu)

    buecher_speichern(buecher)
    print("\nDas Buch wurde erfolgreich hinzugefügt und gespeichert.")

if __name__ == "__main__":
    main()

Datei: buecher.json

[
  {
    "titel": "Der Prozess",
    "autor": "Franz Kafka",
    "erscheinungsjahr": 1925,
    "verfuegbar": true
  },
  {
    "titel": "Faust",
    "autor": "Johann Wolfgang von Goethe",
    "erscheinungsjahr": 1808,
    "verfuegbar": false
  }
]