Programm zur Berechnung von Seiten und Winkeln eines 3-Ecks

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
ClemeX
User
Beiträge: 6
Registriert: Dienstag 16. Januar 2007, 20:33

Also wie gesagt, das Programm ist dazu da um Seiten & Winkel eines Rechtwinkligen Dreiecks zu berechnen.
Es ist mein allererstes Programm, und ich weiß nicht was daran nicht stimmt, nur dass z.B. etwas bei der Winkelberechnung nicht funktioniert.
Bitte einerseits um Hilfe & Ratschläge und andererseits um Meinungen:

Hier der Link:
http://paste.pocoo.org/show/688/

By Clemens R. 7D
BlackJack

ClemeX hat geschrieben:Es ist mein allererstes Programm, und ich weiß nicht was daran nicht stimmt, nur dass z.B. etwas bei der Winkelberechnung nicht funktioniert.
Das ist etwas ungenau. Was genau funktioniert denn nicht? Bekommst Du Fehlermeldungen? Falsche Ergebnisse? Wenn Du falsche Ergebnisse bekommst, gib doch mal ein Beispiel was Du eingibst, was Du als Ergebnis erwartest und was Du stattdessen bekommst.
ClemeX
User
Beiträge: 6
Registriert: Dienstag 16. Januar 2007, 20:33

BlackJack hat geschrieben:
ClemeX hat geschrieben:Es ist mein allererstes Programm, und ich weiß nicht was daran nicht stimmt, nur dass z.B. etwas bei der Winkelberechnung nicht funktioniert.
Das ist etwas ungenau. Was genau funktioniert denn nicht? Bekommst Du Fehlermeldungen? Falsche Ergebnisse? Wenn Du falsche Ergebnisse bekommst, gib doch mal ein Beispiel was Du eingibst, was Du als Ergebnis erwartest und was Du stattdessen bekommst.
Ok das Hauptproblem ist, dass ich bei den Ergbenissen (ALLEN), manchmal 0 rauskriege (obwohl es gar nicht rauskommen kann).
Wenn ich aber "schöne" Zahlen verwende, z.B. a = 3; b =4
dann rechnet er richtig 5 raus.
da3dalus
User
Beiträge: 9
Registriert: Sonntag 14. Januar 2007, 20:06

ClemeX hat geschrieben: Ok das Hauptproblem ist, dass ich bei den Ergbenissen (ALLEN), manchmal 0 rauskriege (obwohl es gar nicht rauskommen kann).
Ich würde mal spekulieren, dass er bei den Divisionen einfach mit int rechnet, weshalb er auf 0 kommt. Ersetz doch probeweise mal z.B. "Laenge_a = input('Die Laenge von Kathete a, bitte: ')" durch "Laenge_a = float(input('Die Laenge von Kathete a, bitte: ')" usw.
ClemeX
User
Beiträge: 6
Registriert: Dienstag 16. Januar 2007, 20:33

da3dalus hat geschrieben:
ClemeX hat geschrieben: Ok das Hauptproblem ist, dass ich bei den Ergbenissen (ALLEN), manchmal 0 rauskriege (obwohl es gar nicht rauskommen kann).
Ich würde mal spekulieren, dass er bei den Divisionen einfach mit int rechnet, weshalb er auf 0 kommt. Ersetz doch probeweise mal z.B. "Laenge_a = input('Die Laenge von Kathete a, bitte: ')" durch "Laenge_a = float(input('Die Laenge von Kathete a, bitte: ')" usw.
habs probiert funktioniert baer auch ned :(
Hab mal geschaut was Python schreibt, und bin draufgekommen, dass ihm hier etwas nicht passt:
ergebnis_Laenge_a = math.sqrt(Laenge_c ** 2 - Laenge_b ** 2)*1.0
da3dalus
User
Beiträge: 9
Registriert: Sonntag 14. Januar 2007, 20:06

Passiert das auch, wenn du für c und b irgendwelche Kommazahlen (3.5 oder sowas) einsetzt?
ClemeX
User
Beiträge: 6
Registriert: Dienstag 16. Januar 2007, 20:33

da3dalus hat geschrieben:Passiert das auch, wenn du für c und b irgendwelche Kommazahlen (3.5 oder sowas) einsetzt?
Nein, wenn ich z.B 3.0 eingebe auch nicht! In dem Fall funktioniert das Programm bei der Seitenberechnung, aber bei den Winkel funkts dann noch immer ned, weil er einen falschen arc sinus ausrechnet. Es kommen ergebnisse wie 0.345° raus, das kann ja keine Winkel sein.
da3dalus
User
Beiträge: 9
Registriert: Sonntag 14. Januar 2007, 20:06

In dem Fall solltest du vielleicht mal die degrees(x)-Funktion aus dem math-Modul auf deine Winkel anwenden und gucken, ob die Werte dann Sinn ergeben :wink:
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

ClemeX hat geschrieben:
da3dalus hat geschrieben:Passiert das auch, wenn du für c und b irgendwelche Kommazahlen (3.5 oder sowas) einsetzt?
Nein, wenn ich z.B 3.0 eingebe auch nicht! In dem Fall funktioniert das Programm bei der Seitenberechnung, aber bei den Winkel funkts dann noch immer ned, weil er einen falschen arc sinus ausrechnet. Es kommen ergebnisse wie 0.345° raus, das kann ja keine Winkel sein.
Doch, das kann schon ein Winkel sein ^^

Im Ernst: die trigonometrischen Funktionen im math-Modul arbeiten alle mit "richtigen Winkeln", also Bogenmaß (360° = 2π).
D.h. du musst Gradangaben (wie da3dalus sagte) für sin(), cos() etc. ins Bogenmaß (engl. "radians") umrechnen und Ergebnisse von asin(), acos() etc. vom Bogenmaß in Grad.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und dazu bietet das math-Modul degrees() und radians() an.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ClemeX
User
Beiträge: 6
Registriert: Dienstag 16. Januar 2007, 20:33

ich weiß, dass man das wahrscheinlich nicht tun sollte, aber nun gehts:
hab mir bei einem anderen programm angeschaut, wie er /sie das gelöst hat :( , und hab bemerkt, dass ich dass schreiben muss:
*180/math.pi

Jetzt funkts auf jeden Fall, nur würde ich gerne noch wissen, was dieser Befehl bewirkt.:oops:

Hier die "wohl" Endfassung:
http://paste.pocoo.org/show/702/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ClemeX hat geschrieben:Jetzt funkts auf jeden Fall, nur würde ich gerne noch wissen, was dieser Befehl bewirkt.:oops:
Na, irgendwie muss man doch Bogenmaß-Werte auf Gradmaß-Werte umrechnen, besonders wenn man die entsprechenden Funktionen des math-Moduls nicht kennt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

ClemeX hat geschrieben: Hier die "wohl" Endfassung:
http://paste.pocoo.org/show/702/
Du hast immer noch nicht den Fehler bei der Division beseitigt.

Code: Alles auswählen

        Laenge_x  = (Laenge_a / Laenge_c)
liefert dir einen Integer, wenn a und c Integers sind. Zum Beispiel ist

Code: Alles auswählen

>>> 1/2
0
Du musst also zumindest einen der Werte in einen float umwandeln, vor du teilst.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
ClemeX
User
Beiträge: 6
Registriert: Dienstag 16. Januar 2007, 20:33

birkenfeld hat geschrieben: Du musst also zumindest einen der Werte in einen float umwandeln, vor du teilst.
Wird gemacht :D
Danke für den Tipp!
Antworten