Seite 1 von 1

Vereinfachter Währungsrechner

Verfasst: Dienstag 3. Juli 2018, 14:25
von Malzbier123
Hallo,

ich habe die Aufgabe einen vereinfachten Währungsrechner zu erstellen. Bei diesem werden 2 Währungen genutzt (Dollar & Euro)
v1 = Dollar; v2 = Euro

Rechnet man nun v1 + v2, wird beides in Dollar gerechnet. Rechnet man v2 + v1 wird beides in Euro gerechnet.

Ich habe bisher folgendes, was so leider nicht ganz korrekt ist:

Code: Alles auswählen

class CCy(x,y)
    
	v1 = CCy(23,43, "EUR")
	v2 = CCy(19.97, "USD")
	
	DollarWert = 0.8546
	EuroWert = 1.1553
	
	if y == "EUR":
		kurs = DollarWert AND EuroWert = 1
		
		else:
		kurs = EuroWert AND DollarWert = 1
	
   
    berechnen = ammount * Kurs
	
	summe = v1 * kurs + v1 * kurs
	
    print summe
Meine Überlegung war zu überprüfen, ob es sich dabei um Euro oder Dollar handelt und dementsprechend den Kurs berechnen.
Kann mir einen Tipp geben, wo mein Fehler liegt? Bin absoluter Anfänger

Danke!

Re: Vereinfachter Währungsrechner

Verfasst: Dienstag 3. Juli 2018, 14:47
von __deets__
Das ist doch kein Python. Sondern irgendwas, das du dir selbst ausgedacht hast. Das wird nicht funktionieren.

Du musst zwei Klassen Euro und Dollar erstellen, und die muessen eine Methode oder property haben, die ihren Wert in den Wert des jeweilig anderen Typs uebersetzt. Und dann musst du die __add__-Methode ueberladen, um damit die Addition selbst zu definieren. Fang erstmal klein an, und bau die beiden Klassen, die jeweils ihren Wert in dollar und euro umrechnen koennen. Dann sehen wir weiter.

Re: Vereinfachter Währungsrechner

Verfasst: Mittwoch 4. Juli 2018, 07:44
von Sirius3
@__deets__: zwei Klassen sind etwas übertrieben. Eine Klasse, die Wert und Währung als Attribute hat, reicht doch völlig.

@Malzbier123: schau Dir nochmal an, wie man Asudrücke in Python schreibt und wie man Klassen definiert. Allgemein solltest Du keine kryptischen Abkürzungen (für was soll CCy stehen) oder gar falsche Assoziationen wecken: `y` steht normalerweise für eine beliebige Kommazahl und nicht für eine Währung. Die Umrechnungskurse steckst Du am besten in ein Wörterbuch, dann sparst Du Dir große if-Kaskaden.

Re: Vereinfachter Währungsrechner

Verfasst: Donnerstag 5. Juli 2018, 09:27
von __blackjack__
Spasseshalber mal als ein Haufen Funktionen in eher traditionellem Scheme-Stil in Hy implementiert:

Code: Alles auswählen

#!/usr/bin/env hy

(setv *exchange-rates*
      (dict [[(, "EUR" "USD") 0.8546] [(, "USD" "EUR") 1.1553]]))

(defn get-exchange-rate [from to]
    (if (= from to)
        1
        (try (get *exchange-rates* (, from to))
         (except [KeyError]
                 (raise (ValueError
                         (.format "no exchange rate for {} to {}" from to)))))))

(defn make-currency [value unit] [value unit])

(defn currency-value [c] (first c))

(defn currency-unit [c] (second c))

(defn currency->str [c]
    (.format "{:.2f} {}" (currency-value c) (currency-unit c)))

(defn currency-convert [c to-unit]
    (make-currency
        (* (currency-value c) (get-exchange-rate (currency-unit c) to-unit))
        to-unit))

(defn currency-add [a b]
    (setv to-unit (currency-unit a))
    (make-currency
        (+ (currency-value a) (currency-value (currency-convert b to-unit)))
        to-unit))
          
(defmain [&rest args]
  (setv value-a (make-currency 23.43 "EUR")
        value-b (make-currency 19.97 "USD"))
  (print (currency->str (currency-add value-a value-b)))
  (print (currency->str (currency-add value-b value-a))))