Seite 2 von 2

Verfasst: Freitag 12. März 2010, 16:33
von masterjule
so, da mal die aktuelle version

Code: Alles auswählen

# Der Geldzähler

values = { 1 : 0.01,
           2 : 0.02,
           3 : 0.05,
           4 : 0.1,
           5 : 0.2,
           6 : 0.5,
           7 : 1,
           8 : 2,
           9 : 5,
           10 : 10,
           11 : 20,
           12 : 50,
           13 : 100,
           14 : 200,
           15 : 500} 
result = 0
bug = False

print('\n', '               ', 'Der Geldzähler')

while True:
    
    print("""
            Bitte wählen Sie eine Option.
            
            Münzen:
            1 ->   1 Cent
            2 ->   2 Cent
            3 ->   5 Cent
            4 ->  10 Cent
            5 ->  20 Cent
            6 ->  50 Cent
            7 ->   1 Euro
            8 ->   2 Euro
            
            Scheine:
            9 ->   5 Euro
           10 ->  10 Euro
           11 ->  20 Euro
           12 ->  50 Euro
           13 -> 100 Euro
           14 -> 200 EUro
           15 -> 500 Euro
            
            0 -> Ergebnis berechnen
          """)
    option = int(input('Bitte Optionsnummer Eingeben: '))
    
    if option == 0:
        break

    value = values[option]
    if value > 2:
        mode_description = 'Scheine'
    else:
        mode_description = 'Münzen'
    
    print('Bitte zählen Sie jetzt ihre ', mode_description, ' und geben Sie dann die Anzahl ein.')
    number = int(input('Eingabe: '))
    
    try:
        result += value * number
    except KeyError:
        bug = True
        break


if bug:
    print('Fehler bei der Optionsauswahl.\n\
Programm bitte Neustarten!')
else:
    print('Sie haben {0}€'.format(result))

Verfasst: Freitag 12. März 2010, 16:40
von Hyperion
- So lange Quellcodes würde ich in ein paste-bin wie paste.pocoo.org auslagern

- Jetzt das ganze auf jeden Fall von Modulebene wegbringen. Sprich:

Code: Alles auswählen

def main():
    # hier den Einstieg in die Funktionalität


if __name__ == "__main__":
    main()
einbauen

- Die input-Eingaben in eine Funktion auslagern

- Unnötige Leerzeilen löschen

Verfasst: Freitag 12. März 2010, 16:45
von masterjule
okay, wäre nett. wenn du mir weiter helfen könntest, bin halt noch anfänger.

- was ist paste-bin?

- Was genau hast es mit dieser Main Funktion auf sich?

- Was für Vorteile hat man, wenn man die input-Eingaben in eine Funktion auslagert?

Verfasst: Freitag 12. März 2010, 17:09
von Hyperion
masterjule hat geschrieben:okay, wäre nett. wenn du mir weiter helfen könntest, bin halt noch anfänger.

- was ist paste-bin?
Guck Dir die Seite doch mal an ;-)
- Was genau hast es mit dieser Main Funktion auf sich?
Die kannst Du auch anders nennen. Guck Dir mal im Tutorial das Kapitel über Module an. Prinzipiell geht es darum, dass man den Code besser kapselt und strukturiert.
- Was für Vorteile hat man, wenn man die input-Eingaben in eine Funktion auslagert?
s.o. Du kannst Dir sparen mehrfach das selbe zu tippen und die Eingabe ggf. sokomfortabel gestalten, dass Fehler usw. abgefangen werden. Also schau Dir mal das Kapitel Fuznktionen an im Tutorial :-)

Verfasst: Freitag 12. März 2010, 18:27
von EyDu
Ein wenig will ich auch mal erzählen:

- Die folgenden Ausdrücke sind identisch

Code: Alles auswählen

"          "
" "*10
- Die Ausgabe deiner Münzen solltest du nicht alle per Hand hinschreiben, sondern automatisch aus dem oberen Dictionary generieren lassen. Momentan hast du zwei Stellen, welche bei einer neuen Münze geändert werden. Mit der Anpassung ist es genau eine.

- Gib mal in Zeile 49 oder 61 eine Nicht-Zahl ein ;-)

- Zeilen 55 bis 58 kannst du auch wieder mit einem Dictionary, einer Liste oder einem Tupel zusammenfassen.

- "bug" finde ich auch keinen sehr gelungenen Namen für einen Indikator eines Benutzerfehlers

- Was meinst du, wie oft in Zeile 64 ein KeyError geworfen wird? Du willst wohl eher Zeile 54 testen.

Bis dann,
Sebastian

Verfasst: Samstag 13. März 2010, 11:31
von sma
Ich würde dem Anwender ja die Eingabe einfacher machen:

Code: Alles auswählen

print("Bitte Beträge als 'N x 50 cent' oder 'N x 10 euro' eingeben.")
money = 0
while True:
    amount = input("Betrag: ")
    if not amount:
        break
    try:
        n, av = amount.split("x")
        n = int(n)
        a, v = av.split()
        a = int(a)
        v = v.lower()[0]
        if v == "e":
            a *= 100
        money += n * a
    except:
        continue
print("Sie haben %.2f€." % (money / 100))