3. Prüfungsvorbereitung

Kursinhalte

  • Zeitansatz Teil 1: 20 Minuten
  • Zeitansatz Teil 2: 15 Minuten
  • Zeitansatz Teil 3: 45 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("Py" * 3)
    1. Py3
    2. PyPyPy
    3. Py Py Py
    4. Es entsteht ein Fehler.
  2. Welcher Variablenname ist in Python gültig?

    1. 2note
    2. mein-wert
    3. _note2
    4. class
  3. Was passiert beim Ausführen des folgenden Codes?

    if 4 > 2
        print("Ja")
    1. „Ja“ wird ausgegeben.
    2. „Nein“ wird ausgegeben.
    3. Es erfolgt keine Ausgabe.
    4. Es entsteht ein Syntaxfehler.
  4. Was ist das Ergebnis von 17 // 5?

    1. 3
    2. 3.4
    3. 2
    4. 4
  5. Welchen Datentyp besitzt der Wert "False"?

    1. Boolean
    2. Integer
    3. String
    4. Float
  6. Was ist das Ergebnis von bool(0)?

    1. 0
    2. False
    3. True
    4. None
  7. Welcher Operator prüft, ob zwei Werte ungleich sind?

    1. =
    2. <>
    3. ==
    4. !=
  8. Was bewirkt die String-Methode capitalize()?

    1. Der erste Buchstabe wird groß und die übrigen Buchstaben werden klein geschrieben.
    2. Alle Buchstaben werden groß geschrieben.
    3. Alle Buchstaben werden klein geschrieben.
    4. Der String wird umgekehrt.
  9. Was ist das Ergebnis von len("Informatik")?

    1. 9
    2. 11
    3. 10
    4. 8
  10. Was liefert der folgende Ausdruck?

    "Datenbank"[0:5]
    1. Date
    2. Daten
    3. Datenb
    4. atenb
  11. Wie greift man auf das letzte Element der Liste werte zu?

    1. werte[last]
    2. werte[0]
    3. werte[len]
    4. werte[-1]
  12. Welche Methode fügt ein einzelnes Element am Ende einer Liste hinzu?

    1. append()
    2. extend()
    3. insert()
    4. add()
  13. Was ist das Ergebnis von sum([2, 3, 5])?

    1. 5
    2. 8
    3. 10
    4. 15
  14. Wie ändert man das zweite Element der Liste liste = [4, 6, 8] in den Wert 10?

    1. liste[2] = 10
    2. liste[1] = 10
    3. liste[0] = 10
    4. liste[-1] = 10
  15. Welche Anweisung löscht das erste Element einer Liste?

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

    1. sorted(zahlen, reverse=True)
    2. zahlen.sort(reverse=True)
    3. zahlen.reverse()
    4. sort(zahlen, descending=True)
  17. Welche Methode entfernt alle Elemente aus einer Liste?

    1. remove()
    2. delete()
    3. clear()
    4. empty()
  18. Welche Methode zählt, wie oft der Wert 4 in einer Liste vorkommt?

    1. index(4)
    2. count(4)
    3. find(4)
    4. len(4)
  19. Welche Werte enthält list(range(5, 10, 2))?

    1. [5, 6, 7, 8, 9]
    2. [5, 7, 9, 11]
    3. [6, 8, 10]
    4. [5, 7, 9]
  20. Was wird ausgegeben?

    for i in range(3):
        print(i + 1)
    1. 1, 2, 3
    2. 0, 1, 2
    3. 1, 2
    4. 0, 1, 2, 3
  21. Was wird ausgegeben?

    for i in range(5):
        if i == 2:
            break
        print(i)
    1. 0, 1, 2
    2. 2, 3, 4
    3. 0, 1
    4. 0, 1, 3, 4
  22. Was wird ausgegeben?

    for i in range(4):
        if i == 1:
            continue
        print(i)
    1. 0, 1, 2, 3
    2. 0, 2, 3
    3. 1, 2, 3
    4. 0, 1
  23. Welche Funktionsdefinition ist korrekt?

    1. function addiere(a, b):
    2. def addiere[a, b]:
    3. def addiere(a, b)
    4. def addiere(a, b):
  24. Wie wird die Funktion addiere mit den Werten 4 und 5 aufgerufen?

    1. addiere(4, 5)
    2. addiere[4, 5]
    3. call addiere(4, 5)
    4. addiere = 4, 5
  25. Welche Funktionsdefinition enthält einen gültigen Standardwert?

    1. def gruss("Gast"):
    2. def gruss(name:"Gast"):
    3. def gruss(name="Gast"):
    4. function gruss(name="Gast"):
  26. Wie wird das Modul math importiert?

    1. include math
    2. import math
    3. require math
    4. load math
  27. Welchen Datentyp liefert input() grundsätzlich zurück?

    1. Integer
    2. Float
    3. Boolean
    4. String
  28. Welche Anweisung liest eine Ganzzahl ein?

    1. anzahl = int(input("Anzahl: "))
    2. anzahl = input(int("Anzahl: "))
    3. anzahl = str(input("Anzahl: "))
    4. anzahl = integer("Anzahl: ")
  29. Welche Anweisung definiert eine Klasse mit dem Namen Buch?

    1. def Buch:
    2. object Buch:
    3. class Buch:
    4. create Buch:
  30. Wofür steht der Parameter self in einer Instanzmethode?

    1. Für die übergeordnete Klasse
    2. Für die aktuelle Instanz
    3. Für das importierte Modul
    4. Für alle Objekte einer Klasse gleichzeitig
  31. Welche Anweisung erzeugt ein Objekt der Klasse Buch?

    1. buch = new Buch()
    2. buch = class Buch()
    3. Buch = buch()
    4. buch = Buch()
  32. Wie wird EBook als Unterklasse von Buch definiert?

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

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

    1. json.dumps(text)
    2. json.loads(text)
    3. json.loadfile(text)
    4. json.parse(text)
  35. Welche Funktion schreibt Python-Daten als JSON in eine bereits geöffnete Datei?

    1. json.dumps(daten, datei)
    2. json.loads(daten, datei)
    3. json.write(daten, datei)
    4. json.dump(daten, datei)
  36. Mit welchem Modus wird eine Datei zum Lesen geöffnet?

    1. open("daten.txt", "r")
    2. open("daten.txt", "w")
    3. open("daten.txt", "a")
    4. open("daten.txt", "x")
  37. Welchen Vorteil bietet eine Dateiöffnung mit with open(...)?

    1. Die Datei wird automatisch verschlüsselt.
    2. Die Datei kann nur gelesen werden.
    3. Die Datei wird nach der Verwendung automatisch geschlossen.
    4. Die Datei wird automatisch gelöscht.
  38. Welche Bedingung prüft, ob temperatur kleiner oder gleich 0 ist?

    1. if temperatur =< 0:
    2. if temperatur <= 0:
    3. if temperatur = 0:
    4. if 0 < temperatur:
  39. Was ist ein Objekt in der objektorientierten Programmierung?

    1. Eine Schleifenart
    2. Ein Python-Modul
    3. Eine Klassendefinition
    4. Eine konkrete Instanz einer Klasse
  40. Welcher Python-Datentyp entsteht typischerweise aus einem JSON-Objekt mit Schlüssel-Wert-Paaren?

    1. Dictionary
    2. String
    3. Tuple
    4. Set

