Hallo auch ,Ich bin neu hier im Forum und hab grad erst mit python programmieren angefangen, allerdings hab ich zur Zeit mal wieder ein mir unverständliches Problem.
Es kommt häufiger beim programmieren in der interaktiven Shell vor, dass sich die Integerwerte für true/false ändern, das ganze hebt sich wieder auf sobald ich den Interpreter neu starte. Hier mal eine Auszug aus dem Terminal
>>> True == 0
True
>>> True == 1
False
>>>
user@ubuntu:~/Desktop/test$ python
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> True ==1
True
>>> True ==0
False
>>>
ich hoffe mir kann jemand bei dem Problem helfen, danke schonmal im vorraus
true/false
Das kann ich absolut nicht nachvollziehen, allerdings sind True und False beides nur Refrenzen auf Instanzen der Klasse bool, welches eine Subklasse von int ist. Wenn du also True und False zurück haben willst sollte ein einfaches
reichen. Man muss nicht 1 oder 0 nehmen der Wahrheitswert des Objektes welches man nimmt sollte nur passen.
Code: Alles auswählen
True = bool(1)
#bzw.
False = bool(0)
Kannst du das so reproduzieren? Ansonsten würde ich mal darauf tippen, daß du vor dem Neustart des Interpreters irgendwas gemacht hast, was die Bedeutung von 'True' umdefiniert hat. Zum Beispiel statt '==' mal aus Versehen nur '=' getippt. Hier an meinem Rechner konnte ich diesen Effekt nicht beobachten, und es wäre auch fatal, wenn es so wäre.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Verständnisfrage: Wozu brauchst du das?
Für Vergleiche mit den Boolschen Konstanten benutzt man die Identität, dh `is' - JA für den Fall geht es nicht, aber verstehe den Sinn des Falls auch nicht
Zu dem Problem: Du musst das - wie DasIch schon sagte - irgendwo überschrieben haben.
Für Vergleiche mit den Boolschen Konstanten benutzt man die Identität, dh `is' - JA für den Fall geht es nicht, aber verstehe den Sinn des Falls auch nicht
Zu dem Problem: Du musst das - wie DasIch schon sagte - irgendwo überschrieben haben.
Für Vergleiche benutzt man *nicht* ``is`` weil es eben nicht *die* Konstanten gibt. Es ist nicht garantiert woran `True` und `False` gebunden sind. Insbesondere in älterem Code werden die Namen manchmal "neu" definiert, weil es die früher gar nicht gegeben hat.
Ausserdem sollte man sowie so nicht irgend etwas auf ``obj == True`` oder gar ``obj is True`` prüfen, sondern gleich den Wahrheitswert von `obj` verwenden.
Ausserdem sollte man sowie so nicht irgend etwas auf ``obj == True`` oder gar ``obj is True`` prüfen, sondern gleich den Wahrheitswert von `obj` verwenden.
@cofi: an sich brauch ich das in meinem programm nicht oder so, ich arbeite nur gerade das tutorial how to think like a scentist with python durch und da ist es mir halt aufgefallen, als ich mir die rückgabewerte von funktionen angeschaut habe ...
@pekh: ok es könnte natürlich sein das ich ausversehen die Referenzierung der Werte geändert habe, wobei ich das niemals expliziz getan habe, weitherhin ist das Problem ja auch schon mehrmals aufgetreten...
Ich denk mal ich werd einfach die Referenzierung ändern wenn ich das Problem nochmal hab, bzw vllt find ich ja auch die Ursache.
@pekh: ok es könnte natürlich sein das ich ausversehen die Referenzierung der Werte geändert habe, wobei ich das niemals expliziz getan habe, weitherhin ist das Problem ja auch schon mehrmals aufgetreten...
Ich denk mal ich werd einfach die Referenzierung ändern wenn ich das Problem nochmal hab, bzw vllt find ich ja auch die Ursache.