Seite 1 von 2
Re: Problem
Verfasst: Sonntag 28. Oktober 2012, 17:50
von cofi
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.
Re: Problem
Verfasst: Sonntag 28. Oktober 2012, 17:55
von pythonprogrammer
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
Re: Problem
Verfasst: Sonntag 28. Oktober 2012, 18:06
von anogayales
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
Re: Problem
Verfasst: Sonntag 28. Oktober 2012, 18:07
von Leonidas
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?
Re: Problem
Verfasst: Sonntag 28. Oktober 2012, 18:17
von 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.
Re: Problem
Verfasst: Sonntag 28. Oktober 2012, 18:26
von Leonidas
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

Re: Problem
Verfasst: Sonntag 28. Oktober 2012, 21:02
von Hyperion
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.