"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:

Montag 15. Dezember 2008, 08:53

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: 2448
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Montag 15. Dezember 2008, 08:56

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:

Montag 15. Dezember 2008, 09:03

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: 2448
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Montag 15. Dezember 2008, 09:09

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

Montag 15. Dezember 2008, 11:12

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

Dienstag 16. Dezember 2008, 20:36

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:

Donnerstag 18. Dezember 2008, 00:37

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 18. Dezember 2008, 01:00

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 Modvoice
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

Samstag 20. Dezember 2008, 19:18

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

Sonntag 11. Januar 2009, 11:37

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 11. Januar 2009, 12:07

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 Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sonntag 11. Januar 2009, 12:12

Code: Alles auswählen

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

Sonntag 11. Januar 2009, 12:59

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 11. Januar 2009, 13:09

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 Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Sonntag 11. Januar 2009, 13:15

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:
Antworten