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.
Problem
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- 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
-
- 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
Grüße,
anogayales
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wieso wundert dich das? Wenn Python 3 exakt wie Python 2 wäre, warum sollte es dann Python 3 heißen?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
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@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.
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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:@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.
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".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.
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
- 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.
@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
assert encoding_kapiert