Syntax error:Invalid Syntax

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.
karel2
User
Beiträge: 17
Registriert: Freitag 19. Dezember 2008, 12:47

Freitag 19. Dezember 2008, 12:55

Hi,ich hab mir gestern Python 3.0 geholt und hab bei Youtube ein paar Tutorials durchgemacht.Jedoch hatte ich überall das selbe Problem:
Ich ging in Python rein--->New Window da tipp ich dann ein
print "Hello World!"
dann speicher ich das und geh dan auf run-->run module
Dann kommt folgender error: Syntax error: Invalid Syntax
Irgendetwas mach ich falsch ich hab es genauso wie im video geschrieben und zeigt jedes mal den Error an.
Ich will Python lernen!
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Freitag 19. Dezember 2008, 12:57

In Python 3.0 ist print kein Statement mehr, sondern eine Funktion. http://docs.python.org/3.0/whatsnew/3.0 ... a-function
karel2
User
Beiträge: 17
Registriert: Freitag 19. Dezember 2008, 12:47

Freitag 19. Dezember 2008, 13:04

Achso,und jetzt kann ich nicht mehr print "Hello world" eingeben oder wie?
Und was soll ich jetzt eintippen das es funzt?
Oder soll ich mir gleich eine ältere Version von Python holen?
Ich will Python lernen!
DasIch
User
Beiträge: 2480
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Freitag 19. Dezember 2008, 13:06

Code: Alles auswählen

print('Hello World!')
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Freitag 19. Dezember 2008, 13:14

karel2 hat geschrieben:Achso,und jetzt kann ich nicht mehr print "Hello world" eingeben oder wie?
Und was soll ich jetzt eintippen das es funzt?
Oder soll ich mir gleich eine ältere Version von Python holen?
Du koenntest auch einfach dem angebotenen Link folgen und lesen was da steht...
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
karel2
User
Beiträge: 17
Registriert: Freitag 19. Dezember 2008, 12:47

Freitag 19. Dezember 2008, 13:20

Gut ok,als Anfänger sollte ich trotzdem auf eine ältere Version umsteigen weil diese möglicherweise nicht so kompliziert wie 3.0 ist oder?
Ich will Python lernen!
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Freitag 19. Dezember 2008, 13:35

<ironie>Ja, du hast Recht. Die Pythonentwickler sorgen dafür, dass die Sprache von Version zu Version komplizierter wird, um Anfängern den Einstieg zu erschweren.</ironie>
Benutzeravatar
snafu
User
Beiträge: 5638
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Freitag 19. Dezember 2008, 14:19

Den Aufruf von "print" als Funktion verstehen auch ältere Python-Versionen...

Keine Ahnung, wie sinnvoll es wäre, das zwecks Aufwärtskompatibiltät so zu handhaben. Ich persönlich werde erstmal weiterhin "print" in seiner Form als Statement nutzen. Bis Python 3.0 auf Linux/Unix-Systemen wirklich relevant (im Sinne von "must-have") wird, vergehen ohnehin noch ein paar Jahre.
shcol (Repo | Doc | PyPi)
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Freitag 19. Dezember 2008, 14:25

snafu hat geschrieben:Den Aufruf von "print" als Funktion verstehen auch ältere Python-Versionen...
Ich bezweifel, dass die alten Versionen print als Funktion verstehen und glaube eher, dass sie den "Parameter" eher als Tupel auffassen - wenn das falsch ist bitte ich um Berichtigung ;)

Es wird noch ne Weile dauern bis Python 3 der Standard ist, aber ich glaube nicht wirklich, dass das "noch ein paar Jahre" sind ;) Es gibt dann bestimmt noch Legacy Code, aber der ist ja - sofern er 2.5+ ist - recht leicht zu portieren.
Benutzeravatar
snafu
User
Beiträge: 5638
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Freitag 19. Dezember 2008, 14:41

Okay, "Funktion" war falsch. Besser wäre "in dieser Form".

Also mein persönlicher Eindruck ist, dass Python 3.0 nicht vor Ende nächsten Jahres in die großen Distributionen integriert ist. Und selbst dann schätze ich, dass die ganzen 2.5er und 2.6er Skripte (mindestens letztere) noch lauffähig sein werden. (Achtung: Gefährliches Halbwissen, verbessert mich im Zweifel mit Fakten).

Naja, vielleicht sollte ich meine kühnen Vermutungen auch manchmal besser für mich behalten. Ich befürchte, es wird hier noch einige Widersprüche in Bezug auf meine Aussagen geben... ^^
shcol (Repo | Doc | PyPi)
DasIch
User
Beiträge: 2480
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Freitag 19. Dezember 2008, 15:04

snafu hat geschrieben:Also mein persönlicher Eindruck ist, dass Python 3.0 nicht vor Ende nächsten Jahres in die großen Distributionen integriert ist.
Ist die Frage was du damit meinst, bei Arch ist Python 3 schon kurz nach dem erscheinen im Repo gelandet. Solltest du allerdings damit meinen dass jedes Skript normalerweise mit Python 3 ausgeführt wird hast du vermutlich recht.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Freitag 19. Dezember 2008, 15:05

cofi hat geschrieben:Ich bezweifel, dass die alten Versionen print als Funktion verstehen und glaube eher, dass sie den "Parameter" eher als Tupel auffassen - wenn das falsch ist bitte ich um Berichtigung ;)
Halb falsch.

Richtig ist: print ist keine Funktion in Python 2.x!
Falsch ist: Es wird nicht als Tupel aufgefasst, sondern es sind einfach überflüssige, aber zulässige Klammern, die der Gruppierung dienen.

Edit: Kleiner Nachtrag zur Illustration:

Code: Alles auswählen

In [5]: type(("hallo"))
Out[5]: <type 'str'>

In [7]: type(("hallo",))
Out[7]: <type 'tuple'>
Zuletzt geändert von numerix am Freitag 19. Dezember 2008, 15:11, insgesamt 1-mal geändert.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Freitag 19. Dezember 2008, 15:08

snafu hat geschrieben:Also mein persönlicher Eindruck ist, dass Python 3.0 nicht vor Ende nächsten Jahres in die großen Distributionen integriert ist. Und selbst dann schätze ich, dass die ganzen 2.5er und 2.6er Skripte (mindestens letztere) noch lauffähig sein werden. (Achtung: Gefährliches Halbwissen, verbessert mich im Zweifel mit Fakten).
Weiß ich nicht. Fakt ist z.B. dass die allerneueste OpenSUSE 11.1 von gestern "nur" Python 2.6 mitbringt.
Fakt ist aber auch, dass es von ActiveState schon eine 3.0 Version gibt, die man distributionsunabhängig in einen beliebigen Ordner installieren kann. Solange man mit der Standardbibliothek (inkl. Tkinter/Tix) auskommt, langt das.
DasIch
User
Beiträge: 2480
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Freitag 19. Dezember 2008, 15:16

numerix hat geschrieben:Falsch ist: Es wird nicht als Tupel aufgefasst, sondern es sind einfach überflüssige, aber zulässige Klammern, die der Gruppierung dienen.
Wenn man nur einen Argument übergibt, tupel gehen aber auch ;)
BlackJack

Freitag 19. Dezember 2008, 15:29

Um das Problem zu illustrieren:

Code: Alles auswählen

In [379]: name = 'Marc'

In [380]: print('Hallo,', name)
('Hallo,', 'Marc')

In [381]: print 'Hallo,', name
Hallo, Marc
Antworten