Problem

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das ist nichtmal im Ansatz der ganze Unterschied zwischen den beiden, aber der relevante Teil ist, dass

Python2 `input()` `eval(input())` in Python3 entspricht.

Da `eval` (fast) beliebigen Code auswertet, sollte man auf Python2 `input` verzichten.
Stattdessen sollte es in dem Fall `int(raw_input())` in Python2 und `int(input())` in Python3 heissen.
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

es wundert mich echt in python 3 funktioniert das script nicht und in python 2 funktioniert es plötzlich werde jetzt aufjedenfall python 2 weiterbenutzen
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Les' doch mal bitte was hier die Leute posten. Dann wird es dich nicht wundern, dass dein Skript unter Python 3 so nicht funktioniert.

Grüße,
anogayales
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

pythonprogrammer hat geschrieben:es wundert mich echt in python 3 funktioniert das script nicht und in python 2 funktioniert es plötzlich werde jetzt aufjedenfall python 2 weiterbenutzen
Wieso wundert dich das? Wenn Python 3 exakt wie Python 2 wäre, warum sollte es dann Python 3 heißen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@Leonidas: Die Begründung ist IMHO schlecht, denn üblicherweise hat man bei der gleichen Programmiersprache in unterschiedlichen Versionen ein gewisses Mass an Rückwärtskompatibilität. Das gilt ja sonst auch für Python mit Ausnahme des etwas härteren Schnitts zwischen 2 und 3.

Stell Dir mal das gleiche Programm in Java vor und das würde unter Java5 laufen und unter Java6 nicht mehr und das begründet jemand mit *dem* Satz. Eine ``while``-Schleife, ein paar Vergleiche und grundlegende Ein- und Ausgabe. Da ist nichts bei, von dem man erwartet, dass es in der nächsten Version der Sprache nicht mehr funktioniert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:@Leonidas: Die Begründung ist IMHO schlecht, denn üblicherweise hat man bei der gleichen Programmiersprache in unterschiedlichen Versionen ein gewisses Mass an Rückwärtskompatibilität. Das gilt ja sonst auch für Python mit Ausnahme des etwas härteren Schnitts zwischen 2 und 3.
Dieses Mass gibt es gewiss, aber darüber hinaus auch nicht. Gerade bei Softwarerelieases im FOSS-Bereich sind Zahlenänderungen der Major-Version durchaus auch größere Änderungen. Nicht nur bei Python, auch bei Ruby von 1.8 auf was-jetzt-auch-immer-aktuell-ist. Und Modula 2 und Modula 3 sind auch verschiedene Sprachen, obwohl sie genauso heißen. Gerade Python macht das mit den Versionen IMHO sehr semantisch, so dass man von 2.x und 3.x-Serie sprechen kann die nunmal verschiedene Sprachen sind.
BlackJack hat geschrieben:Stell Dir mal das gleiche Programm in Java vor und das würde unter Java5 laufen und unter Java6 nicht mehr und das begründet jemand mit *dem* Satz. Eine ``while``-Schleife, ein paar Vergleiche und grundlegende Ein- und Ausgabe. Da ist nichts bei, von dem man erwartet, dass es in der nächsten Version der Sprache nicht mehr funktioniert.
Naja, bei Java ist das ja auch nur ein Schritt von Java 1.5.0 auf 1.6.0, da ändert sich natürlich nichts rückwährtskompatibel, wie bei Python 1.5 auf 1.6 ;) Das Sun/Oracle das Java 5 und Java 6 gebrandet haben ist ne andere Sache, aber das ist auch ein komplettes Chaos mit Java 1.0 und 1.1 als "Java", 1.2 als "Java 2" 1.3 und 1.4 als "Java 2" oder nur "Java", jedenfalls nicht "Java 3" und "Java 4" und nun 1.5 als "Java 5", 1.6 als "Java 6" und irgendwann dann 1.7 als "Java 7".

Edit: Und außerdem, die Unterschiede zwischen Python 2 und Python 3 kann man auch selbst schauen statt sie vorgekaut zu bekommen :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich wollte noch mal darauf hinweisen, dass ich zu dem Typproblem bereits in der ersten Antwort eingegangen bin ;-)

@pythonprogrammer: Bitte *lies* und reflektiere die Beiträge doch ein wenig besser, bevor Du eine weitere Antwort / Frage postest.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten