2. 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.
-
Was ist das Ergebnis des folgenden Codes?
print(2 + 3 * 4)- 20
- 24
- 14
- 18
-
Welcher Code verwendet die Einrückung korrekt?
-
if x > 0: print("positiv") -
if x > 0: print("positiv") -
if x > 0 { print("positiv") } -
if x > 0 then print("positiv")
-
-
Was passiert, wenn die Variable
namezuvor nicht definiert wurde?print(name)- Es wird eine leere Zeile ausgegeben.
- Es entsteht ein NameError.
- Es entsteht immer ein Syntaxfehler.
- Die Variable wird automatisch erstellt.
-
Welche Anweisung speichert den Wert 12 als String?
wert = 12wert = float(12)wert = "12"wert = bool(12)
-
Welchen Datentyp besitzt der folgende Wert?
[1, 2, 3]- Liste
- Tuple
- String
- Dictionary
-
Was wird durch den folgenden Code ausgegeben?
wert = int("15") print(wert)- „15“
- 15.0
- Es entsteht ein Fehler.
- 15
-
Wann ergibt der Operator
orden WahrheitswertTrue?- Nur wenn beide Ausdrücke wahr sind.
- Wenn mindestens ein Ausdruck wahr ist.
- Nur wenn beide Ausdrücke falsch sind.
- Nur wenn beide Ausdrücke identisch sind.
-
Welche String-Methode entfernt Leerzeichen am Anfang und Ende eines Strings?
strip()remove()clear()trimtext()
-
Was gibt
len(["a", "b", "c"])zurück?- 2
- 4
- 3
- 6
-
Was ist das Ergebnis des folgenden Ausdrucks?
"Python"[-1]- P
- o
- Python
- n
-
Wie greift man auf das erste Element einer Liste zu?
liste[0]liste[1]liste.first()liste(0)
-
Welche Methode fügt mehrere Elemente aus einer anderen Liste hinzu?
appendall()insert()extend()push()
-
Was wird ausgegeben?
zahlen = [10, 20, 30] print(zahlen[1])- 10
- 20
- 30
- 1
-
Wie wird das erste Element der Liste
zahlenauf den Wert 99 gesetzt?zahlen[1] = 99zahlen.first = 99zahlen(0) = 99zahlen[0] = 99
-
Welche Anweisung entfernt das erste Element mit dem Wert 5 aus einer Liste?
liste.remove(5)liste.pop(5)liste.delete(5)liste.clear(5)
-
Wie wird eine Liste
zahlenabsteigend sortiert?zahlen.sort(descending=True)zahlen.sort(reverse=True)zahlen.reverse(sort=True)sort(zahlen, down=True)
-
Welche Methode entfernt alle Elemente aus einer Liste?
delete()empty()clear()removeall()
-
Welche Methode liefert den Index des ersten Vorkommens eines Wertes?
find()position()count()index()
-
Welche Werte enthält
list(range(1, 6, 2))?- [1, 2, 3, 4, 5]
- [1, 3, 5]
- [2, 4, 6]
- [1, 3, 5, 7]
-
Welche Aussage über eine
while-Schleife ist korrekt?- Sie wird ausgeführt, solange ihre Bedingung wahr ist.
- Sie wird immer mindestens einmal ausgeführt.
- Sie benötigt immer eine Liste.
- Sie kann nicht mit
breakbeendet werden.
-
Welche Anweisung beendet eine Schleife sofort?
continuereturnbreakpass
-
Welche Wirkung hat
continue?- Das gesamte Programm wird beendet.
- Die Schleife wird dauerhaft angehalten.
- Die Schleife wird von vorne neu gestartet.
- Der restliche Code der aktuellen Iteration wird übersprungen.
-
Welche Funktion besitzt einen gültigen Standardwert für den Parameter
name?def gruss("Gast"):def gruss(name="Gast"):def gruss(name:"Gast"):function gruss(name="Gast"):
-
Wie wird der Rückgabewert der Funktion
addieregespeichert?ergebnis = addiere(2, 3)addiere = ergebnis(2, 3)return ergebnis = addiere(2, 3)ergebnis == addiere[2, 3]
-
Was bewirkt die Anweisung
return ergebnisin einer Funktion?- Sie gibt den Wert nur auf dem Bildschirm aus.
- Sie löscht die Variable
ergebnis. - Sie beendet die Funktion und gibt den Wert zurück.
- Sie startet die Funktion erneut.
-
Mit welchem Befehl wird das Paket
requestsinstalliert?requests installpython create requestsinstall.pip requestspip install requests
-
Welchen Datentyp liefert
input()grundsätzlich zurück?- String
- Integer
- Float
- Boolean
-
Welche Anweisung liest einen Preis ein und wandelt ihn in eine Kommazahl um?
preis = int(input("Preis: "))preis = float(input("Preis: "))preis = input(float("Preis: "))preis = str(input("Preis: "))
-
Welche Anweisung definiert eine Klasse mit dem Namen
Person?def Person:object Person:class Person:new Person:
-
Welche spezielle Methode wird normalerweise beim Erstellen eines Objekts automatisch aufgerufen?
__init__()__start__()__create__()__class__()
-
Wie greift man auf das Attribut
namedes Objektspersonzu?person->nameperson.nameperson[name]name.person
-
Welche Schreibweise definiert
Azubials Unterklasse vonMitarbeiter?class Azubi extends Mitarbeiter:class Azubi -> Mitarbeiter:class Azubi inherits Mitarbeiter:class Azubi(Mitarbeiter):
-
Welche Funktion wandelt einen JSON-String in Python-Daten um?
json.loads()json.dumps()json.write()json.encode()
-
Welche Funktion erzeugt aus Python-Daten einen JSON-String?
json.loads()json.read()json.dumps()json.convert()
-
Welche Funktion liest JSON-Daten aus einer bereits geöffneten Datei?
json.loads(datei)json.load(datei)json.read(datei)json.open(datei)
-
Mit welchem Modus wird eine Datei zum Lesen geöffnet?
open("daten.txt", "w")open("daten.txt", "a")open("daten.txt", "x")open("daten.txt", "r")
-
Welche Verzweigung ist syntaktisch korrekt?
-
if punkte >= 50: print("Bestanden") elif punkte >= 40: print("Nachprüfung") -
if punkte >= 50 print("Bestanden") else if punkte >= 40 -
if punkte >= 50 then: print("Bestanden") -
if (punkte >= 50) { print("Bestanden") }
-
-
Welche Anweisung erzeugt ein Objekt der Klasse
Person?p = class Person()p = new Person()p = Person()Person = p()
-
Wie wird die Methode
anzeigen()des Objektspaufgerufen?anzeigen(p)p.anzeigen()p->anzeigen()anzeigen.p()
-
Welcher Python-Datentyp entsteht typischerweise aus einem JSON-Objekt mit Schlüssel-Wert-Paaren?
- Liste
- Dictionary
- Tuple
- Set
Lösungen Teil 1
- C – 14
- A – Korrekte Einrückung nach der if-Anweisung
- B – NameError
- C – wert = „12“
- A – Liste
- D – 15
- B – Mindestens ein Ausdruck muss wahr sein
- A – strip()
- C – 3
- D – n
- A – liste[0]
- C – extend()
- B – 20
- D – zahlen[0] = 99
- A – liste.remove(5)
- B – zahlen.sort(reverse=True)
- C – clear()
- D – index()
- B – [1, 3, 5]
- A – Sie wird ausgeführt, solange ihre Bedingung wahr ist
- C – break
- D – Der restliche Code der aktuellen Iteration wird übersprungen
- B – def gruss(name=“Gast“):
- A – ergebnis = addiere(2, 3)
- C – Beendet die Funktion und gibt den Wert zurück
- D – pip install requests
- A – String
- B – preis = float(input(„Preis: „))
- C – class Person:
- A – init()
- B – person.name
- D – class Azubi(Mitarbeiter):
- A – json.loads()
- C – json.dumps()
- B – json.load(datei)
- D – open(„daten.txt“, „r“)
- A – Korrekte if- und elif-Syntax
- C – p = Person()
- B – p.anzeigen()
- B – 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, Datenbanken und Datenbanktabellen sind ebenfalls vorhanden. Ein Fehler kann sowohl die Syntax als auch die Programmlogik betreffen.
Aufgabe 1
1 preis = input("Preis des Artikels: ")
2 rabatt = 5
3 endpreis = float(preis - rabatt)
4 print(f"Endpreis: {endpreis:.2f} Euro")
Zeile: ________________________________________________
Fehlerbeschreibung: ____________________________________________________________________
____________________________________________________________________
Aufgabe 2
1 text = "Python ist vielseitig"
2 neuer_text = text.replace["Python", "Programmieren"]
3 print(neuer_text)
Zeile: ________________________________________________
Fehlerbeschreibung: ____________________________________________________________________
____________________________________________________________________
Aufgabe 3
1 woerter = ["Python", "macht", "Spaß"]
2 satz = woerter.join(" ")
3 print(satz)
Zeile: ________________________________________________
Fehlerbeschreibung: ____________________________________________________________________
____________________________________________________________________
Aufgabe 4
1 import json
2
3 daten = '{"name": "Lina", "aktiv": true}'
4 benutzer = json.load(daten)
5 print(benutzer["name"])
Zeile: ________________________________________________
Fehlerbeschreibung: ____________________________________________________________________
____________________________________________________________________
Aufgabe 5
1 import sqlite3
2
3 verbindung = sqlite3.connect("kunden.db")
4 cursor = verbindung.cursor()
5 stadt = "Rosenheim"
6
7 cursor.execute("SELECT name FROM kunden WHERE stadt = ?", stadt)
8 ergebnisse = cursor.fetchall()
9
10 for kunde in ergebnisse:
11 print(kunde[0])
12
13 verbindung.close()
Zeile: ________________________________________________
Fehlerbeschreibung: ____________________________________________________________________
____________________________________________________________________
Lösungen Teil 2
Lösungsblatt
Aufgabe 1
Fehlerhafte Zeile: 3
Fehlerbeschreibung:
Die Funktion input() gibt den eingegebenen Preis als String zurück. In Zeile 3
wird versucht, von diesem String die Ganzzahl 5 abzuziehen. Die Subtraktion
findet bereits vor der Umwandlung durch float() statt. Ein String kann jedoch
nicht direkt von einer Ganzzahl subtrahiert werden.
Korrektur:
endpreis = float(preis) – rabatt
Aufgabe 2
Fehlerhafte Zeile: 2
Fehlerbeschreibung:
replace() ist eine String-Methode und muss mit runden Klammern aufgerufen
werden. Eckige Klammern werden für Zugriffe auf Elemente beziehungsweise
Indizes verwendet.
Korrektur:
neuer_text = text.replace(„Python“, „Programmieren“)
Aufgabe 3
Fehlerhafte Zeile: 2
Fehlerbeschreibung:
join() ist eine Methode eines Strings und keine Methode einer Liste. Der
String, der zwischen den Listenelementen eingefügt werden soll, muss vor der
Methode stehen. Die Liste wird als Argument übergeben.
Korrektur:
satz = “ „.join(woerter)
Aufgabe 4
Fehlerhafte Zeile: 4
Fehlerbeschreibung:
json.load() erwartet eine geöffnete Datei beziehungsweise ein Dateiobjekt.
Die Variable daten enthält jedoch bereits einen JSON-String. Zum Umwandeln
eines JSON-Strings in ein Python-Objekt muss json.loads() verwendet werden.
Korrektur:
benutzer = json.loads(daten)
Aufgabe 5
Fehlerhafte Zeile: 7
Fehlerbeschreibung:
Die Werte für die Platzhalter einer SQL-Anweisung müssen als Sequenz
übergeben werden. Bei nur einem Wert muss deshalb ein Tupel mit einem Element
verwendet werden. Das Komma nach stadt ist erforderlich, damit Python den
Ausdruck als Tupel erkennt.
Korrektur:
cursor.execute(„SELECT name FROM kunden WHERE stadt = ?“, (stadt,))
Teil 3 – Prüfungsaufgabe: Reklamationsverwaltung
Ausgangslage:
Die Fahrradwerkstatt RadFix verwaltet Reklamationen ihrer Kunden digital. Dafür gibt es eine bestehende Codebasis, die bereits Kundendaten einliest und einfache Objekte für Reklamationen verwendet. Die Daten werden in einer JSON-Datei gespeichert. Die bisherige Anwendung erlaubt jedoch nur das Speichern, nicht aber das gezielte Auswerten der Reklamationen.
Datei: reklamation.json
[
{
"kundennummer": "K1001",
"produkt": "E-Bike Akku",
"beschreibung": "Akku lädt nicht mehr",
"datum": "2025-05-28",
"status": "offen"
},
{
"kundennummer": "K1002",
"produkt": "Kettenschaltung",
"beschreibung": "Springt beim Schalten",
"datum": "2025-05-25",
"status": "bearbeitet"
}
]
Bereits vorhandene Python-Datei: reklamation.py
import json
class Reklamation:
def __init__(self, kundennummer, produkt, beschreibung, datum, status):
self.kundennummer = kundennummer
self.produkt = produkt
self.beschreibung = beschreibung
self.datum = datum
self.status = status
def lade_reklamationen(dateipfad):
with open(dateipfad, 'r') as datei:
daten = json.load(datei)
reklamationen = []
for eintrag in daten:
r = Reklamation(**eintrag)
reklamationen.append(r)
return reklamationen
Ihre Aufgabe:
Erweitern Sie das Projekt um folgende Funktionalitäten:
- Erweiterung der Klasse
Reklamation:- Fügen Sie der Klasse eine Methode
ist_offen()hinzu, dieTruezurückgibt, wenn der Status"offen"ist.
Erstellen SIe zusätzlich eine Methodeals_dict(), die das Objekt als Dictionary zurückgibt (für die JSON-Speicherung).
- Fügen Sie der Klasse eine Methode
- Neue Funktion: Offene Reklamationen anzeigen
- Erstellen Sie eine Funktion
zeige_offene_reklamationen(reklamationen), die alle offenen Reklamationen auf der Konsole ausgibt – dabei soll jede Reklamation in einer Zeile im Format erscheinen:
Kundennummer: K1001 | Produkt: E-Bike Akku | Datum: 2025-05-28
- Erstellen Sie eine Funktion
- Neue Reklamation hinzufügen:
- Schreiben Sie eine Funktion
neue_reklamation_hinzufuegen(dateipfad), die den Benutzer nach den folgenden Eingaben fragt: Kundennummer, Produkt, Beschreibung - Das Datum wird automatisch auf das aktuelle Datum gesetzt (
datetimeverwenden), der Status auf"offen". - Speichern Sie die neue Reklamation in die vorhandene JSON-Datei.
- Schreiben Sie eine Funktion
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:
Zur Anzeige der Musterlösung bitte auf die Lehrkraft zugehen.
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: reklamation.py
import json
from datetime import datetime
class Reklamation:
def __init__(self, kundennummer, produkt, beschreibung, datum, status):
self.kundennummer = kundennummer
self.produkt = produkt
self.beschreibung = beschreibung
self.datum = datum
self.status = status
def ist_offen(self):
return self.status.lower() == "offen"
def als_dict(self):
return {
"kundennummer": self.kundennummer,
"produkt": self.produkt,
"beschreibung": self.beschreibung,
"datum": self.datum,
"status": self.status
}
def lade_reklamationen(dateipfad):
try:
with open(dateipfad, 'r', encoding='utf-8') as datei:
daten = json.load(datei)
return [Reklamation(**eintrag) for eintrag in daten]
except FileNotFoundError:
print("Datei nicht gefunden. Es wird eine neue Liste erstellt.")
return []
except json.JSONDecodeError:
print("Datei konnte nicht gelesen werden. Leere Liste wird verwendet.")
return []
def speichere_reklamationen(dateipfad, reklamationen):
daten = [r.als_dict() for r in reklamationen]
with open(dateipfad, 'w', encoding='utf-8') as f:
json.dump(daten, f, ensure_ascii=False, indent=2)
Datei: main.py
from reklamation import Reklamation, lade_reklamationen, speichere_reklamationen
from datetime import datetime
DATEIPFAD = "reklamation.json"
def zeige_offene_reklamationen(reklamationen):
print("\n--- Offene Reklamationen ---")
for r in reklamationen:
if r.ist_offen():
print(f"Kundennummer: {r.kundennummer} | Produkt: {r.produkt} | Datum: {r.datum}")
def neue_reklamation_hinzufuegen(dateipfad):
print("\n--- Neue Reklamation hinzufügen ---")
kundennummer = input("Kundennummer: ")
produkt = input("Produkt: ")
beschreibung = input("Beschreibung: ")
datum = datetime.now().strftime("%Y-%m-%d")
status = "offen"
neue_reklamation = Reklamation(kundennummer, produkt, beschreibung, datum, status)
reklamationen = lade_reklamationen(dateipfad)
reklamationen.append(neue_reklamation)
speichere_reklamationen(dateipfad, reklamationen)
print("Reklamation wurde gespeichert.")
def main():
reklamationen = lade_reklamationen(DATEIPFAD)
zeige_offene_reklamationen(reklamationen)
neue_reklamation_hinzufuegen(DATEIPFAD)
if __name__ == "__main__":
main()
