Gibt es Unlogik in Python?

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
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

Hallo, mich interessiert schon seit längerem eine Frage:
Gibt es Unlogik in Python?
Um das mal genauer darzustellen.. Es ist ja bekannt das es ein paar Unlogische Matheterme/Aufgabenstellungen gibt ein paar wären da z.B.:
  • -4^1/2
    sin von ɑ und ɑ = 90°
    1/0
Natürlich aus 1 / 0 kann man auch einen Näherungswert errechnen. Kann zwar sein, aber das habe ich nur zur besseren Darstellung meiner Frage benutzt. Habt ihr irgendwelche Ideen? Oder ist in Python wirlich alles ineinander greifend ohne jegliche "Fehler"?
BlackJack

@xpilz: Ich verstehe die Frage nicht wirklich. Das erste und das zweite Beispiel hättest Du ganz einfach ausprobieren können.

Potenzieren von negativen Zahlen funktioniert mit Zahlen <1, `math.sqrt()` dagegen löst einen `ValueError` aus. Das ist sicher auch irgendwo dokumentiert. Genau wie 1/0 zu einem `ZeroDivisionError` führt. Ob das erste Beispiel funktioniert hängt wahrscheinlich davon ab was IEEE754 dazu sagt was da als Ergebnis zu erwarten ist und es könnte eventuell implementierungsabhängig sein.

Da man seine eigenen Typen implementieren kann, kann man damit so ziemlich alles anstellen was man möchte, auch wenn das "unlogisch" ist. Aber auf welcher Ebene? Wenn man festlegt das 1+1=3 ist, dann ist das eben per Definition so und auch richtig und logisch.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

1)

Code: Alles auswählen

>>> (-4.0+0j)**0.5
(1.2246063538223773e-16+2j)
2) Da ist nichts "unlogisch". Der Sinus ist für alle Werte aus R definiert.
3) Das Ergebnis einer Division durch Null ist im Allgemeinen undefiniert, da dies nicht sinnvoll ist. So wird es auch in Python umgesetzt.
Das Leben ist wie ein Tennisball.
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

@BlackJack Du hast Recht.. Ich versuche meine Frage etwas besser zu umschreiben. Programmiersprachen sind ja, wie bekannt auch sehr logisch. Meine Frage sind diese Programmiersprachen insbesondere Python 100% logisch? Das heißt ist alles ineinandergreifend, oder kann man es ineinander greifend machen:
Wenn man festlegt das 1+1=3 ist, dann ist das eben per Definition so
Um meine Beispiele geht es garnicht. Ich wollte nur wissen ob so was (auf die Informatik bezogen) auftaucht.
@EyDu Ja, natürlich gibt es dafür Lösungen, die Interessieren mich aber weniger. Das was ich zu BlackJack geschrieben habe trifft es deutlicher hoffe ich. Ach ja.. Der Sinus Wert von ɑ wäre dann eins. Weil ɑ ist 90° somit ist die Seite a der Kosinus, zugleich aber noch die Gegenkathete. Das funktioniert doch nicht?
BlackJack

@xpilz: Ich verstehe die Frage immer noch nicht. Was meinst Du mit "logisch" bzw. "unlogisch"? Das ganze läuft auf Rechnern die im Grunde auf 100% boole'scher Logik aufbauen. Insofern…

Also müsstest Du echt mal genauer definieren was Du mit "logisch" meinst.

Ob einem Menschen alles logisch vorkommen wird? Nein, wahrscheinlich nicht, denn das ist subjektiv -- was einer für völlig logisch hält, überrascht einen anderen vielleicht.

Ob die Implementierung zu 100% der Sprachbeschreibung folgt? Wahrscheinlich nicht, Fehler passieren immer mal. Aber ich denke das wird bei Python recht wenig sein.

Ob die Sprachbeschreibung sämtliche Eventualitäten abdeckt oder Mehrdeutigkeiten enthält? Wahrscheinlich ist das nicht 100% der Fall, aber auch das ist menschlich. Auch hier denke ich es gibt da nicht allzu grosse Grauzonen; immerhin gibt es mehrere Implementierungen bei denen es soweit ich weiss keine grossen "Meinungsverschiedenheiten" gibt.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

@xpilz: Weil ich keine Lust habe alles zu erkären, gebe ich dir einfach mal einen Link ;-)
Das Leben ist wie ein Tennisball.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

xpilz hat geschrieben:Ach ja.. Der Sinus Wert von ɑ wäre dann eins. Weil ɑ ist 90° somit ist die Seite a der Kosinus, zugleich aber noch die Gegenkathete. Das funktioniert doch nicht?
Die Sinusfunktion von Python erwartet Bogenmaß, vielleicht ist das dein Problem? Andernfalls verstehe ich nicht was du willst.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Wahrscheinlich meint der OP den Tangens, der ist naemlich fuer Vielfache von pi/2 nicht definiert.

