In Python gibt es drei verschiedene Arten von eingebauten Zahlen: ints, floats und complex. In dieser Übung hast du es jedoch nur mit ints und floats zu tun.
ints sind ganze Zahlen, z. B. 1234, -10, 20201278.
Ganzzahlen haben in Python beliebige Genauigkeit. Die Anzahl der Ziffern ist nur durch den verfügbaren Arbeitsspeicher des Hostsystems begrenzt.
floats sind Zahlen mit einem Dezimalpunkt, z. B. 0.0, 3.14, -9.01.
Gleitkommazahlen werden in Python normalerweise mit einem double in C implementiert (15 Dezimalstellen Genauigkeit), ihre Darstellung hängt aber vom Hostsystem und anderen Implementierungsdetails ab. Das kann beim Arbeiten mit Gleitkommazahlen für Überraschungen sorgen, ist aber für die meisten Situationen „gut genug“.
Mehr Details und Diskussionen findest du in den folgenden Ressourcen:
int()float()Python unterstützt Arithmetik zwischen ints und floats vollständig. Bei den binären Rechenoperatoren (+, -, *, /, // und %) wandelt es schmalere Zahlen so um, dass sie zu ihren breiteren Gegenstücken passen.
Python betrachtet ints als schmaler als floats. Wenn du also eine Gleitkommazahl in einem Ausdruck verwendest, ist das Ergebnis garantiert auch eine Gleitkommazahl. Bei der Division ist das Ergebnis jedoch immer eine Gleitkommazahl, selbst wenn nur Ganzzahlen verwendet werden.
# The int is widened to a float here, and a float type is returned.
>>> 3 + 4.0
7.0
>>> 3 * 4.0
12.0
>>> 3 - 2.0
1.0
# Division always returns a float.
>>> 6 / 2
3.0
>>> 7 / 4
1.75
# Calculating remainders.
>>> 7 % 4
3
>>> 2 % 4
2
>>> 12.75 % 3
0.75
Wenn du ein ganzzahliges Ergebnis brauchst, kannst du mit // das Ergebnis abschneiden.
>>> 6 // 2
3
>>> 7 // 4
1
Um eine Gleitkommazahl in eine Ganzzahl umzuwandeln, kannst du int() verwenden. Um eine Ganzzahl in eine Gleitkommazahl umzuwandeln, kannst du float() verwenden.
>>> int(6 / 2)
3
>>> float(1 + 2)
3.0
Dein Freund Chandler hat vor, exotische Länder auf der ganzen Welt zu bereisen. Leider ist Chandler nicht gut in Mathe. Er hat ziemliche Angst, auf seiner Reise von Wechselstuben abgezockt zu werden, und er möchte, dass du ihm einen Währungsrechner schreibst. Hier sind seine Vorgaben für die App:
Erstelle die Funktion exchange_money() mit 2 Parametern:
budget: Der Geldbetrag, den du umtauschen möchtest.exchange_rate: Der Betrag in der einheimischen Währung, der einer Einheit der fremden Währung entspricht.Diese Funktion soll den Wert der umgetauschten Währung zurückgeben.
Hinweis: Wenn deine Währung USD ist und du USD zu einem Wechselkurs von 1.20 in EUR umtauschen möchtest, dann gilt: 1.20 USD == 1 EUR.
>>> exchange_money(127.5, 1.2)
106.25
Erstelle die Funktion get_change() mit 2 Parametern:
budget: Der Geldbetrag vor dem Umtausch.exchanging_value: Der Geldbetrag, der für den Umtausch vom Budget abgezogen wird.Diese Funktion soll den Geldbetrag zurückgeben, der vom Budget übrig bleibt.
>>> get_change(127.5, 120)
7.5
Erstelle die Funktion get_value_of_bills() mit 2 Parametern:
denomination: Der Wert eines einzelnen Geldscheins.number_of_bills: Die Gesamtzahl der Geldscheine.Diese Wechselstube handelt nur mit Bargeld in bestimmten Stückelungen. Der Gesamtbetrag, den du erhältst, muss durch den Wert eines einzelnen „Scheins“ bzw. einer Einheit teilbar sein, wobei ein Bruchteil oder Rest übrig bleiben kann. Deine Funktion soll nur den Gesamtwert der Geldscheine (ohne Bruchteile) zurückgeben, die die Wechselstube auszahlt. Leider behält die Wechselstube den Rest bzw. das Wechselgeld als zusätzlichen Bonus.
>>> get_value_of_bills(5, 128)
640
Erstelle die Funktion get_number_of_bills() mit amount und denomination.
Diese Funktion soll die Anzahl der Geldscheine zurückgeben, die du innerhalb des gegebenen Betrags erhalten kannst. Anders gesagt: Wie viele ganze Geldscheine passen in den Ausgangsbetrag? Denk daran: Du kannst nur ganze Geldscheine erhalten, keine Bruchteile von Scheinen, also teile entsprechend. Genau genommen rundest du auf den nächsten ganzen Schein bzw. die nächste Stückelung ab.
>>> get_number_of_bills(127.5, 5)
25
Erstelle die Funktion get_leftover_of_bills() mit amount und denomination.
Diese Funktion soll den Restbetrag zurückgeben, der bei der gegebenen Stückelung der Scheine nicht von deinem Ausgangs_betrag_ ausgezahlt werden kann. Es ist sehr wichtig, genau zu wissen, wie viel die Wechselstube behalten darf.
>>> get_leftover_of_bills(127.5, 20)
7.5
Erstelle die Funktion exchangeable_value() mit budget, exchange_rate, spread und denomination.
Der Parameter spread ist der Prozentsatz, der als Umtauschgebühr genommen wird, und wird als Ganzzahl geschrieben.
Er muss durch 100 geteilt werden, um ihn in einen Dezimalwert umzuwandeln.
Wenn 1.00 EUR == 1.20 USD gilt und der Spread 10 ist, dann ist der tatsächliche Wechselkurs: 1.00 EUR == 1.32 USD, denn 10 % von 1.20 sind 0.12, und diese zusätzliche Gebühr wird zum Wechselkurs addiert.
Diese Funktion soll den maximalen Wert der neuen Währung zurückgeben, nachdem der Wechselkurs plus der Spread berechnet wurde. Denk daran, dass die Stückelung der Währung eine ganze Zahl ist und nicht weiter unterteilt werden kann.
Hinweis: Der zurückgegebene Wert soll vom Typ int sein.
>>> exchangeable_value(127.25, 1.20, 10, 20)
80
>>> exchangeable_value(127.25, 1.20, 10, 5)
95
Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.