Berechne die Defektquote für Klonmenschen

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du die Defektquote der klonierten Menschen berechnest, die von den Klonfabriken im Galaktischen Imperium produziert werden.

👀 Vorschau

defective_rate=0.04

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du die Projektumgebung einrichtest
  • Wie du die Projektanforderungen verstehst
  • Wie du die Funktion calculate_defective_rate implementierst
  • Wie du die Funktion calculate_defective_rate testest
  • Wie du die Lösung verfeinern und optimieren kannst

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Eine Python-Projektumgebung einzurichten
  • Projektanforderungen zu verstehen und zu interpretieren
  • Eine Funktion zur Lösung eines bestimmten Problems zu implementieren
  • Die Korrektheit deiner Implementierung zu testen und zu validieren
  • Wege zu erkunden, um deine Lösung zu optimieren und zu verfeinern

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/sets("Sets") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/variables_data_types -.-> lab-302695{{"Berechne die Defektquote für Klonmenschen"}} python/numeric_types -.-> lab-302695{{"Berechne die Defektquote für Klonmenschen"}} python/lists -.-> lab-302695{{"Berechne die Defektquote für Klonmenschen"}} python/sets -.-> lab-302695{{"Berechne die Defektquote für Klonmenschen"}} python/function_definition -.-> lab-302695{{"Berechne die Defektquote für Klonmenschen"}} python/data_collections -.-> lab-302695{{"Berechne die Defektquote für Klonmenschen"}} end

Verstehe die Projektanforderungen

In diesem Schritt wirst du die Anforderungen des Projekts verstehen.

Das Ziel dieses Projekts ist es, die Defektquote der klonierten Menschen zu berechnen, die von den Klonfabriken im Galaktischen Imperium produziert werden.

Die wichtigsten Anforderungen sind:

  1. Vollständige die Funktion calculate_defective_rate in calculate_defective_rate.py.
  2. Die Funktion erhält eine 2D-Matrix, die die Produktion von Klon-IDs repräsentiert, und gibt die Defektquote der von den Fabriken produzierten klonierten Menschen zurück.
  3. Die Funktion sollte den Fall behandeln, dass das Eingangsarray leer ist.
  4. Die Funktion sollte eine Gleitkommazahl zurückgeben.

Implementiere die Funktion calculate_defective_rate

In diesem Schritt wirst du die Funktion calculate_defective_rate in der Datei calculate_defective_rate.py implementieren.

  1. Öffne die Datei calculate_defective_rate.py in deinem bevorzugten Code-Editor.
  2. Locate die Funktion calculate_defective_rate und ersetze den bestehenden Code mit der folgenden Implementierung:
def calculate_defective_rate(matrix: List[List[str]]) -> float:
    """
    Berechnet die Defektquote der Klonproduktion basierend auf der Klon-ID-Matrix.

    Args:
        matrix (List[List[str]]): Eine 2D-Matrix, die die Klon-ID-Produktion repräsentiert.

    Returns:
        float: Die Defektquote, die das Verhältnis von doppelten Klonen zu der Gesamtzahl der produzierten Klone ist.
    """
    if not matrix:
        return 0.0

    total_clones = 0
    duplicates = 0

    clone_set = set()

    for row in matrix:
        for clone in row:
            total_clones += 1
            if clone in clone_set:
                duplicates += 1
            else:
                clone_set.add(clone)

    return round(duplicates / total_clones, 2)

Diese Implementierung überprüft zunächst, ob die Eingangsmatrix leer ist, und wenn ja, gibt eine Defektquote von 0,0 zurück.

Dann iteriert sie durch die Matrix und führt die Gesamtzahl der Klone und die Anzahl der doppelten Klone aus. Sie verwendet einen Satz clone_set, um die eindeutigen Klon-IDs zu speichern.

Schließlich berechnet die Funktion die Defektquote, indem sie die Anzahl der doppelten Klone durch die Gesamtzahl der Klone teilt und das Ergebnis auf zwei Dezimalstellen rundet.

Teste die Funktion calculate_defective_rate

In diesem Schritt wirst du die Funktion calculate_defective_rate mit dem bereitgestellten Beispiel testen.

  1. Öffne ein neues Terminalfenster und navigiere zum Verzeichnis /home/labex/project.
  2. Führe den folgenden Befehl aus, um das Skript calculate_defective_rate.py auszuführen:
python3 calculate_defective_rate.py
  1. Wenn Sie dazu aufgefordert werden, geben Sie die in der Herausforderung bereitgestellte 2D-Matrix-Beispiel ein:
python3 calculate_defective_rate.py
>>> Geben Sie eine 2D-Matrix ein:[['1000ffd8', '1000ffc8', '1000ffdb', '1000ffbc', '1000ffba'],
                       ['1000ffd2', '1000ffbd', '1000ffd7', '1000ffcb', '1000ffd6'],
                       ['1000ffc9', '1000ffab', '1000ffb8', '1000ffd5', '1000ffad'],
                       ['1000ffc7', '1000ffcf', '1000ffb7', '1000ffae', '1000ffc1'],
                       ['1000ffb9', '1000ffce', '1000ffc3', '1000ffd1', '1000ffc8'],
                       ['1000ffd1', '1000ffb2', '1000ffcd', '1000ffda', '1000ffcc'],
                       ['1000ffc2', '1000ffc4', '1000ffca', '1000ffb3', '1000ffaa'],
                       ['1000ffbf', '1000ffbe', '1000ffc5', '1000ffc0', '1000ffd0'],
                       ['1000ffb4', '1000ffc6', '1000ffd9', '1000ffb1', '1000ffb5'],
                       ['1000ffb6', '1000ffb0', '1000ffd3', '1000ffd4', '1000ffbb']]
  1. Die Ausgabe sollte die berechnete Defektquote anzeigen:
defective_rate=0.04

Dies stimmt mit dem erwarteten Ergebnis aus der Herausforderung überein, was bedeutet, dass die Funktion calculate_defective_rate richtig funktioniert.

Verfeinere und optimiere die Lösung

In diesem letzten Schritt kannst du die Funktion calculate_defective_rate optional weiter verfeinern und optimieren. Hier sind einige Ideen:

  1. Effizienz verbessern: Die aktuelle Implementierung hat eine Zeitkomplexität von O(n^2), wobei n die Gesamtzahl der Klone ist. Du kannst Möglichkeiten zur Optimierung des Algorithmus erkunden, z. B. die Verwendung eines effizienteren Datenstruktur, um die eindeutigen Klon-IDs zu verfolgen.
  2. Fehlerbehandlung hinzufügen: Verbessere die Funktion, um ungültige Eingaben zu behandeln, wie Matrizen mit nicht-hexadezimalen Klon-IDs oder Matrizen mit unterschiedlicher Zeilenlänge.
  3. Lesbarkeit verbessern: Du kannst die Lesbarkeit des Codes verbessern, indem du mehr Kommentare hinzufügst, beschreibendere Variablennamen verwendest und die besten Praktiken für den Python-Codestil folgst.
  4. Unit-Tests implementieren: Schreibe Unit-Tests, um die Korrektheit der Funktion calculate_defective_rate sicherzustellen und um es in Zukunft einfacher zu warten.

Fühle dich frei, diese Ideen zu erkunden und beliebige Verbesserungen vorzunehmen, die du für die Lösung notwendig hältst.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.