Lösungen Teil 1

  1. B – PyPyPy
  2. C – _note2
  3. D – Syntaxfehler
  4. A – 3
  5. C – String
  6. B – False
  7. D – !=
  8. A – Erster Buchstabe groß, übrige Buchstaben klein
  9. C – 10
  10. B – Daten
  11. D – werte[-1]
  12. A – append()
  13. C – 10
  14. B – liste[1] = 10
  15. D – del liste[0]
  16. A – sorted(zahlen, reverse=True)
  17. C – clear()
  18. B – count(4)
  19. D – [5, 7, 9]
  20. A – 1, 2, 3
  21. C – 0, 1
  22. B – 0, 2, 3
  23. D – def addiere(a, b):
  24. A – addiere(4, 5)
  25. C – def gruss(name=“Gast“):
  26. B – import math
  27. D – String
  28. A – anzahl = int(input(„Anzahl: „))
  29. C – class Buch:
  30. B – Aktuelle Instanz
  31. D – buch = Buch()
  32. A – class EBook(Buch):
  33. C – import json
  34. B – json.loads(text)
  35. D – json.dump(daten, datei)
  36. A – open(„daten.txt“, „r“)
  37. C – Die Datei wird automatisch geschlossen
  38. B – if temperatur <= 0:
  39. D – Eine konkrete Instanz einer Klasse
  40. A – Dictionary

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. Benötigte Dateien, Pfade, Datenbanken und Datenbanktabellen sind ebenfalls vorhanden. Ein Fehler kann sowohl die Syntax als auch die Programmlogik betreffen.


