#Python Quiz 001: Was ergibt 1 == 1.?

preview_player
Показать описание

In diesem Python Quiz bzw. dieser Aufgabe für Anfänger beschäftigen wir uns mit der Frage, was die Ausgabe des Programms print(1==1.) ist. Diese Python Aufgabe für Anfänger soll dir helfen, die Grundlagen von Python leicht zu erlernen.
#Python #Quiz #Challenge

EQUIPMENT(*)

SUPPORT

SOCIAL MEDIA

Рекомендации по теме
Комментарии
Автор

Ich würde mal sagen, dass es True ist, weil nicht der Typ überprüft wird, sondern der Wert.

cachverflw
Автор

Geile Idee, gerne mehr von so kleinen Fragen.

zazakage
Автор

Lol... Ich hätte zuerst Syntax-Fehler gedacht, weil ich nicht damit gerechnet habe, dass man bei einem Float-Wert einfach mit Punkt beenden darf, ohne eine Nachkommastelle.

lars
Автор

True, un die auf "Identitätität" oder den Type zu prüfen bracht man was anderes...

neonschaf
Автор

Ich hab von Python nicht wirklich Ahnung. Ich weiß aber das 1. eine kurzschreibweise von 1.0 in den meisten Sprachen ist.
Ich weiß nicht ob der == operator in python nur Werte vergleicht oder auch Typen. (z.B. wie in JavaScript der === operator)
Ich glaube auch zu Wissen/Vermuten dass alles eine "Number" ist und es nicht direkt sowas gibt wie einen Integer oder Fließkommazahlen-Typ?
Somit ist das Ergebnis 1 == 1.0 True, egal ob der Typ mitverglichen wird oder nicht, da dann auch 1 eine Number wäre.
Vielleicht ist es nicht so, keine Ahnung.
In vielen Sprachen würde auch pro typ ein anderes Ergebnis auftreten, weil die Operatoren für verschiedene Typen überladen werden. In den meisten Sprachen ist so das Verhalten des Vergleichsoperators bei primitiven Datentypen o.ä. immer nur "Wert vergleichen".
Mir ist nur langweilig und dann schreibe ich hald einen längeren Kommentar ohne Fakten haha (:

fabyr_
Автор

bin am Anfang meiner python Reise und hätte auf true geschätzt. Nicht aus Wissen, eher weil ich gar nicht an einen Vergleich von Typen gedacht habe^^ (mit einem Typenvergleich wäre Integer und float gemeint? Und wie sähe das Ergebnis aus?)

Danke & einen schönen Sonntag

brOnkOdOnkO
Автор

ich dachte zuerst, es würde False ausgeben, weil die Gleitkommazahl "1." an einer späten Nachkommastelle eine Ungenauigkeit aufweist. Das scheint aber nur nach einer mathematischen Operation der Fall zu sein.

z.B.
print (0.3 == (0.1 + 0.2) )

=> False

Lugge
Автор

Habe dies vor kurzem selber schon in der Praxis herausgefunden. 😄

soldnerdose
Автор

ich würde auf true tippen,
weil ich vermute dass es in python wie in c++ nach dem linken operator geht also:
int::operator==(float){}
und dass dieser operator overload nur den wert statt dem typen vergleicht.

till
Автор

Das ist genau der Grund warum ich python nicht so mag!😅 Denn es widerspricht sich in meinen augen, einen DIN-A4-Umschlag mit einem DIN-A5-Umschlag zu vergleichen!🥴 Aber das ist, glaube ich, Geschmackssache!😇 Würde man ein "false" bekommen mit "==="?🤔

Edit:
Danke für deine Arbeit!😉👍👍👍🤟😎

johnwayne
Автор

Mit == wird der wert verglichen, mit === der wert und datentyp. 1==1. => true aber 1===1. => false (glaube ich)

mattiamussner
Автор

True ist sogar wirklich ein Integer mit dem Wert 1. z.B. ist isinstance(True, int) == True. Wenn ich mich richtig erinnere war es in früheren Python Versionen einfach nur eine Konstante mit dem Wert 1. Mittlerweile ist bool eine eigener Typ aber um die Backwards-Compatibility zu erhalten ist es eine Unterklasse von int. Das erlaubt auch so lustige Tricks wie "ab"[input() == "choose b"]. Sehr nützlich fürs Code-Golfen.

vader
Автор

ich find ja den klick am anfang toll xD

PolyEthylenTerephtalat
Автор

Pov du hast gewartet bis er es auflöst und schreibst es dann in die kommentare

kleinerdjpandi
Автор

Gründe warum man kein Python verwenden sollte:

chuck_norris
Автор

Roses r red, violets r blue, we cane to the comments because we had no dang clue

DarkWolf-yeby
Автор

Ist true. Hab in der schule php und das bedeutet das gleiche wie in php

Youssef_gmg
Автор

Das ist voll der Streber-Kommentar, ich weiß.
Tut mir leid. (Korrigiert, falls es doch Halbwissen ist)

Ich bin mir nicht ganz sicher ob dem so ist, aber "pythonisch" sucht der Interpreter Laufzeit die '__eq__(other)' Methoden ggf BEIDER Objekte ab.
Wenn ich nicht falsch liege also erst vom int, dann vom float. Der int.__eq__ würde ein 'NotImplemented' zurück geben (kein NotImplemnetedError, und auch nicht throw'en - so hab ich es zumindest gelernt). Weil der integer keinen float indirekt in einen int casten "darf" (weil ja Werte verloren gehen könnten).
Der float.__eq__ kann aber einen int in einen float casten.

Also so kann man es zumindest in Python selber programmieren. Ob das in zB CPython so implementiert ist, weiß ich nicht. Aber wenn man selber Klassen schreibt sehr interessant. So kann man zB einen Snowflake Datentyp schreiben (Unique ID), der auf nem int basiert bzw sich damit vergleichen lässt.
Ob der Interpreter in dem Beispiel auch ein paar Tricks macht, weiß ich nicht. Aber so (oder so ähnlich) ist es zumindest im Python Doc beschrieben.

Und Python hat eigentlich keine Bool Werte. Gaaaanz am Anfang gab es auch nur int, nichtmal Bool. Nehme an, hat was mit C und 8bit und so zu tun. Python ist ja auch eher "truthy" als richtige bools zu haben.

Zusätzlicher fun fact: jeder int (float weiß ich Grad nicht) ist ein Singleton. Also 1==1 (beides int) ist nicht nur gleichwertig, sondern sind buchstäblich ein und das selbe Objekt (mit 'id()' kann man das glaube sehen)

BlackDroid
Автор

Ich bin ein Python Laie, ich sage False.
Edit: Verdammt.

amogus_rizzler
Автор

Aber 0.1 + 0.2 =
Ach ist Programmieren nicht toll

Der_Rotsteiner