"Wie ein Informatiker denke..." inkompatibel mit P

Probleme bei der Installation?
Benutzeravatar
Dr.Miles
User
Beiträge: 38
Registriert: Montag 15. Dezember 2008, 08:33
Wohnort: Mannheim
Kontaktdaten:

Hallo, ist das o.g. Tutorial (und so manch andere die ich überflogen habe) nicht mehr aktuell? Folgendes Beispiel:

Code: Alles auswählen

Python 2.4.2 (#2, Sep 30 2005, 21:19:01)
[GCC 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu8)] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> print 1 + 1
2
>>> 
führt bei mir zu:

Code: Alles auswählen

>>> print 1 + 1
SyntaxError: invalid syntax (<pyshell#4>, line 1)
analog die Ausgabe von Strings:

Code: Alles auswählen

>>> print "otz"
SyntaxError: invalid syntax (<pyshell#5>, line 1)
Nun habe ich ein bisschen C-Erfahrung und dachte, machste das mal zur Funktion:

Code: Alles auswählen

>>> print (1+1)
2
>>> print("lol")
lol
Nicht das ich mich nicht freuen würde ein Problem in einer mir unbekannten Sprache gelöst zu haben, aber ich denke nicht das ich mit Tutorials arbeiten kann, wo die Beispiele falsch sind? Kann mir jemand sagen was da los ist? Liegts an meinem System?
Ist ein XP Python-Version: Python 3.0 (r30:67507)

Gruß
Dr.Miles
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Das Tutorial ist für Version Python 2.* geschrieben worden, da war print noch ein statement, in Python 3 ist es eine Funktion, wie du ja schon bemerkt hast.

Ich würde dir empfehlen momentan Python 2.6 zu benutzen da bisher nur weniger 3rd Party Libs Python 3 kompatibel sind.
Benutzeravatar
Dr.Miles
User
Beiträge: 38
Registriert: Montag 15. Dezember 2008, 08:33
Wohnort: Mannheim
Kontaktdaten:

Wow 3 Minuten, und das um die Uhrzeit, Respekt :-)
Vielen Dank für die Lösung!
Ist es denn sinnvoll (für die Zukunft) jetzt das alte zu lernen, oder sind die Änderungen nicht so gravierend?
Gruß
Dr.Miles
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Es gibt ein Skript(2to3.py) mit dem du Code von Python 2 zu Python 3 größtenteils konvertieren kannst. Um zu testen ob das Einwandfrei funktioniert kannst du ab 2.6 den Interpreter mit dem Parameter -3 starten, dann bekommst du entsprechende Warnungen.

Die Änderungen sollte man recht schnell drin haben, dafür sollte man sich dann What's new für Python 3 ansehen. Hauptänderungen sind in den Bereichen Unicode anzutreffen außerdem wurden Iteratoren besser integriert und die stdlib aufgeräumt.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dr.Miles hat geschrieben:Ist es denn sinnvoll (für die Zukunft) jetzt das alte zu lernen, oder sind die Änderungen nicht so gravierend?
"Gravierend" ist sicher relativ. Es gibt einige grundlegende Änderungen, die z.B. dazu führen, dass gültiger Python-Code der Versionen vor 3.0 unter Umständen nicht mehr läuft. Da von den Änderungen auch ganz grundlegende Dinge wie z.B. Ein- und Ausgabe über die Konsole und die Division betroffen sind, werden diese "Umstände" ziemlich häufig eintreten.

Ob es für dich sinnvoller ist, mit Python 2.6 zu beginnen oder mit 3.0 hängt auch davon ab, was deine Ziele mit Python sind und wie schnell du dabei vorankommst. Wenn es zunächst einmal um das Erlernen von reinem Python geht und du mit der Standardbibliothek auskommst, würde ich gleich mit 3.0 einsteigen.

Wenn du genauer angeben könntest, was deine Ziele sind, könnte man das präziser beantworten.

An Dokumention für 3.0 gibt es neben dem offiziellen Tutorial auch bereits eine angepasste Fassung von A Byte of Python.
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

Dr.Miles hat geschrieben:Ist es denn sinnvoll (für die Zukunft) jetzt das alte zu lernen, oder sind die Änderungen nicht so gravierend?
Da noch eine ganze Weile alter Python 2.X Code in Umlauf sein wird, ist es nicht falsch es zu koennen.
Benutzeravatar
Dr.Miles
User
Beiträge: 38
Registriert: Montag 15. Dezember 2008, 08:33
Wohnort: Mannheim
Kontaktdaten:

Meine Ziele liegen darin, erstmal die Grundlagen zu lernen (was ich gerade tue mit der 2.6) und dann Client/Server Geschichten (TCP/IP) zu lernen.
Habe jetzt die 2.6er auch deswegen genommen, weil ich eben kein/kaum deutsches Material zu der 3.0 gefunden habe.

Gruß
Dr.Miles[/code]
www.i2p2.de <--- sehr interressantes Anonymisierungsprojekt.
www.schaeuble-wegtreten.de <--- Petition gegen Schäuble
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dr.Miles hat geschrieben:Habe jetzt die 2.6er auch deswegen genommen, weil ich eben kein/kaum deutsches Material zu der 3.0 gefunden habe.
Du solltest dich generell darauf einstellen, dass du Dokumentation auf englisch lesen wirst. Mit deutschsprachiger Doku kommt man nur irgendwieweit.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

Leonidas hat geschrieben:Du solltest dich generell darauf einstellen, dass du Dokumentation auf englisch lesen wirst. Mit deutschsprachiger Doku kommt man nur irgendwieweit.
Richtig. Da ausserdem viele Dokus aus Docstrings automatisch erstellt werden, macht es keinen Sinn sie in einer anderen Sprache als Englisch zu schreiben. ;)
Zemo
User
Beiträge: 10
Registriert: Sonntag 11. Januar 2009, 11:26

