Hi
Also, ich hab heute mit Python angefangen, und jetzt wollte ich einfach 'en bisschen mit den If, while, ... befehlen spielen...
Deshalb hab ich ein kleines "programm" geschrieben, das mir ein bisschen beim rechnen der physik aufgaben helfen soll...
als erstes gibt der user am, ob die masse in KG, GR, oder TONNEN ist...
dann ob die Geschwindigkeit in M/s oder KM/h ist
Danach werden dann die werte abgefragt, und folgendes gerechent:
endresultat = (m*(v**2))/2
Nun zu meinem kleinen problem
Bei machen werten gibt er dann als endresultat einfach 0.0 an... scheint davon abzuhängen, wie klein die werte sind.
Kann mir da vielleicht jemand einen Tipp geben? Falls das ganze zu unklar war, poste ich auch gerne mal den ganzen Source, samt einem Beispiel, wo 0.0 rauskommt
thx schonmal
Frage wegen einfachen RechenOperationen
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Trax,
ich denke mal, das Problem kommt durch die Integerwerte.
Gruß
Dookie
ich denke mal, das Problem kommt durch die Integerwerte.
Code: Alles auswählen
>>> print 5*3/20*3
0
>>> print 5.0*3.0/20.0*3.0
2.25
Gruß
Dookie
Hi =)
Danke für die schnelle Antwort, aber, wie kann ich dieses Problem denn umgehen, wenn die Werte vom User (also, von mir) eingegeben werden... da kann ich ja net einfach ".0" dranhängen... oder doch... müsste gehen... aber, da gibt es doch sicher auch eine elegantere lösung, oder =)
Sorry wegen den anfängerfragen
Danke für die schnelle Antwort, aber, wie kann ich dieses Problem denn umgehen, wenn die Werte vom User (also, von mir) eingegeben werden... da kann ich ja net einfach ".0" dranhängen... oder doch... müsste gehen... aber, da gibt es doch sicher auch eine elegantere lösung, oder =)
Sorry wegen den anfängerfragen
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
da hilft eine explizite Typeumwandlung mit float()
Gruß
Dookie
[edit] Ich habe das Beispiel etwas verfeinert und Deine, sicher als nächstes kommende Frage, nach dem Abfangen von fehlerhaften Eingaben schon gleich mit beantwortet
Code: Alles auswählen
>>> while 1:
... eingabe = raw_input("Zahl eingeben: ")
... try: # Umwandeln in Fließkomma kann auch schiefgehen
... a = float(eingabe) # in Fließkomma umwandeln
... except ValueError: # uups fehlerhafte Eingabe kann nicht umgewandelt werden
... print "Fehler:", eingabe, "ist keine Zahl!"
... continue # springe zurück an den Beginn der whileschleife
... print "%s² = %f" % (eingabe, a**2) # Ergebnis ausgeben
...
Gruß
Dookie
[edit] Ich habe das Beispiel etwas verfeinert und Deine, sicher als nächstes kommende Frage, nach dem Abfangen von fehlerhaften Eingaben schon gleich mit beantwortet
Zuletzt geändert von Dookie am Sonntag 22. Februar 2004, 22:08, insgesamt 1-mal geändert.
Danke dir =)
Ich werds morgen dann versuchen, und dann diesen Post editieren
Ich werds morgen dann versuchen, und dann diesen Post editieren
Hi =)
Sorry wegen dem DoppelPost, aber ich wollte einfach nicht noch einen zweiten Thread erstellen
Wegen meinem ersten Problem: Das geht jetzt alles ohne Probleme... Danke!
Dann zu meinem nächsten Problem:
Anfangs muss der User ja angeben, ob die Masse in KG G oder Tonnen ist. Da wollte ich dann 'ne IF funktion setzen, und mit 'nem GOTO, der, wenn der Input anders ist als KG G oder TONNEN, wieder zurückspringt... da es ja keinen wirklichen GOTO gibt, wie ich gelesen habe, hab ich's einfach mit WHILE gemacht:
aber, aus einem mir unbekannten Grund *lol* funktioniert das ganze net
Egal ob ich "asdfkh" oder "kg" eingebe, ich werde immer wieder aufgefordert...
Ich hab jetzt ein bisschen damit rumprobiert, komme aber einfach net raus... Ist es vielleicht nicht möglich mehrere durch "OR" getrennte Möglichkeiten anzugeben, bei einer While schleife?
Sorry wegen dem DoppelPost, aber ich wollte einfach nicht noch einen zweiten Thread erstellen
Wegen meinem ersten Problem: Das geht jetzt alles ohne Probleme... Danke!
Dann zu meinem nächsten Problem:
Anfangs muss der User ja angeben, ob die Masse in KG G oder Tonnen ist. Da wollte ich dann 'ne IF funktion setzen, und mit 'nem GOTO, der, wenn der Input anders ist als KG G oder TONNEN, wieder zurückspringt... da es ja keinen wirklichen GOTO gibt, wie ich gelesen habe, hab ich's einfach mit WHILE gemacht:
Code: Alles auswählen
mSI = "Masse"
while mSI != "kg" or "g" or "tonnen":
mSI = raw_input ("Masse in kg, g, tonnen? ")
Egal ob ich "asdfkh" oder "kg" eingebe, ich werde immer wieder aufgefordert...
Ich hab jetzt ein bisschen damit rumprobiert, komme aber einfach net raus... Ist es vielleicht nicht möglich mehrere durch "OR" getrennte Möglichkeiten anzugeben, bei einer While schleife?
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Das musst Du anders formulieren.
oder eleganter
Gruß
Dookie
Code: Alles auswählen
while mSI != "kg" and mSI != "g" and mSI != "tonnen":
...
Code: Alles auswählen
while mSI not in ["kg","g","tonnen"]:
...
Gruß
Dookie