<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.bzz.ch/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.bzz.ch/feed.php">
        <title>BZZ - Modulwiki - modul:m323:learningunits</title>
        <description></description>
        <link>https://wiki.bzz.ch/</link>
        <image rdf:resource="https://wiki.bzz.ch/_media/wiki/logo.png" />
       <dc:date>2026-09-11T04:30:08+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/profiling?rev=1788954840&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/performance?rev=1788954823&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/characterization?rev=1788954807&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/purerefactoring?rev=1788954790&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/langefunktion?rev=1788954773&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/optimieren?rev=1788954722&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/funktionalesrefactoring?rev=1788954683&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/langefunktion?rev=1788953954&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu04/aufgaben/reduce2?rev=1788947114&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/eigenesprojekt?rev=1788945586&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/profiling?rev=1788945566&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/review?rev=1788945520&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/review?rev=1788945491&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/datenstruktur?rev=1788945471&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/datenstruktur?rev=1788945428&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/performance?rev=1788945410&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/characterization?rev=1788945356&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/purerefactoring?rev=1788945317&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/pipeline?rev=1788945281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/pipeline?rev=1788945266&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.bzz.ch/_media/wiki/logo.png">
        <title>BZZ - Modulwiki</title>
        <link>https://wiki.bzz.ch/</link>
        <url>https://wiki.bzz.ch/_media/wiki/logo.png</url>
    </image>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/profiling?rev=1788954840&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T11:54:00+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.A11 - Den echten Hotspot finden - Repo-Verlinkung korrigiert: nodisp im Footer statt Link im Text</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/profiling?rev=1788954840&amp;do=diff</link>
        <description>LU07.A11 - Den echten Hotspot finden

Tippen Sie zuerst, welche Funktion die Zeit frisst. Messen Sie danach mit cProfile - und vergleichen Sie mit Ihrer Vermutung.

Ausgangslage


GESPERRT = [f&quot;user{i}&quot; for i in range(5000)]


def normalisieren(name):
    return name.strip().lower()


def ist_gesperrt(name):
    return name in GESPERRT


def pruefen(namen):
    return [n for n in namen if ist_gesperrt(normalisieren(n))]</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/performance?rev=1788954823&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T11:53:43+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.A08 - Vorgegebene Massnahmen umsetzen - Repo-Verlinkung korrigiert: nodisp im Footer statt Link im Text</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/performance?rev=1788954823&amp;do=diff</link>
        <description>LU07.A08 - Vorgegebene Massnahmen umsetzen

Setzen Sie vier vorgegebene Performance-Massnahmen um und belegen Sie jede mit einer Messung vorher und nachher.

Die vier Massnahmen
 Nr.  Funktion  Vorgegebene Massnahme  1  gesperrte_anfragen  geeignetere Datenstruktur wählen</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/characterization?rev=1788954807&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T11:53:27+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.A07 - Sicherheitsnetz zuerst - Repo-Verlinkung korrigiert: nodisp im Footer statt Link im Text</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/characterization?rev=1788954807&amp;do=diff</link>
        <description>LU07.A07 - Sicherheitsnetz zuerst

Schreiben Sie Characterization Tests für eine Funktion, deren Verhalten niemand mehr kennt - und refactoren Sie sie erst danach.

Ausgangslage

Diese Funktion läuft seit zwei Jahren im Notensystem. Dokumentation gibt es keine, Tests auch nicht.</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/purerefactoring?rev=1788954790&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T11:53:10+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.A06 - Unpure wird pure - Repo-Verlinkung korrigiert: nodisp im Footer statt Link im Text</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/purerefactoring?rev=1788954790&amp;do=diff</link>
        <description>LU07.A06 - Unpure wird pure

Entfernen Sie den globalen Zustand aus einer kleinen Lagerverwaltung und trennen Sie Berechnung von Ein- und Ausgabe.

Ausgangslage


lager = {}
protokoll = []


def einlagern(artikel, menge):
    global lager
    if artikel in lager:
        lager[artikel] += menge
    else:
        lager[artikel] = menge
    protokoll.append(f&quot;+{menge} {artikel}&quot;)
    print(f&quot;{artikel}: {lager[artikel]}&quot;)


