habe mir einen kleinen Denkanstoß aud dem Topic http://www.python-forum.de/topic-4511,15.html geholt und folgendes Progamiert (ich weis nicht toll bin eben Anfänger )
Code: Alles auswählen
def menue():
print 'Herzlich Willkommen!'
print 'Was wollen Sie denn kaufen?'
print 'Geben Sie ...'
print '1 ein um einen Einzelfahrschein zu Kaufen (Euro 1,50)'
print '2 ein um eine Streifenkarte zu Kaufen (Euro 6,00)'
print '3 ein um einen Halbpreisfahrschein zu kaufen (Euro 0,80)'
print '4 ein um einen 2Fahrten-Halbpreisfahrschein zu kaufen (Euro 1,50)'
print '5 ein um einen 4Fahrten-Halbpreisfahrschein zu kaufen (Euro 3,00)'
print '6 ein um einen 2Fahrten-Seniorenfahrschein zu kaufen (Euro 2,00)'
print '7 ein um eine Wiener-Einkaufskarte zu kaufen (Euro 4,00)'
print '8 ein um eine 24Std-Karte zu kaufen (Euro 5,00)'
print '9 ein um eine 72Std-Karte zu kaufen (Euro 12,00)'
print '10 ein um eine Wien-Karte zu kaufen (Euro 16,90)'
print '11 ein um eine Wochenkarte zu kaufen (Euro 12,50)'
print '12 ein um eine 8-Tage-Karte zu kaufen (Euro 24,50)'
print '13 ein um eine Monatskarte zu kaufen (Euro 45,00)'
print '14 ein um eine Monatskarte mit Sozialkarte zu kaufen (Euro 15,20)'
#Die Kartenpreise werden definiert
einzelfahrschein = 1.5
streifenkarte = 6
halbpreisfahrschein = 0.8
halbpreisfahrschein2 = 1.5
halbpreisfahrschein4 = 3
seniorenfahrschein2 = 2
einkaufskarte = 4
stundenkarte24 = 5
stundenkarte72 = 12
wienkarte = 16.9
wochenkarte = 12.5
tageskarte8 = 24.5
monatskarte = 45
monatskartesenioren = 15.2
auswahl = False
wechselproblem = True
menue()
print
print '_' * 80
print
#Man waehlt welchen Schein/Karte man haben will
while auswahl == False:
wahl = input('Geben Sie jetzt ihre auswahl an --> ')
if wahl > 14:
print 'Falsche Eingabe wiederhohlen Sie bitte'
else:
auswahl = True
#Man gibt sein Geld ein
while wechselproblem == True:
geld = input('Geben Sie jetzt ihr Geld ein --> ')
if geld > 100:
print 'Betrag zu Hoch bitte geben Sie passend'
else:
wechselproblem = False
#Die Berechnung des Restgeldes
if wahl == 1:
restgeld = geld - einzelfahrschein
ausgabe = 'Einzelfahrschein'
elif wahl == 2:
restgeld = geld - streifenkarte
ausgabe = 'Streifenkarte'
elif wahl == 3:
restgeld = geld - halbpreisfahrschein
ausgabe = 'Halbpreisfahrschein'
elif wahl == 4:
restgeld = geld - halbpreisfahrschein2
ausgabe = '2Fahrten-Halbpreisfahrschein'
elif wahl == 5:
restgeld = geld - halbpreisfahrschein4
ausgabe = '4Fahrten-Halbpreisfahrschein'
elif wahl == 6:
restgeld = geld - seniorenfahrschein2
ausgabe = '2Fahrten-Seniorenfahrscheinn'
elif wahl == 7:
restgeld = geld - einkaufskarte
ausgabe = 'Wiener-Einkaufskarte'
elif wahl == 8:
restgeld = geld - stundenkarte24
ausgabe = '24Std-Karte'
elif wahl == 9:
restgeld = geld - stundenkarte72
ausgabe = '72Std-Karte'
elif wahl == 10:
restgeld = geld - wienkarte
ausgabe = 'Wien-Karte'
elif wahl == 11:
restgeld = geld - wochenkarte
ausgabe = 'Wochenkarte'
elif wahl == 12:
restgeld = geld - tageskarte8
ausgabe = '8-Tage-Karte'
elif wahl == 13:
restgeld = geld - monatskarte
ausgabe = 'Monatskarte'
elif wahl == 14:
restgeld = geld - monatskartesenioren
ausgabe = 'Monatskarte mit Sozialkarte'
else:
print 'Ein Fehler ist aufgetreten'
print
print '_' * 80
print
#Man bekommt seinen Schein/Karte
print 'Hier haben Sie ihre/n', ausgabe
print
print '_' * 80
print
#Das Wechselgesld wird berechnet
#Berechnung der Hunderter
hunderter = round(restgeld / 100 -0.5)
restgeld = restgeld - 100 * hunderter
#Berechnung der Fuenfziger
funfziger = round(restgeld / 50 -0.5)
restgeld = restgeld - 50 * funfziger
#Berechnung der Zwanziger
zwanziger = round(restgeld / 20 -0.5)
restgeld = restgeld - 20 * zwanziger
#Berechnung der Zehner
zehner = round(restgeld / 10 -0.5)
restgeld = restgeld - 10 * zehner
#Berechnung der Fuenfer
funfer = round(restgeld / 5 -0.5)
restgeld = restgeld - 5 * funfer
#Berechnung der Zwei-Euro
zweieuro = round(restgeld / 2 -0.5)
restgeld = restgeld - 2 * zweieuro
#Berechnung der Euro
euro = round(restgeld / 1 -0.5)
restgeld = restgeld - 1 * euro
#Berechnung der 50Cent
funfzigcent = round(restgeld / 0.5 -0.5)
restgeld = restgeld - 0.5 * funfzigcent
#Berechnung der 20Cent
zwanzigcent = round(restgeld / 0.2 -0.5)
restgeld = restgeld - 0.2 * zwanzigcent
#Berechnung der 10Cent
zehncent = round(restgeld / 0.1 -0.5)
restgeld = restgeld - 0.1 * zehncent
#Berechnung der 5Cent
funfcent = round(restgeld / 0.05 -0.5)
restgeld = restgeld - 0.05 * funfcent
#Berechnung der 2Cent
zweicent = round(restgeld / 0.02 -0.5)
restgeld = restgeld - 0.02 * zweicent
#Berechnung der Cent
cent = round(restgeld / 0.01 -0.5)
restgeld = restgeld - 0.01 * cent
#Das wechselgeld wird ausgegeben
if hunderter != 0:
print 'Sie bekommen', int(hunderter), 'Hunderter zurueck'
if funfziger != 0:
print 'Sie bekommen', int(funfziger), 'Fuenfziger zurueck'
if zwanziger != 0:
print 'Sie bekommen', int(zwanziger), 'Zwanziger zurueck'
if zehner != 0:
print 'Sie bekommen', int(zehner), 'Zehner zurueck'
if funfer != 0:
print 'Sie bekommen', int(funfer), 'Fuenfer zurueck'
if zweieuro != 0:
print 'Sie bekommen', int(zweieuro), 'Zweieuro zurueck'
if euro != 0:
print 'Sie bekommen', int(euro), 'Euro zurueck'
if funfzigcent != 0:
print 'Sie bekommen', int(funfzigcent), 'Fuenfzig-Cent zurueck'
if zwanzigcent != 0:
print 'Sie bekommen', int(zwanzigcent), 'Zwanzig-Cent zurueck'
if zehncent != 0:
print 'Sie bekommen', int(zehncent), 'Zehn-Cent zurueck'
if funfcent != 0:
print 'Sie bekommen', int(funfcent), 'Fuenf-Cent zurueck'
if zweicent != 0:
print 'Sie bekommen', int(zweicent), 'Zwei-Cent zurueck'
if cent != 0:
print 'Sie bekommen', int(cent), 'Cent zurueck'
print
print 'Danke fuer ihren einkauf'
Nehmen wir an ich will einen 4Fahren-Fahrschein um €3,00 Kaufen. Ich gebe dem Automaten €50. Also sollte er mir 2 * €20, 1 * €5 und 1 * €2 ausgeben.
Gibt aber -1 * €100, 2 * €50, 2 * €20, 1 * €5, 1 * €2, -1 * €1, 2 * 50Cent, -1 * 20Cent, 2 * 10Cent, -1 * 5Cent, 2 * 2Cent und 1 * 1Cent
Rechnerisch betrachtet wenn man bei zeile 117 anfängt stell ich mir das so vor:
Restgeld = 47€
47/100 ergibt in Python 0 - 0,5 weil er immer abrunden soll ergebit 0,5 durch das Runden letztendlich wieder 0 (also nicht -1)
--> Zeile 118 47 = 47 * 0
und eben bei den anderen so weiter
Wo ist da der Hacken?????