Was ist da falsch?..

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
.sTr0nG
User
Beiträge: 4
Registriert: Samstag 11. Mai 2013, 09:08

Hallo erstmal,
da ich noch gaaaanz neu bin, habe noch absolut keine Ahnung wohin so eine Frage kommt..
Da ich nächste Woche eine Arbeit schreibe und nicht wirklich weiss was an meinem Script falsch ist,
wäre es nett von euch wenn ihr mir das sagen könntet :D
Aufgabe: Erstelle ein ''Parkhausscript'' wo man eine flexible Ein/-Ausfahrzeit eingeben kann. Der Stundenpreis betragt 2€, ab der 5ten Stunde kostet es jedoch nurnoch 1€ pro weiterer Std.

Script als Datei: http://www.file-upload.net/download-757 ... us.py.html

Script als Text:

Code: Alles auswählen

Einfahrtzeit_Std=input ("Einfahrtzeit_Std: ")
Einfahrtzeit_Min=input ("Einfahrtzeit_Min: ")
Ausfahrtzeit_Std=input ("Ausfahrtzeit_Std: ")
Ausfahrtzeit_Min=input ("Ausfahrtzeit_Min: ")
Stundenpreis=2
Parkzeit_Std=Ausfahrtzeit_Std - Einfahrtzeit_Std
Parkzeit_Min=Ausfahrtzeit_Min - Einfahrtzeit_Min
if Parkzeit_Std <5:
    Stundenpreis=1
Betrag=Parkzeit_Std*Stundenpreis
print ("Parkzeit_Std: "),Parkzeit_Std
print ("Parkzeit_Min: "),Parkzeit_Min
print ("Betrag: "),Betrag

P.S.: Gibt es hier Spoiler? Der übliche [spoiler]xxxxxxx[/spoiler] funktioniert nicht..
Zuletzt geändert von Anonymous am Samstag 11. Mai 2013, 09:26, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@.sTr0nG: Die Bedingungen im Programm spiegeln einfach nicht die Bedingungen in der Aufgabenstellung wieder und dadurch werden falsche Preise berechnet.

Erkläre mal wie viel jeweils 1, 3, 5, 7, und 10 Stunden Parken kosten, und wie sich der Preis zusammen setzt.
.sTr0nG
User
Beiträge: 4
Registriert: Samstag 11. Mai 2013, 09:08

Ich wäre ja schon froh wenn er überhaupt Preise berechnet.
Nachdem ich die Ein/-Ausfahrzeiten eingegeben habe kommt diese Fehlermeldung:
Traceback (most recent call last):
File "C:\Python33\Parkhaus.py", line 6, in <module>
Parkzeit_Std=Ausfahrtzeit_Std - Einfahrtzeit_Std
TypeError: unsupported operand type(s) for -: 'str' and 'str'

Da ich dieses Thema erst neu habe, kann ich damit kaum/garnichts anfangen.
ich vermute nur mal das irgendwas in der 6ten zeile falsch ist, was weiss ich jedoch nicht.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Überprüfe mal die Datentypen. Man kann nicht String - String rechnen.

Das wär das gleiche wie:

"Hallo"-"Hello"

Geht natürlich nicht.

Stichwort: Datentypkonvertierung

Code: Alles auswählen

Einfahrtzeit_Std=input ("Einfahrtzeit_Std: ")
Einfahrtzeit_Min=input ("Einfahrtzeit_Min: ")
Ausfahrtzeit_Std=input ("Ausfahrtzeit_Std: ")
Ausfahrtzeit_Min=input ("Ausfahrtzeit_Min: ")
EDIT: inputs speichern immer nur als String ab!
Diese Zeilen sind in int oder float umzuwandeln.
Zuletzt geändert von Gary123456 am Samstag 11. Mai 2013, 09:50, insgesamt 2-mal geändert.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