def entnehmen(artikel, menge):
    global lager
    if lager.get(artikel, 0…</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/langefunktion?rev=1788954773&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T11:52:53+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.A04 - Lange Funktion zerlegen - Repo-Verlinkung korrigiert: nodisp im Footer statt Link im Text</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/langefunktion?rev=1788954773&amp;do=diff</link>
        <description>LU07.A04 - Lange Funktion zerlegen

Zerlegen Sie die Funktion bericht in benannte Teilfunktionen. Die Ausgabe muss zeichengenau dieselbe bleiben.

Ausgangslage


BESTELLUNGEN = [
    {&quot;kunde&quot;: &quot;  Meier &quot;, &quot;artikel&quot;: &quot;Maus&quot;,     &quot;menge&quot;: 3, &quot;preis&quot;: 25.0,   &quot;status&quot;: &quot;offen&quot;},
    {&quot;kunde&quot;: &quot;keller&quot;,   &quot;artikel&quot;: &quot;Laptop&quot;,   &quot;menge&quot;: 1, &quot;preis&quot;: 1200.0, &quot;status&quot;: &quot;bezahlt&quot;},
    {&quot;kunde&quot;: &quot;MEIER&quot;,    &quot;artikel&quot;: &quot;Tastatur&quot;, &quot;menge&quot;: 2, &quot;preis&quot;: 80.0,   &quot;status&quot;: &quot;bezahlt&quot;},
    {&quot;kunde&quot;: &quot;Suter&quot;, …</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/optimieren?rev=1788954722&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T11:52:02+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07g - Leistung verbessern - Animation zur Komplexität eingebunden</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/optimieren?rev=1788954722&amp;do=diff</link>
        <description>LU07g - Leistung verbessern

Sie haben gemessen (LU07f) und wissen, wo die Zeit hingeht. Jetzt geht es um die Frage, was man dagegen tut. Die wirksamsten Massnahmen sind fast nie «cleverer Code», sondern eine andere Datenstruktur oder ein anderer Algorithmus</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/funktionalesrefactoring?rev=1788954683&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T11:51:23+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07d - Funktionales Refactoring - Animation eingebunden</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/funktionalesrefactoring?rev=1788954683&amp;do=diff</link>
        <description>LU07d - Funktionales Refactoring

Die Techniken aus LU07c gelten in jeder Sprache und jedem Paradigma. Diese Seite behandelt die drei Umbauten, die für dieses Modul zentral sind: von der Schleife zur Pipeline, von unpure zu pure, von mutable zu immutable.</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/langefunktion?rev=1788953954&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T11:39:14+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.L04 - Lange Funktion zerlegen - L04 korrigiert: sum() braucht Startwert 0.0, sonst Total 0 statt 0.0 bei leerer Liste</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/langefunktion?rev=1788953954&amp;do=diff</link>
        <description>LU07.L04 - Lange Funktion zerlegen

Schritt 0: Sicherheitsnetz


# main_test.py
import main

ERWARTET = (
    &quot;Bestellungen (4)\n&quot;
    &quot;----------------\n&quot;
    &quot;Meier: Maus = 75.0 CHF\n&quot;
    &quot;Keller: Laptop = 1140.0 CHF\n&quot;
    &quot;Meier: Tastatur = 152.0 CHF\n&quot;
    &quot;Keller: Monitor = 199.5 CHF\n&quot;
    &quot;----------------\n&quot;
    &quot;Total: 1566.5 CHF&quot;
)

def test_bericht_unveraendert():
    assert main.bericht(main.BESTELLUNGEN) == ERWARTET

def test_rabatt_erst_ab_100():
    knapp_darunter = [{&quot;kunde&quot;: &quot;…</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu04/aufgaben/reduce2?rev=1788947114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:45:14+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU04.A10 - Größter gemeinsamer Teiler mit reduce - [Aufgabenstellung] </title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu04/aufgaben/reduce2?rev=1788947114&amp;do=diff</link>
        <description>LU04.A10 - Größter gemeinsamer Teiler mit reduce

Verwende die reduce-Funktion, um den größten gemeinsamen Teiler (GGT) einer Liste von Zahlen zu finden.

Aufgabenstellung

	*  Gegeben ist eine Liste von Zahlen, z. B. [12, 15, 21].
	*  Verwende die</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/eigenesprojekt?rev=1788945586&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:19:46+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.A12 - Refactoring im eigenen Projekt - LU07.A12 - Refactoring im eigenen Flask-Projekt (neu, Portfolio-Brücke)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/eigenesprojekt?rev=1788945586&amp;do=diff</link>
        <description>LU07.A12 - Refactoring im eigenen Projekt

Refactoren Sie eine echte Stelle in Ihrer Flask-Applikation und sichern Sie dabei das Material, das Sie im Portfolio für D1I und D1A brauchen.

Detaillierte Aufgabenstellung

Teil 1: Refactoring (D1I)

	*  Suchen Sie in Ihrem Projekt die</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/profiling?rev=1788945566&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:19:26+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.L11 - Den echten Hotspot finden - LU07.L11 - Den echten Hotspot finden (neu)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/profiling?rev=1788945566&amp;do=diff</link>
        <description>LU07.L11 - Den echten Hotspot finden

Das Profil


         12004 function calls in 0.104 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.002    0.002    0.104    0.104 pruefen
     3000    0.099    0.000    0.099    0.000 ist_gesperrt
     3000    0.002    0.000    0.003    0.000 normalisieren
     3000    0.001    0.000    0.001    0.000 {method &#039;strip&#039; of &#039;str&#039; objects}</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/review?rev=1788945520&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:18:40+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.L10 - Refactoring-Review - LU07.L10 - Refactoring-Review (neu)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/review?rev=1788945520&amp;do=diff</link>
        <description>LU07.L10 - Refactoring-Review
 Paar  Urteil  Was passiert  1  Verhaltensänderung  namen.sort() gibt None zurück und sortiert die übergebene Liste an Ort und Stelle. Der Aufrufer bekommt None statt einer Liste - und seine Originalliste ist verändert</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/review?rev=1788945491&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:18:11+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.A10 - Refactoring-Review - LU07.A10 - Refactoring-Review (neu, D1A)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/review?rev=1788945491&amp;do=diff</link>
        <description>LU07.A10 - Refactoring-Review

Sechs Kolleginnen und Kollegen behaupten, ein Refactoring gemacht zu haben. Prüfen Sie: Stimmt das? Bei welchen hat sich das Verhalten heimlich geändert?

Detaillierte Aufgabenstellung

Beurteilen Sie jedes Paar. Notieren Sie:</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/datenstruktur?rev=1788945471&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:17:51+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.L09 - Datenstruktur begründet auswählen - LU07.L09 - Datenstruktur begründet auswählen (neu)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/datenstruktur?rev=1788945471&amp;do=diff</link>
        <description>LU07.L09 - Datenstruktur begründet auswählen

Die drei Fassungen


def mit_liste(ausleihen, gesperrte):
    out = []
    for k in ausleihen:
        for konto, grund in gesperrte:
            if konto == k:
                out.append((k, grund))
                break
    return out


def mit_set(ausleihen, gesperrte):
    konten = {k for k, _ in gesperrte}
    gruende = dict(gesperrte)
    return [(k, gruende[k]) for k in ausleihen if k in konten]


def mit_dict(ausleihen, gesperrte):
    index …</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/datenstruktur?rev=1788945428&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:17:08+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.A09 - Datenstruktur begründet auswählen - LU07.A09 - Datenstruktur begründet auswählen (neu, D1A)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/datenstruktur?rev=1788945428&amp;do=diff</link>
        <description>LU07.A09 - Datenstruktur begründet auswählen

Lösen Sie dieselbe Aufgabe mit drei Datenstrukturen, messen Sie alle drei und sprechen Sie eine begründete Empfehlung aus - inklusive der Fälle, in denen Ihre Empfehlung falsch wäre.

Die Aufgabe

Eine Bibliothek führt eine Sperrliste. Zu jeder Ausleihe muss geprüft werden, ob das Konto gesperrt ist; bei gesperrten Konten wird zusätzlich der Sperrgrund angezeigt.</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/performance?rev=1788945410&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:16:50+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.L08 - Vorgegebene Massnahmen umsetzen - LU07.L08 - Vorgegebene Massnahmen umsetzen (neu)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/performance?rev=1788945410&amp;do=diff</link>
        <description>LU07.L08 - Vorgegebene Massnahmen umsetzen

Ergebnisse

Gemessen mit min(timeit.repeat(..., number=1, repeat=5)) auf einem Notebook, Python 3.12. Ihre absoluten Zahlen werden abweichen - die Grössenordnung der Faktoren nicht.
 Massnahme  vorher  nachher</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/characterization?rev=1788945356&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:15:56+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.L07 - Sicherheitsnetz zuerst - LU07.L07 - Sicherheitsnetz zuerst (neu)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/characterization?rev=1788945356&amp;do=diff</link>
        <description>LU07.L07 - Sicherheitsnetz zuerst

Schritt 1: Verhalten erkunden


notenschnitt([18, 20, 16], 20)  -&gt;  5.5
notenschnitt([0, 0], 20)        -&gt;  1.0
notenschnitt([20, 20], 20)      -&gt;  6.0
notenschnitt([25], 20)          -&gt;  6.0     (Deckelung greift)
notenschnitt([10], 0)           -&gt;  1       (int, nicht float)
notenschnitt([13, 14], 20)      -&gt;  4.5
notenschnitt([], 20)            -&gt;  ZeroDivisionError</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/purerefactoring?rev=1788945317&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:15:17+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.L06 - Unpure wird pure - LU07.L06 - Unpure wird pure (neu)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/purerefactoring?rev=1788945317&amp;do=diff</link>
        <description>LU07.L06 - Unpure wird pure

Funktionaler Kern


def mit_einlagerung(bestand, artikel, menge):
    &quot;&quot;&quot;Neuer Bestand mit zusätzlicher Menge. Mutiert nichts.&quot;&quot;&quot;
    return {**bestand, artikel: bestand.get(artikel, 0) + menge}


def mit_entnahme(bestand, artikel, menge):
    &quot;&quot;&quot;(neuer Bestand, erfolgreich?) - bei zu wenig Bestand bleibt alles gleich.&quot;&quot;&quot;
    if bestand.get(artikel, 0) &lt; menge:
        return bestand, False
    return {**bestand, artikel: bestand[artikel] - menge}, True</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/pipeline?rev=1788945281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:14:41+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.L05 - Schleife zur Pipeline - LU07.L05 - Schleife zur Pipeline (neu)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/loesungen/pipeline?rev=1788945281&amp;do=diff</link>
        <description>LU07.L05 - Schleife zur Pipeline


# 1 umformen
namen = [e[&quot;name&quot;].capitalize() for e in eintraege]
# [&#039;Meier&#039;, &#039;Keller&#039;, &#039;Suter&#039;, &#039;Wyss&#039;]

# 2 filtern und umformen
gute = [e[&quot;name&quot;] for e in eintraege if e[&quot;aktiv&quot;] and e[&quot;punkte&quot;] &gt;= 50]
# [&#039;suter&#039;, &#039;wyss&#039;]

# 3 zusammenfassen
total = sum(e[&quot;punkte&quot;] for e in eintraege if e[&quot;aktiv&quot;])
# 185

# 4 dict aufbauen
punkte_nach_name = {e[&quot;name&quot;]: e[&quot;punkte&quot;] for e in eintraege}
# {&#039;meier&#039;: 42, &#039;keller&#039;: 17, &#039;suter&#039;: 88, &#039;wyss&#039;: 55}</description>
    </item>
    <item rdf:about="https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/pipeline?rev=1788945266&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T09:14:26+00:00</dc:date>
        <dc:creator>admin (admin@undisclosed.example.com)</dc:creator>
        <title>LU07.A05 - Schleife zur Pipeline - LU07.A05 - Schleife zur Pipeline (neu)</title>
        <link>https://wiki.bzz.ch/modul/m323/learningunits/lu07/aufgaben/pipeline?rev=1788945266&amp;do=diff</link>
        <description>LU07.A05 - Schleife zur Pipeline

Bauen Sie fünf Schleifen deklarativ um - oder begründen Sie, warum die Schleife bleiben soll. Eine der fünf ist eine Falle.

Ausgangslage


eintraege = [
    {&quot;name&quot;: &quot;meier&quot;,  &quot;punkte&quot;: 42, &quot;aktiv&quot;: True},
    {&quot;name&quot;: &quot;keller&quot;, &quot;punkte&quot;: 17, &quot;aktiv&quot;: False},
    {&quot;name&quot;: &quot;suter&quot;,  &quot;punkte&quot;: 88, &quot;aktiv&quot;: True},
    {&quot;name&quot;: &quot;wyss&quot;,   &quot;punkte&quot;: 55, &quot;aktiv&quot;: True},
]</description>
    </item>
</rdf:RDF>
