Python :: Aufgabe #78

6 Lösungen Lösungen öffentlich

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

Lösungen:

vote_ok
von kronstone (200 Punkte) - 11.05.2015 um 20:26 Uhr
Quellcode ausblenden Python-Code
"""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)
1 Kommentar
vote_ok
von Exci (250 Punkte) - 19.05.2015 um 00:32 Uhr
Quellcode ausblenden Python-Code
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)
vote_ok
von jigga (4260 Punkte) - 08.06.2015 um 08:55 Uhr
Quellcode ausblenden Python-Code
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
vote_ok
von BlueBite (100 Punkte) - 02.03.2016 um 20:31 Uhr
Quellcode ausblenden Python-Code
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)
vote_ok
von Y0uLyric (500 Punkte) - 08.12.2016 um 12:26 Uhr
Quellcode ausblenden Python-Code
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)
vote_ok
von scar77 (210 Punkte) - 20.08.2018 um 22:03 Uhr
Quellcode ausblenden Python-Code
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.")