Frage wegen einfachen RechenOperationen

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.
Benutzeravatar
TraX
User
Beiträge: 6
Registriert: Sonntag 22. Februar 2004, 20:14
Wohnort: Luxemburg
Kontaktdaten:

Frage wegen einfachen RechenOperationen

Beitragvon TraX » Sonntag 22. Februar 2004, 20:22

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 ;)
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Sonntag 22. Februar 2004, 20:31

Hi Trax,

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
Benutzeravatar
TraX
User
Beiträge: 6
Registriert: Sonntag 22. Februar 2004, 20:14
Wohnort: Luxemburg
Kontaktdaten:

Beitragvon TraX » Sonntag 22. Februar 2004, 20:36

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 ;)
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Sonntag 22. Februar 2004, 21:35

da hilft eine explizite Typeumwandlung mit float()

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 :wink:
Zuletzt geändert von Dookie am Sonntag 22. Februar 2004, 22:08, insgesamt 1-mal geändert.
Benutzeravatar
TraX
User
Beiträge: 6
Registriert: Sonntag 22. Februar 2004, 20:14
Wohnort: Luxemburg
Kontaktdaten:

Beitragvon TraX » Sonntag 22. Februar 2004, 21:41

Danke dir =)

Ich werds morgen dann versuchen, und dann diesen Post editieren :)
Benutzeravatar
TraX
User
Beiträge: 6
Registriert: Sonntag 22. Februar 2004, 20:14
Wohnort: Luxemburg
Kontaktdaten:

Beitragvon TraX » Montag 23. Februar 2004, 09:07

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! :D

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? ")


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?
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 23. Februar 2004, 14:06

Das musst Du anders formulieren.

Code: Alles auswählen

while mSI != "kg" and mSI != "g" and mSI != "tonnen":
    ...

oder eleganter

Code: Alles auswählen

while mSI not in ["kg","g","tonnen"]:
    ...



Gruß

Dookie
Gast

Beitragvon Gast » Montag 23. Februar 2004, 14:09

Achso :oops:

Dann kann ich das jetzt umändern :)

hab wohl noch so einiges zu lernen :roll:

:)

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]