Hallo zusammen.
Ich bin neu hier im Forum und versuche gerade Python 3 zu lernen. Habe keine Vorkenntnisse mit einer anderen Python Version und fange deshalb mit der 3 an.

Doch nun gibt es ein Problem an einer Stelle im Tutorial "Wie ein Informatiker denken lernen".

Und zwar steht dort folgendes Script:

Code: Alles auswählen

i = 1
while i <= 6:
  print 2*i, '   ',
  i = i + 1
print 
Der eine Zahlenreihe nebeneinander ausgeben soll.

Da ja in Python 3 print eine Funktion ist habe ich den Code so geändert:

Code: Alles auswählen

i = 1
while i <= 6:
  print (2*i, '   ', ) 
  i = i + 1
print()
Allerdings stehen die Zahlen dann nicht nebeneinander sonder immer in einer neuen Reihe. Könnte mir bitte jemand einen Tipp geben wo mein Fehler liegt?
Danke schon einmal im vorraus für eure Hilfe.
Mfg Zemo
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo Zemo, willkommen im Forum,

Das Komma braucht du am Schluss nicht mehr, das war nur syntaktischer Zucker von ``print``.

Du kannst dir die Dokumentation zu print mal ansehen. Als Tipp: ``\n`` ist New-Line, also müsstest du das ersetzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Code: Alles auswählen

print(2 * i, end="    ")
Stefan
Zemo
User
Beiträge: 10
Registriert: Sonntag 11. Januar 2009, 11:26

Danke schön.
Eine kleine Frage hätte ich da noch. Gibt es eigentlich ein deutsches manuell ähnlich wie das http://www.php.net/manual/de/ für php?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also etwas mit ähnlich schlechten Kommentaren? Nein, da muss ich dich enttäuschen, in Python muss man programmieren und kann nicht nur schlechten Code copypasten ;)

Wenn du nach einem deutschsprachigen Tutorial suchst, kannst du dir ABOP-German ansehen. Aber das hilft dir nichts mehr, wenn du mehr als die Stdlib brauchst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Leonidas hat geschrieben:Wenn du nach einem deutschsprachigen Tutorial suchst, kannst du dir ABOP-German ansehen. Aber das hilft dir nichts mehr, wenn du mehr als die Stdlib brauchst.
Wobei ihm das für Python 3.0 auch nur bedingt hilft, wenn er die deutsche Fassung nehmen möchte. AFAIK gibt es z.Zt. noch kein deutschsprachiges Tutorial zu Python 3.0.