.sTr0nG hat geschrieben:Nachdem ich die Ein/-Ausfahrzeiten eingegeben habe kommt diese Fehlermeldung:
Traceback (most recent call last):
File "C:\Python33\Parkhaus.py", line 6, in <module>
Parkzeit_Std=Ausfahrtzeit_Std - Einfahrtzeit_Std
TypeError: unsupported operand type(s) for -: 'str' and 'str'
Du versuchst mit Strings zu rechnen. Um Strings in Zahlen zu konvertieren gibt es int und float.
.sTr0nG hat geschrieben:Da ich dieses Thema erst neu habe, kann ich damit kaum/garnichts anfangen.
Also bitte, noch eindeutiger geht die Fehlermeldung nicht. Ich habe meiner Frau (die kein Python programmiert) diese Fehlermeldung gezeigt und nach weniger als 3 Sekunden die korrekte Diagnose bekommen.
BlackJack

@.sTr0nG: `input()` gibt Zeichenketten (Datentyp `str`) zurück und die kann man nicht voneinander abziehen. Was sollte zum Beispiel bei 'Haus' - 'Baum' auch das Ergebnis sein‽ Du musst die Eingaben in Zahlen umwandeln. Zum Beispiel mit `int()` in ganze Zahlen. Zahlen kann man dann voneinander abziehen.

Das nächste „technische” Problem sind die `print()`\s am Ende. Da solltest Du Dir noch einmal anschauen wie das aussehen muss wenn man mehr als einen Wert mit einem `print()`-Aufruf ausgeben will. So wie es jetzt dort steht bildest Du nämlich Tupel aus dem Rückgabewert von `print()` und den jeweiligen Variablen. Und mit den Tupeln wird dann nichts gemacht, also ist das ein recht sinnfreies Konstrukt.

Ansonsten bleibt meine Frage noch bestehen: Erkläre mal wie viel jeweils 1, 3, 5, 7, und 10 Stunden Parken kosten, und wie sich der Preis zusammen setzt.

Denn wenn die rein „technischen” Probleme gelöst sind, werden immer noch falsche Preise berechnet.
.sTr0nG
User
Beiträge: 4
Registriert: Samstag 11. Mai 2013, 09:08

@BlackJack:
1 Std: Stundenpreis(2€) * Differenz zwischen Einfahrtzeit u Ausfahrtzeit
3 Std: Stundenpreis(2€) * Differenz zwischen Einfahrtzeit u Ausfahrtzeit
5 Std: 2x normaler Stundenpreis(2€) * Differenz zwischen Einfahrt u Ausfahrtzeit +1x neu berechneter Stundenpreis (1€) * Differenz zwischen Einfahrtzeit u Ausfahrtzeit
7 Std: 2x normaler Stundenpreis(2€) * Differenz zwischen Einfahrt u Ausfahrtzeit +3x neu berechneter Stundenpreis (1€) * Differenz zwischen Einfahrtzeit u Ausfahrtzeit
10Std: 2x normaler Stundenpreis(2€) * Differenz zwischen Einfahrt u Ausfahrtzeit +6x neu berechneter Stundenpreis (1€) * Differenz zwischen Einfahrtzeit u Ausfahrtzeit

Zumindest würde ich es so machen.
BlackJack

@.sTr0nG: Wie kommst Du von der Aufgabenstellung auf diese Berechnung? Schlüssel das doch mal für sagen wir mal 7 Stunden Parkzeit auf die einzelnen Stunden auf. Wie viel kostet die 1., die 2., die 3., …, 7. Stunde?
.sTr0nG
User
Beiträge: 4
Registriert: Samstag 11. Mai 2013, 09:08

2€ (1 Std) + 2€ (2 Std) + 2€ (3 Std) + 2€ (4 Std)+ 1€ (5 Std) + 1€ (6 Std) + 1€ (7 Std) = 11€

So sollte es zumindest stimmen..

Habe gerade bemerkt das ich oben falsch gerechnet habe, entschuldigung. :d
Antworten