Aufgabe 1

1  pfad = "C:\neu\texte\bericht.txt"
2
3  with open(pfad, "r") as datei:
4      inhalt = datei.read()
5
6  print(inhalt)

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________


Aufgabe 2

1  namen = ["Zoe", "Anna", "Ben"]
2  sortierte_namen = namen.sort()
3
4  print(sortierte_namen[0])

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________


Aufgabe 3

1  namen = ["Lena", "Omar"]
2  namen_iterator = iter(namen)
3
4  try:
5      while True:
6          print(next(namen_iterator))
7  except ValueError:
8      print("Alle Namen wurden ausgegeben.")

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________


Aufgabe 4

1  class Person:
2      def __init__(self, name):
3          self.name = name
4
5  class Mitarbeiter(Person):
6      def __init__(self, name, abteilung):
7          super().__init__(self, name)
8          self.abteilung = abteilung
9
10 mitarbeiter = Mitarbeiter("Nora", "IT")
11 print(mitarbeiter.name, mitarbeiter.abteilung)

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________


Aufgabe 5

1  import sqlite3
2
3  verbindung = sqlite3.connect("kunden.db")
4  cursor = verbindung.cursor()
5  neuer_kunde = ("Mara", "Rosenheim")
6
7  cursor.execute("INSERT INTO kunden (name, stadt) VALUES (?, ?)", neuer_kunde)
8  verbindung.commit
9  verbindung.close()

Zeile: ________________________________________________

Fehlerbeschreibung: ____________________________________________________________________

____________________________________________________________________

Lösung Teil 2

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

Aufgabe 1

Fehlerhafte Zeile: 1

Fehlerbeschreibung:
Innerhalb des Dateipfades werden einfache Backslashes verwendet. Python
interpretiert Zeichenkombinationen wie \n, \t und \b als Escape-Zeichen.
Dadurch entspricht der gespeicherte String nicht dem gewünschten Dateipfad.

Mögliche Korrektur mit einem Raw-String:
pfad = r“C:\neu\texte\bericht.txt“

Alternative Korrektur mit doppelten Backslashes:
pfad = „C:\neu\texte\bericht.txt“

Aufgabe 2

Fehlerhafte Zeile: 2

Fehlerbeschreibung:
Die Listenmethode sort() sortiert die vorhandene Liste direkt und gibt keinen
neuen Listenwert zurück. Der Rückgabewert von sort() ist None. Deshalb enthält
sortierte_namen anschließend keine Liste und kann nicht über einen Index
ausgelesen werden.

Mögliche Korrektur:
namen.sort()
sortierte_namen = namen

Alternative Korrektur:
sortierte_namen = sorted(namen)

Aufgabe 3

Fehlerhafte Zeile: 7

Fehlerbeschreibung:
Wenn ein Iterator keine weiteren Elemente mehr enthält, löst next() keine
ValueError-Ausnahme aus. Stattdessen wird eine StopIteration-Ausnahme
ausgelöst. Deshalb wird die vorhandene Ausnahmebehandlung nicht ausgeführt.

Korrektur:
except StopIteration:

Aufgabe 4

Fehlerhafte Zeile: 7

Fehlerbeschreibung:
Beim Aufruf einer Methode über super() wird die aktuelle Instanz automatisch
übergeben. self darf deshalb nicht zusätzlich als Argument an die
init()-Methode der Elternklasse übergeben werden. Andernfalls erhält die
Methode zu viele Argumente.

Korrektur:
super().init(name)

Aufgabe 5

Fehlerhafte Zeile: 8

Fehlerbeschreibung:
Die Methode commit wird lediglich referenziert, aber nicht aufgerufen. Ohne
die runden Klammern wird die Datenbanktransaktion nicht bestätigt. Der neu
eingefügte Datensatz wird dadurch beim Schließen der Verbindung nicht
dauerhaft gespeichert.

