Tracks
/
Python
Python
/
Übungen
/
Wechselgeld
Wechselgeld

Wechselgeld

Mittel

Einführung

Im mystischen Dorf Coinholt stehst du hinter dem Tresen deiner Bäckerei und richtest eine frische Ladung Gebäck an. Die Tür knarrt, und Denara kommt herein, eine geschickte Händlerin mit einem feinen Auge für gute Waren. Nach einer schnellen Mahlzeit schiebt sie eine schimmernde Münze über den Tresen, die 100 Einheiten wert ist.

Du lächelst, nimmst die Münze und wirfst einen Blick auf die Gesamtkosten der Mahlzeit: 88 Einheiten. Das heißt, du musst 12 Einheiten Wechselgeld herausgeben.

Denara hält dir ihre Hand erwartungsvoll hin. „Gib mir einfach die wenigsten Münzen", sagt sie lächelnd. „Mein Beutel ist schon voll, und ich will sie unterwegs nicht verlieren."

Du weißt, dass du ein paar Möglichkeiten hast. „Als Wechselgeld haben wir Lumis (10 Einheiten wert), Viras (5 Einheiten wert) und Zenth (2 Einheiten wert)."

Du rechnest die Möglichkeiten schnell im Kopf durch:

  • ein Lumis (1 × 10 Einheiten) + ein Zenth (1 × 2 Einheiten) = insgesamt 2 Münzen
  • zwei Viras (2 × 5 Einheiten) + ein Zenth (1 × 2 Einheiten) = insgesamt 3 Münzen
  • sechs Zenth (6 × 2 Einheiten) = insgesamt 6 Münzen

„Am besten sind zwei Münzen: ein Lumis und ein Zenth", sagst du und reichst ihr das Wechselgeld.

Denara lächelt, sichtlich beeindruckt. „Wie immer liegst du richtig."

Anleitung

Anleitung

Bestimme die kleinste Anzahl an Münzen, die du einem Kunden zurückgibst, sodass die Summe ihrer Werte dem korrekten Wechselgeld entspricht.

Beispiele

  • Ein Betrag von 15 mit den verfügbaren Münzwerten [1, 5, 10, 25, 100] sollte eine Münze mit dem Wert 5 und eine Münze mit dem Wert 10 zurückgeben, oder [5, 10].
  • Ein Betrag von 40 mit den verfügbaren Münzwerten [1, 5, 10, 25, 100] sollte eine Münze mit dem Wert 5, eine Münze mit dem Wert 10 und eine Münze mit dem Wert 25 zurückgeben, oder [5, 10, 25].

Ausnahmemeldungen

Manchmal ist es nötig, eine Ausnahme auszulösen. Dabei solltest du immer eine aussagekräftige Fehlermeldung angeben, die zeigt, woher der Fehler kommt. Das macht deinen Code lesbarer und hilft beim Debuggen erheblich. 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 mit der raise-Anweisung einen ValueError „wirfst“, wenn sich mit den gegebenen Münzen kein Wechselgeld bilden lässt. Die Tests bestehen nur, wenn du die exception sowohl raise-st als auch mit einer Meldung versiehst.

Um einen ValueError mit einer Meldung auszulösen, schreibe die Meldung als Argument an den exception-Typ:

# example when change cannot be made with the coins passed in
raise ValueError("can't make target with given coins")
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Python Exercism

Bereit, mit Wechselgeld zu starten?

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