Aber statt darauf zu warten könntest du die Zeit bis dahin nutzen, deine Englischkenntnisse soweit aufzubohren, dass du mit der Original-Doku zurecht kommst. Das ist auf jedenfall eine Investition in die Zukunft. :wink:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

numerix hat geschrieben:Wobei ihm das für Python 3.0 auch nur bedingt hilft, wenn er die deutsche Fassung nehmen möchte. AFAIK gibt es z.Zt. noch kein deutschsprachiges Tutorial zu Python 3.0.
Uhm, stimmt. Das Original-ABOP ist hingegen schon auf 3.0-Stand. Ebenso wie das normale Tutorial aus der Doku von Python 3.0.
Zuletzt geändert von Leonidas am Sonntag 11. Januar 2009, 13:59, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Zemo
User
Beiträge: 10
Registriert: Sonntag 11. Januar 2009, 11:26

Also erstmal nochmal danke für eure schnellen Antworten.

Eigentlich meinte ich nicht das Tutorial dort, sondern eher die Funktion dort über die Suche auf eine Übersicht der Funktion zu gelangen (weiß nicht wie man es nennt, ich glaube Funktionsrefferenz). Z.B. http://de3.php.net/manual/de/function.echo.php

Dabei ging es mir nicht nur um meine Englisch Kenntnisse (reichen gerade eben noch) sondern evtl. als Vorschlag für euer Wiki gedacht. Gebe ich bei euch in der Suche z.B. print ein bekomme ich nicht einen Treffer.

Versteht das jetzt nicht falsch, finde eure Community gut, und hat mir bisher sehr gut weiter geholfen. Z.B. Bei der Installation :)
Ich denke nur das es viele neugierige Leute gibt, die vlt. nicht erst Englisch lernen möchten um dann noch eine Programmiersprache zu lernen und diese dann doch nicht Python lernen. Aber hier höre ich auf weiche zu weit vom Thema ab.

Werde jetzt weiter lernen, aber rechnet ab und an mit Fragen von mir. :roll:

Mfg Zemo
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

http://docs.python.org/library/index.html

Unter Builtin Functions. Den Rest der Funktion lernst du dann kennen, wenn du ein bestmmtes Modul suchst und dich in dieses Mithilfe der Library Referenz einweisen lässt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Zemo hat geschrieben:Eigentlich meinte ich nicht das Tutorial dort, sondern eher die Funktion dort über die Suche auf eine Übersicht der Funktion zu gelangen (weiß nicht wie man es nennt, ich glaube Funktionsrefferenz). Z.B. http://de3.php.net/manual/de/function.echo.php
Die PDFs der Python-Dokumentation enthalten am Schluss alle Funktionen und Module zusammen mit der entsprechenden Seitenzahl.
Zemo hat geschrieben:Dabei ging es mir nicht nur um meine Englisch Kenntnisse (reichen gerade eben noch) sondern evtl. als Vorschlag für euer Wiki gedacht. Gebe ich bei euch in der Suche z.B. print ein bekomme ich nicht einen Treffer.
Also das alles übersetzen? Alle 4000 Seiten oder so? Scheint mir wenig zielführend zu sein, da es quasi immer veraltet sein wird. Und auch sonst schleichen sich in der Übersetzung eher Fehler ein als im Original, das nun eben alle lesen.
Hint: wenn du etwas hast, was man im Wiki verbessern kann, dann editiere es doch. Wenn du einen Artikel zu ``print`` in Python 3 machen willst, dann kannst du doch einfach eine neue Seite damit anlegen und diese optimalerweise irgendwo verlinken.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Zemo hat geschrieben:Ich denke nur das es viele neugierige Leute gibt, die vlt. nicht erst Englisch lernen möchten um dann noch eine Programmiersprache zu lernen und diese dann doch nicht Python lernen.
Wem es zu viel Aufwand (oder was auch immer ist), seine Englischkenntnisse soweit zu bringen, dass er englischsprachige Dokumentationen lesen und im wesentlichen verstehen kann, der wird es bei der Programmierung auch nicht wirklich weit bringen ...

NRW schafft gerade die besten Voraussetzungen dafür: Ab dem 2. Halbjahr beginnen schon die Erstklässler mit Englischunterricht. :)
Antworten