Korrektur:
verbindung.commit()

Teil 3 – Prüfungsaufgabe: Reklamationsverwaltung

Ausgangslage:

In einem Reparaturservice für Elektrogeräte sollen Kundendaten und Reklamationen verwaltet werden. Es gibt bereits eine Datei kunde.py, die eine Klasse Kunde enthält, sowie eine JSON-Datei kunden.json, in der alle Kundendaten gespeichert werden.

Datei: kunde.py

class Kunde:
    def __init__(self, kunden_id, name, email):
        self.kunden_id = kunden_id
        self.name = name
        self.email = email

    def __str__(self):
        return f"{self.kunden_id}: {self.name} ({self.email})"

Datei: kunden.json

[
    {"kunden_id": 1, "name": "Mara Berger", "email": "m.berger@example.com"},
    {"kunden_id": 2, "name": "Luca Klein", "email": "l.klein@example.com"}
]

Ihre Aufgabe:

Erweitern Sie die bestehende Anwendung um eine Funktion zur Verwaltung von Reklamationen. Die Reklamationen sollen in einer separaten JSON-Datei gespeichert werden. Jede Reklamation gehört zu genau einem Kunden.

Erstellen Sie dazu:

  1. Ein neues Modul reklamation.py, das eine Klasse Reklamation enthält.
  2. Die Klasse Reklamation soll folgende Attribute haben:
    • reklamations_id (int)
    • kunden_id (int)
    • produktname (str)
    • beschreibung (str)
    • status (str, z. B. „offen“, „in Bearbeitung“, „erledigt“)
  3. Eine Methode speichern_in_datei(self, dateiname), die die Reklamation im JSON-Format in eine Datei speichert. Wenn die Datei noch nicht existiert, soll sie erstellt werden.
  4. Eine weitere Funktion lade_reklamationen(dateiname: str) -> list[Reklamation], die alle Reklamationen aus einer Datei lädt und als Liste von Objekten zurückgibt.

# Projektstruktur
├── kunde.py           # dient der Orientierung - kann, muss aber nicht verwendet werden
├── reklamation.py     ← zu erstellen
├── kunden.json.       # dient der Orientierung - kann, muss aber nicht verwendet werden
├── reklamationen.json ← wird durch Programm erstellt
└── main.py            ← soll zur Ausführung erstellt werden

Hinweise zur Bewertung:

  • Saubere Modultrennung
  • Fehlerfreies Einlesen und Schreiben von JSON-Daten
  • Korrekte Verwendung von Klassen und Objekten

Musterlösung:

Bei Lehrkraft hier freischalten lassen.

Datei: reklamation.py

import json
import os

class Reklamation:
    def __init__(self, reklamations_id, kunden_id, produktname, beschreibung, status):
        self.reklamations_id = reklamations_id
        self.kunden_id = kunden_id
        self.produktname = produktname
        self.beschreibung = beschreibung
        self.status = status

    def speichern_in_datei(self, dateiname):
        eintrag = self.__dict__
        if os.path.exists(dateiname):
            with open(dateiname, "r", encoding="utf-8") as f:
                daten = json.load(f)
        else:
            daten = []
        daten.append(eintrag)
        with open(dateiname, "w", encoding="utf-8") as f:
            json.dump(daten, f, indent=2)

    def __str__(self):
        return f"[{self.reklamations_id}] Produkt: {self.produktname}, Status: {self.status}"

def lade_reklamationen(dateiname):
    reklamationen = []
    try:
        with open(dateiname, "r", encoding="utf-8") as f:
            daten = json.load(f)
            for eintrag in daten:
                reklamation = Reklamation(**eintrag)
                reklamationen.append(reklamation)
    except FileNotFoundError:
        pass
    return reklamationen

Datei: main.py

from reklamation import Reklamation, lade_reklamationen

# Beispielhafte Erstellung einer Reklamation
reklamation1 = Reklamation(1001, 1, "Toaster X1", "Heizt nicht mehr", "offen")
reklamation1.speichern_in_datei("reklamationen.json")

# Laden und Ausgabe
alle = lade_reklamationen("reklamationen.json")
for r in alle:
    print(r)