Seite 1 von 1

Pythonneuling

Verfasst: Samstag 22. Dezember 2018, 10:25
von Nilo861
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 !

Re: Pythonneuling

Verfasst: Samstag 22. Dezember 2018, 13:48
von __deets__
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.

Re: Pythonneuling

Verfasst: Samstag 22. Dezember 2018, 13:50
von Nilo861
Oh. Tut mir leid. Werde ihn demnächst hinterher schicken.

Re: Pythonneuling

Verfasst: Sonntag 23. Dezember 2018, 15:03
von Nilo861
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")

Re: Pythonneuling

Verfasst: Sonntag 23. Dezember 2018, 15:19
von Sirius3
@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.

Re: Pythonneuling

Verfasst: Sonntag 23. Dezember 2018, 15:40
von Nilo861
Vielen Dank. Werde versuche das bald umzusetzen :)

Re: Pythonneuling

Verfasst: Montag 24. Dezember 2018, 11:25
von bb1898
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.