Ich kann mir vorstellen, dass die Frage eher darauf abzielt, ob es unintuitive Dinge in Python gibt (was, wie BlackJack schon sagte, ein persoenliches Empfinden ist), oder ob es inkonsequente Dinge gibt.

Unintuitiv find ich z.B. in Python 2.x z.B. die Sache mit dem print, dem Komma und dem Newline.

Inkonsequent ist, dass sich in Python 2.x nicht alle Module in der stdlib an Pep8 halten, was die Benennung von Dingen angeht.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

@BlackJack: Auf die Lösung meiner Beispiele bin ich garnicht aus. Ich denke das was Rebecca geantwortet hat trifft es am besten.

@EyDu: Danke für den Link.. Ist aber sehr ausführlich :shock:.

@Darii: Wie gesagt darauf bin ich nicht aus.

@Rebecca: Danke, die Antwort habe ich gesucht.
Unintuitiv find ich z.B. in Python 2.x z.B. die Sache mit dem print, dem Komma und dem Newline.
Ja, stimme ich zu und zu der unteren Meinung kann ich nichts sagen, weil ich von Pep8 noch nichts gehört habe.
Zuletzt geändert von xpilz am Dienstag 13. April 2010, 16:43, insgesamt 1-mal geändert.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

xpilz hat geschrieben:Naja ich kam nur darauf, weil mein Mathelehrer behauptet hatte, dass das nicht funktionieren kann.
Geht so auch nicht, weil alpha nicht der rechte Winkel sein kann (siehe Link von EyDu).
Ja, stimme ich zu und zu der unteren Meinung kann ich nichts sagen, weil ich von Pep8 noch nichts gehört habe.
http://www.python.org/dev/peps/pep-0008/
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

xpilz hat geschrieben:Grafisches Beispiel hier:
http://yfrog.com/5srechnungsp
Du brauchst einen rechten Winkel, der nicht der Winkel ist den du ausrechnen willst, also wird die Trigonometrie hier falsch angewendet. Ironischerweise fuehrt das von dir gezeigt Beispiel aber gar nicht zu einem Widerspruch, da der Sinus von 90 Grad gerade ... 1 ist. Was nur zeigt, dass man auch mit den falschen Mitteln das richtige Ergebnis "ausrechnen" kann. :lol: (Mit dem Cosinus saehe das hier allerdings anders aus...)

Edit: Peinlicher Typo...
Zuletzt geändert von Rebecca am Dienstag 13. April 2010, 16:31, insgesamt 1-mal geändert.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Der Vollständigkeit halber noch die kurze Anmerkung, dass deine Gleichung in der linken oberen Ecke deines Beispiels falsch ist.

Jetzt fehlt eigentlich nur noch die Behauptung, dass math.sqrt immer nur die positive Wurzel liefert ^^
Das Leben ist wie ein Tennisball.
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

Peinlich.. :oops:. Aber noch eine Frage wie lange beschäftigst du dich mit Mathematik?.. Die Sache mit dem sinus u.s.w. habe ich erst heute gehört. Ich hoffe damit konnte ich ein bisschen von der Blamierung auf mein nichtwissen ablenken :D.
fabi1511
User
Beiträge: 23
Registriert: Donnerstag 25. Juni 2009, 18:59

was (-4)**0.5 angeht:

eig ist python eine der "logischsten" sprachen, weil viele sprachen einfach einen Error ausgeben, während python (mathematisch korrekt) die imaginäre einheit verwendet
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

@fabi1511: Danke, ich denke ich habe logisch und unlogisch hier falsch verwendet..
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

xpilz hat geschrieben:@Darii: Wie gesagt darauf bin ich nicht aus.
Wie gesagt, ich versteh nicht, du schreibst ziemlich konfus. Dazu kommt noch das du anscheinend irgendwann das von Rebecca zitierte Beispiel gelöscht hast, das macht das ganze nicht gerade verständlicher…
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

@Darii: Entschuldigung :(.. Schlechter Start als Neuer, denke ich mal. In Zukunft werde ich mich bemühen verständlicher zu schreiben..
Rebecca zitierte Beispiel gelöscht hast
Man kann Beiträge von anderen editieren?
Trotzdem ein Dankeschön an alle die mir ihre Antworten geposted haben.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

xpilz hat geschrieben:Man kann Beiträge von anderen editieren?
Nein, Darii bezog sich auf das geloeschte Bild auf das sich Rebecca bezogen hatte.
Antworten