Tracks
/
Python
Python
/
Übungen
/
Zwei Eimer
Zwei Eimer

Zwei Eimer

Mittel

Anleitung

Gegeben sind zwei unterschiedlich große Eimer und die Vorgabe, welcher Eimer zuerst gefüllt werden soll. Bestimme, wie viele Aktionen nötig sind, um eine exakte Anzahl Liter abzumessen, indem du geschickt Flüssigkeit zwischen den Eimern umfüllst.

Es gibt einige Regeln, die deine Lösung befolgen muss:

  • du kannst jeweils nur eine Aktion ausführen.
  • Es gibt nur 3 mögliche Aktionen:
    1. Einen Eimer in den anderen Eimer umfüllen, bis entweder: a) der erste Eimer leer ist b) der zweite Eimer voll ist
    2. Einen Eimer leeren und den anderen unverändert lassen.
    3. Einen Eimer füllen und den anderen unverändert lassen.
  • Nach einer Aktion darfst du nicht in einen Zustand geraten, in dem der Starteimer leer und der andere Eimer voll ist.

dein Programm bekommt als Eingabe:

  • die Größe von Eimer eins
  • die Größe von Eimer zwei
  • die gewünschte Literzahl, die erreicht werden soll
  • welcher Eimer zuerst gefüllt werden soll, entweder Eimer eins oder Eimer zwei

dein Programm soll Folgendes bestimmen:

  • die Gesamtzahl der Aktionen, die nötig sind, um die gewünschte Literzahl zu erreichen, einschließlich des ersten Füllens des Starteimers
  • welcher Eimer am Ende die gewünschte Literzahl enthalten soll, entweder Eimer eins oder Eimer zwei
  • wie viele Liter im anderen Eimer übrig sind

Hinweis: Jedes Mal, wenn du einen oder beide Eimer veränderst, zählt das als eine (1) Aktion.

Beispiel: Eimer eins fasst bis zu 7 Liter, und Eimer zwei fasst bis zu 11 Liter. Sagen wir, in einem bestimmten Schritt enthält Eimer eins 7 Liter und Eimer zwei 8 Liter (7,8). Wenn du Eimer eins leerst und Eimer zwei unverändert lässt, sodass du 0 Liter bzw. 8 Liter hast (0,8), zählt das als eine Aktion. Wenn du stattdessen von Eimer eins in Eimer zwei umgefüllt hättest, bis Eimer zwei voll war, sodass Eimer eins 4 Liter und Eimer zwei 11 Liter enthalten hätten (4,11), würde das ebenfalls nur als eine Aktion zählen.

Ein weiteres Beispiel: Eimer eins fasst 3 Liter, und Eimer zwei fasst bis zu 5 Liter. du sollst mit Eimer eins beginnen. deine erste Aktion ist also, Eimer eins zu füllen. Für deine zweite Aktion entscheidest du dich, Eimer eins zu leeren. Für deine dritte Aktion darfst du Eimer zwei nicht füllen, weil dies gegen die dritte Regel verstößt: Nach einer Aktion darfst du nicht in einen Zustand geraten, in dem der Starteimer leer und der andere Eimer voll ist.

Geschrieben mit <3 bei Fullstack Academy von Lindsay Levine.

Fehlermeldungen bei Exceptions

Manchmal ist es notwendig, eine Exception auszulösen. Wenn du das tust, solltest du immer eine aussagekräftige Fehlermeldung angeben, um deutlich zu machen, woher der Fehler stammt. Das macht deinen Code lesbarer und hilft enorm beim Debuggen. Wenn du weißt, dass die Fehlerquelle von einem bestimmten Typ ist, kannst du einen der eingebauten Fehlertypen auslösen, solltest aber trotzdem eine aussagekräftige Meldung angeben.

Diese Übung erfordert, dass du die raise-Anweisung verwendest, um eine ValueError zu „werfen“. Die Tests bestehen nur, wenn du die exception sowohl mit raise auslöst als auch eine Meldung dazu angibst.

Um eine ValueError mit einer Meldung auszulösen, schreibst du die Meldung als Argument an den exception-Typ:

raise ValueError("A meaningful error message here.")
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Python Exercism

Bereit, mit Zwei Eimer zu starten?

Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.