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

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 ;)
Dookie
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.

Code: Alles auswählen

>>> print 5*3/20*3
0
 
>>> print 5.0*3.0/20.0*3.0
2.25

Gruß

Dookie
TraX
User
Beiträge: 6
Registriert: Sonntag 22. Februar 2004, 20:14
Wohnort: Luxemburg
Kontaktdaten:

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

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

Danke dir =)

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

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

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

Achso :oops:

Dann kann ich das jetzt umändern :)

hab wohl noch so einiges zu lernen :roll:

:)
Antworten