Pythonneuling

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
Nilo861
User
Beiträge: 4
Registriert: Samstag 22. Dezember 2018, 10:09

Hallo,

ich habe gerade erst mit Python angefangen und bin auch neu in diesem Forum. Ich habe versucht ein Programm zu schreiben mit dem man errechnen kann wie lange man für eine gewisse Strecke benötigt. Folgende Angaben muss man machen:
-Wie viele Kilometer
-Zu Fuß oder Fahrrad
-Langsam,normal oder schnell
Das ganze klappt allerdings nur bei den Einstellungen:
Zu Fuß und langsam. Woran kann das liegen ? Als Meldung kommt immer, dass "stunden" nicht definiert ist.
Hier der Code:

Bild

Vielen Dank für eine Antwort im Voraus !
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dein Bild geht nicht. Und Code als Bild ist auch Mist, weil den keiner nehmen & selbst ausprobieren kann. Also bitte als Text Posten, und dabei die Code Tags nicht vergessen.
Nilo861
User
Beiträge: 4
Registriert: Samstag 22. Dezember 2018, 10:09

Oh. Tut mir leid. Werde ihn demnächst hinterher schicken.
Nilo861
User
Beiträge: 4
Registriert: Samstag 22. Dezember 2018, 10:09

Hier ist der Code:
km = eval(input("Wie lange ist die Strecke in Kilometern:"))
vm = eval(input("Zu Fuß (1) oder Fahrrad (2)?"))
geschwindigkeit = eval(input("Langsam (1), normal (2) oder schnell (3):"))
if geschwindigkeit == 1 and vm == 1:
stunden=km/2
if geschwindigkeit == 2 and vm ==1:
stunden=km/4
if geschwindigkeit == 3 and vm == 1:
stunden=km/6
if geschwindigkeit == 1 and vm == 2:
stunden=km/15
if geschwindigkeit == 2 and vm == 2:
stunden=km/20
if geschwindigkeit == 3 and vm == 2:
stunden=km/25
print("Das Ergebnis ist: ",stunden," Stunden")
Sirius3
User
Beiträge: 18268
Registriert: Sonntag 21. Oktober 2012, 17:20

@Nilo861: Einrückungen sind in Python wichtig, besonders, wenn das Fehlverhalten des Programms darauf zurückzuführen ist. Hier im Forum gibt es die Code-Tags, damit die Darstellung stimmt.
Was bedeutet die Einrückung, und wo geht der Programmfluß weiter, wenn die if-Bedingung nicht erfüllt ist?

`eval` sollte man nicht benutzen. Bei Dir sind float und int die richtigen Funktionen zum Umwandeln des Inputs. Statt alles in if-Blöcken auszuprogrammieren, würde sich hier eine passende Datenstruktur (z.B. Wörterbuch) eignen, wo die Geschwindigkeiten in km/h für die einzelnen Möglichkeiten gespeichert sind.
Nilo861
User
Beiträge: 4
Registriert: Samstag 22. Dezember 2018, 10:09

Vielen Dank. Werde versuche das bald umzusetzen :)
bb1898
User
Beiträge: 216
Registriert: Mittwoch 12. Juli 2006, 14:28

Sirius3 hat geschrieben: Sonntag 23. Dezember 2018, 15:19
Statt alles in if-Blöcken auszuprogrammieren, würde sich hier eine passende Datenstruktur (z.B. Wörterbuch) eignen, wo die Geschwindigkeiten in km/h für die einzelnen Möglichkeiten gespeichert sind.
Oder, vielleicht noch einfacher: Du berechnest ja die Stunden nach zwei einfachen Formeln, eine für Fußgänger, eine für Radfahrer, also ginge es auch so:

Code: Alles auswählen

if vm == 1:
	stunden = km / (2 * geschwindigkeit)
elif vm == 2:
	stunden = km / (10 + 5 * geschwindigkeit)
else:
	print("Falsche Auswahl!")
So brauchst Du Deinen Wanderer / Radfahrer auch nicht auf drei Geschwindigkeitsstufen festzulegen. Wenn dann natürlich noch Auto, Pferd und Schiff mit passenden Formeln hinzukommen, wird das Dictionary doch wieder interessant.
Antworten