Python :: Aufgabe #78
6 Lösungen

Das Briefmarkenproblem
Anfänger - Python
von ElPapito
- 07.05.2015 um 21:02 Uhr
Schreibe ein Programm, welches den Nutzer solange auffordert einen Betrag in Cent einzugeben, bis dieser größer oder gleich 20 und durch 5 teilbar ist. Dem Benutzer soll bei falscher Eingabe eine passende Fehlermeldung ausgegeben werden.
Dieser Betrag soll nun mit so wenig Briefmarken wie möglich ausgezahlt werden. Hierzu stehen allerdings nur 10 Cent und 25 Cent Briefmarken zur Verfügung.
Beispiele:
35 Cent = 1 * 25 Cent + 1 * 10 Cent
55 Cent = 1 * 25 Cent + 3 * 10 Cent
80 Cent = 2 * 25 Cent + 3 * 10 Cent
95 Cent = 3 * 25 Cent + 2 * 10 Cent
Dieser Betrag soll nun mit so wenig Briefmarken wie möglich ausgezahlt werden. Hierzu stehen allerdings nur 10 Cent und 25 Cent Briefmarken zur Verfügung.
Beispiele:
35 Cent = 1 * 25 Cent + 1 * 10 Cent
55 Cent = 1 * 25 Cent + 3 * 10 Cent
80 Cent = 2 * 25 Cent + 3 * 10 Cent
95 Cent = 3 * 25 Cent + 2 * 10 Cent
Lösungen:

"""Schreibe ein Programm, welches den Nutzer solange auffordert einen Betrag in Cent einzugeben, bis dieser größer oder gleich 20 und durch 5 teilbar ist. Dem Benutzer soll bei falscher Eingabe eine passende Fehlermeldung ausgegeben werden. Dieser Betrag soll nun mit so wenig Briefmarken wie möglich ausgezahlt werden. Hierzu stehen allerdings nur 10 Cent und 25 Cent Briefmarken zur Verfügung.""" run=True while run: cent=int(input("Geben Sie einen Betrag in Cent ein:")) if cent < 20: print("Mindestens 20 Cent!") elif cent%5 > 0: print("Betrag muss durch 5 teilbar sein!") else: [br25,rest]=divmod(cent,25) if rest > 0: [br10,rest]=divmod(rest,10) if rest > 0: br25 -= 1 br10 += 3 run=False else: run=False else: br10=0 run=False print("Briefmarken:\n25 Cent:", br25, "\n10 Cent:", br10)

def begruessung(): print('Guten Tag sie sind im Briefmarkenladen') betrag = int(input('Geben sie einen Cent-Betrag ein der >= 20 und durch 5 teilbar ist:',)) if betrag < 20 or betrag % 5 != 0: print('Das war kein gültiger Betrag, versuchen sie es erneut') print() begruessung() else: anzahl25 = betrag // 25 rest = betrag % 25 if rest //10 == 0 and rest != 0: anzahl25 = anzahl25 - 1 rest = rest + 25 anzahl10 = rest // 10 else: anzahl10 = rest // 10 print('Anzahl 25 Cent Münzen:',anzahl25) print('Anzahl 10 Cent Münzen:',anzahl10)

def ausgabe(betr): i_25 = 0 i_10 = 0 betr_alt = betr while betr != 0: if betr < 50: if betr % 10 == 5: betr -= 25 i_25 += 1 continue else: betr -= 10 i_10 += 1 continue else: betr -= 25 i_25 += 1 continue print(betr_alt,"Cent =",i_25,"* 25 Cent +",i_10," * 10 Cent") while True: eingabe = input("Betrag in Cent eingeben (Groesser gleich 20 und durch 5 teilbar): ") try: betrag = int(eingabe) if betrag >= 20 and betrag % 5 == 0: ausgabe(betrag) break else: print("Flasche Eingabe, nochmal!\n") continue except: print("Flasche Eingabe!\n") continue

eingabe = input("""Welchen Betrag brauchst du in Briefmarken? Der Betrag muss größer als 19 Cent sein und durch 5 teilbar: """) while True: if eingabe < 20 or eingabe%5 != 0: eingabe = input("Der Betrag ist nicht korrekt, bitte noch einmal: ") else: break max_amount_briefmarken = int(eingabe/10) zaehler = max_amount_briefmarken for i in range(max_amount_briefmarken+1): for j in range(max_amount_briefmarken+1): if i*25 + j*10 == eingabe and i + j <= zaehler: _25er = i _10er = j zaehler = i + j else: pass print "Du brauchst %s Briefmarken - von der 25 Cent %s Stück und von den 10 Cent %s Stück" % (zaehler, _25er, _10er)

def eingabe(): global betrag t = 1 while t == 1: betrag = int(input("Tippen Sie einen Betrag ein, der größer/gleich 20 und durch 5 teilbar ist: ")) if betrag >= 20 and betrag % 5 == 0: t = 0 else: print("Der Betrag passt nicht") def auszahlen(betrag): global anzahl25 global anzahl10 anzahl25 = 0 anzahl10 = 0 mom_wert = 0 while mom_wert != betrag: if mom_wert + 10 <= betrag: if mom_wert + 35 > betrag: mom_wert += 10 anzahl10 += 1 else: mom_wert += 25 anzahl25 += 1 else: break def ausgabe(betrag, anzahl25, anzahl10): print(str(betrag) + " Cent= " + str(anzahl25) + " * 25 Cent + " + str(anzahl10) + " * 10 Cent") eingabe() auszahlen(betrag) ausgabe(betrag, anzahl25, anzahl10)

sum = int(input("""Bitte geben Sie einen Betrag in Cent ein. Der Betrag muss größer oder gleich 20 Cent und durch 5 teilbar sein.\n>""")) fehler = 1 while fehler == 1: if sum >= 20 and sum % 5 == 0: fehler = 0 elif not sum >= 20: print("Die Zahl ist nicht größer oder gleich 20 Cent.") sum = int(input()) elif not sum % 5 == 0: print("Der Betrag ist nicht durch 5 teilbar.") sum = int(input()) stamp_a = 25 stamp_b = 10 if (sum % 25) == 5 or (sum % 25) == 15: a = (sum//25)-1 b = int((sum - a*25)/10) else: a = sum // 25 b = int((sum - a * 25)/10) print(f"{sum} Cent = {a} * {stamp_a} Cent-Briefmarken und {b} * {stamp_b} Cent-Briefmarken.")