python lernen zum xten....

Gute Links und Tutorials könnt ihr hier posten.
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

Hi leute, ich hab den weg zu euch gefunden um, wie sollte es auch anders sein, python zu lernen ;)

Grund dafür ist, dass ich an der UNI nun mit python 2.5 arbeite(-n muss) beim kurzen inet durchstöbern ist mir aufgefallen, dass python ja doch eine sprache ist, die es lohnt genauer zu beherrschen, nicht nur so 0815 wie wir es beigebracht bekommen, deshalb wollte ich euch jetzt mal fragen, welches tutorial ihr empfehlt....was sind meine ziele?...nun im großen und ganzen will ich eigentlich die grundkenntnisse von python richtig gut beherrschen (hab von a dive into python und ähnliches gehört!?) zum anderen will ich aber auch weiterführendes wie website programmierung und auch 3d Programmierung versuchen (betonung liegt auf versuchen) und wenn es funzt, dann natürlich auch weiter ausbauen, aber auf der suche nach einem tut was das alles einschließt (mal abgesehen von "Python von Peter Kaiser" bei galileo computing) hab ich nix gefunden.

ich bring natürlich auch erfahrungen mit (hätt ich ja fast vergessen) 5 Jahre hab ich mit Delphi 6 gearbeitet (wer es nicht kennt basiert eig auf pascal) und mit Html hab ich mich auch ein wenig beschäftigt.

vlt gibt es ja ein tut, was gaaaaaanz zufällig erklärt wie man von delphi auf python ganz easy umsteigen kann ;) ok wohl eher nicht^^

wär jedenfalls schön wenn ihr mir bischen weiterhelfen könnt

MfG Fantacoca....der erfrischende genuss^^
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Ein guter Einstiegspunkt ist das offizielle Tutorial. Das solltest du auch wirklich verstehen und nicht alles per Copy&Paste nur ausprobieren.

Das gibt es auch noch in deutscher Übersetzung. Weiter arbeiten kannst du dann mit A Byte of Python oder Dive Into Python.

Am meisten Lernst du natürlich durch kleine Projekte oder Aufgaben. Wenn du Fragen hast oder dir etwas zu umständlich erscheint, dann weißt du ja jetzt, wo du fragen kannst ;-)

Sebastian

Edit: So hübsch das Buch von Galileo Computing auch aussehen mag, es ist wirklich nicht zu empfehlen. Es enthält eine Menge Fehler und beschreibt eher Java-Programmierung mit Python.
Das Leben ist wie ein Tennisball.
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

Vielen Danke für die schnelle Antwort, ich werde mich demnächst (sofort) ranmachen auszuprobieren, kleinere Aufgaben hab ich ja hier im Forum gefunden, wo es diese 250 stück Sammlung von Mathe aufgaben gibt, ich weiss grad ne mehr wie der thread heißt^^ aber dort kann man bestimmt auch einiges lernen (=

danke nochmal
MfG Fantacoca
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Fantacoca hat geschrieben:wo es diese 250 stück Sammlung von Mathe aufgaben gibt, ich weiss grad ne mehr wie der thread heißt^^ aber dort kann man bestimmt auch einiges lernen (=
Projekt Euler: http://projecteuler.net/

Nein, da lernst du eigentlich so gut wie gar nichts über Python. Da geht es eher um Mathematik und Algorithmen und da du andere Lösungen einer Aufgabe erst dann zu Gesicht bekommst, wenn du die Aufgabe selbst gelöst hast (oder den einzugebenden Wert sonstwoher hast ...), hilft das auch nicht viel.

Lernen kannst du, indem du das/ein Tutorial wirklich durchARBEITEST. Viel im interaktiven Modus experimentierst etc.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

numerix hat geschrieben:Lernen kannst du, indem du das/ein Tutorial wirklich durchARBEITEST. Viel im interaktiven Modus experimentierst etc.
Und am besten hier im Forum mitliest, hin und wieder ist da ein sehr lohnenswerter Beitrag dabei (wenn man keine Ahnung von Python hat ist die Frequenz natuerlich groesser ;) )

Und mal ein dezenter Hinweis auf PEP 8 :)
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

@numerix:
genau projekt euler wars^^...aber denkst du nicht, dass ein python"noob", beim lösen dieser aufgaben einen mindestens so großen lerneffekt für python hat (da er sich ja die komplette syntax zusammensuchen muss) wie auch für mathe?

@cofi

dieses PEP-8 hab ich so als regelwerk für python, aber nicht als tutorial verstanden, ist dass richtig?


edit1: Beim durcharbeiten des Tuts, fällt mir auf, dass ein user, der ahnung von der Syntax hat, und an eine Konsole rankommt, doch alles im Programm ändern kann, während des laufenden Programms......ist dass denn nicht gefährlich auch für die Stabilität des Programms? oder geht man mal in die Spiele Richtung, da ist doch für jeden das "Cheaten" schon "vorprogrammiert" ? oder seh ich da jetzt was falsch^^

edit2: Mensch mir tun sich schonwieder fragen auf ;) ... ist dass gut oder schlecht? ^^
jedenfalls fällt mir auf, dass es python "wurst" ist, für was ich eine Variable nehme, und auch nicht vordefinieren muss für was die variable da ist? also bei delphi kenn ich es noch "var x,y,z: int" und dann ging dass auch nur für integer....aber beim interaktiven modus durch"spielen" ist mir aufgefallen, dass ich einmal a = "irgendnen string" sagen kann, aber anschließend auch gleich wieder a = 5+2 sagen kann....geht dass nur im interaktiven modus?

MfG Fantacoca
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Fantacoca hat geschrieben:@numerix:
genau projekt euler wars^^...aber denkst du nicht, dass ein python"noob", beim lösen dieser aufgaben einen mindestens so großen lerneffekt für python hat (da er sich ja die komplette syntax zusammensuchen muss) wie auch für mathe?
Die Euler-Aufgaben sind so, dass man bei normaler mathematischer Begabung so um die 50 Aufgaben relativ geradlinig und zügig lösen kann, aber irgendwann erreichen die Aufgaben ein mathematisches Level, wo es anfängt zu schmerzen.
Diejenigen Aufgaben, die man ad hoc lösen kann, lassen sich aber wiederum meist mit wenigen Zeilen Code lösen und man kommt dabei mit einem sehr schmalen Bereich der Möglichkeiten von Python aus. Fazit: Python lernen kann man mit Euler eigentlich nicht.

Der Rest deiner Fragen ist so, dass ich eigentlich nur erneut darauf hinweisen kann, dass du dich weiterhin mit dem Tutorial beschäftigen solltest. Gemerkt hast du ja schon, dass Python dynamisch typisiert ist, anders als z.B. Pascal/Delphi ...
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Nein, das ist eine Eigenart der Sprache, geht also überall. Man muß ein wenig aufpassen, gewinnt dadurch jedoch eine ganze Menge Flexibilität und spart sich eine Menge Schreibarbeit. Zu dem Thema gehört auch, daß es eher unüblich ist, auf bestimmte Typen zu testen. Stattdessen geht man davon aus, daß alles in Ordnung ist, solange sich das betrachtete Objekt so *verhält* wie der erwartete Typ. Das Stichwort hierzu ist "Duck-Typing" (Quakt wie eine Ente, watschelt wie eine Ente, also wird es wohl eine Ente sein).

Deinen ersten Nachtrag habe ich, wie ich glaube, nicht so recht verstanden: Änderungen am Quelltext werden erst nach einem Neustart des Programmes übernommen. Es ist also definitiv kein Stabilitätsproblem.
Daß Nutzer, die Schreibzugriff auf den Quelltext haben, diesen verändern können ist durchaus "natürlich". Wenn man mit Python (und eigentlich allen anderen Sprachen auch) arbeitet, sollte man sich von der Idee verabschieden, die Funktionsweise verheimlichen zu können. Es gibt hierzu schier endlose Diskussionen hier im Forum. Insbesondere die Fraktion, die immerzu .exe-Dateien erzeugen will, stößt diese Diskussionen regelmäßig an. Um es kurz zu machen: Es gibt keine wirklich praktikable Lösung. Man kann den Nutzern ein paar Steine in den Weg legen, aber das wars dann auch schon. Und will man die Nutzer wirklich dermaßen bevormunden?
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Fantacoca hat geschrieben:edit1: Beim durcharbeiten des Tuts, fällt mir auf, dass ein user, der ahnung von der Syntax hat, und an eine Konsole rankommt, doch alles im Programm ändern kann, während des laufenden Programms......
Während des laufenden Programmes kann man den Code nicht ändern, es ist dann ein Neustart fällig. Aber Cheater werden immer Wege finden, bis sie merken, dass das Spiel dadurch langweilig wird.
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

danke nochmal an euch drei, jedenfalls sind meine fragen damit behoben (=

wahrscheinlich lernt man eine sprache doch nicht allein durch ein tutorial, man muss sich wahrscheinlich ein "problem" stelen, und dieses mit hilfe des tutorials (zum beispiel als nachschlagewerk) lösen...oder lesen und lösen und nachschlagen ach wie auch immer, ich begeb mich mal auf die suche nach einem guten, einfachen, aber umfangreichen thema ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Fantacoca hat geschrieben:aber denkst du nicht, dass ein python"noob", beim lösen dieser aufgaben einen mindestens so großen lerneffekt für python hat (da er sich ja die komplette syntax zusammensuchen muss) wie auch für mathe?
Also wenn du meinst dass Sprache lernen = Syntax kennen ist dann muss ich dich enttäuschen, da steht wesentlich mehr dahinter. Sonst könnte man ja Factor oder Scheme in 1 Stunde lernen, dem ist aber nicht so.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

http://www.pythonchallenge.com/ gibt's auch noch. Der Knackpunkt der Aufgaben ist zwar vor allem Knobelei, aber man lernt viele verschiedene Bibliotheken kennen, und die Musterloesungen sind sehr lehrreich.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Leonidas hat geschrieben:... oder Scheme in 1 Stunde lernen, dem ist aber nicht so.
Echt? Du hast länger gebraucht? :twisted: SCNR
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

PEP 8 ist ein Styleguide. Wenn man sich an ihn haelt schreibt man a) lesbare b) konsistente (-> bessere) und c) schoenere Programme (auf Codeebene).

@Nachtrag2 (und bitte Packe mehrere Fragen in mehrere Topics, wenn sie groesser sind):
Python ist es ueberhaupt nicht egal, welchen Typ ein Objekt hat, Python ist es aber komplett Wurst, welcher Zettel an welchem Objekt klebt.
Python-"variablen" kann man sich nicht wie in C oder Delphi als Schublade vorstellen, in die Werte eingefuellt werden, sondern Pythonnamen (um mal von dem irrefuehrend bis falschen Begriff wegzukommen) sind wie Post-its. Bspw koennen auch mehrere Namen auf dasselbe Objekt verweisen.
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

Hi leute, ich hab versucht ein Programm (natürlich nicht das erste) aus dem tutorial einzutippen, aber immer beim ausführen kommt immer nen Fehler, und den versteh ich nicht....vlt könnt ihr mir ja helfen? :_bitte_:

Code: Alles auswählen

def ask_ok(prompt, retries=4, complaint='Bitte Ja oder Nein!'):
   while True:
       ok = input(prompt)
       if ok in ('j', 'J', 'ja', 'Ja'): return True
       if ok in ('n', 'N', 'ne', 'Ne', 'Nein'): return False
       retries = retries - 1
       if retries < 0:
           raise IOError('Benutzer abgelehnt!')
       print(complaint)
und mit folgender zeile soll das ganze aufgerufen werden

Code: Alles auswählen

ask_ok("Willst du wirklich aufhören?")
aber es kommt immer folgende fehlermeldung

Code: Alles auswählen

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "<interactive input>", line 3, in ask_ok
  File "<string>", line 471, in Win32Input
  File "<string>", line 464, in Win32RawInput
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 23: ordinal not in range(128)
das Programm hab ich in "PyScripter" eingegeben

wenn ich alles in die Konsole eingeb, dann kommt auch ein fehler aber den hab ich jetzt nicht im kopf...falls ihr den auch braucht, sagt bitte bescheid

PS: das Beispiel ist aus dem Python tutorial (oben verlinkt) auf deutsch, kapitel 4.7.1; und ich benutze python 2.5.2 ... liegts an der version? dass der irgendwas nicht kennt? ... *_grml_*

MfG Fantacoca
Zuletzt geändert von Fantacoca am Sonntag 18. Oktober 2009, 10:54, insgesamt 2-mal geändert.
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Benutze als Parameter für den Aufruf von 'ask_ok' erst einmal einen String ohne Umlaute. Und dann mache dich mit Python und der Unicode-Problematik vertraut.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Pekh hat geschrieben:Benutze als Parameter für den Aufruf von 'ask_ok' erst einmal einen String ohne Umlaute. Und dann mache dich mit Python und der Unicode-Problematik vertraut.
Kann ich nur unterstuetzen, Leonidas hat auch einen sehr empfehlenswerten Vortrag dazu gehalten: http://xivilization.net/flyserver/tex/u ... nicode.pdf

Die Version ist aber durchaus ein Problem, denn das Tutorial ist fuer Python3.1 geschrieben/uebersetzt. Die Unterschiede zu Python2.x bzw Python 2.5 sind alles andere als vernachlaessigbar.
Du solltest entweder den Interpreter oder das Tutorial wechseln.
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

danke für die hinweise, dass mit dem umlaut hab ich so garnicht wahrgenommen, hab mir jetzt ein deutsches tut für python 2.4 geholt (http://wspiegel.de/pykurs/kurs_index.htm) danke nochmals
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Fantacoca hat geschrieben:hab mir jetzt ein deutsches tut für python 2.4 geholt (http://wspiegel.de/pykurs/kurs_index.htm) danke nochmals
Davon ist abzuraten, nicht, dass es nicht gut waere, aber es behandelt weit weniger, als das offizielle und erklaert es nicht sonderlich ausfuehrlich, dafuer wird Ueberfluessiges wie Struktugramme und UML behandelt.

Was spricht denn gegen einen 3.1 Interpreter?
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

gegen 3.1 spricht an und für sich nichts :oops: außer dass wir an der uni nur mit maximal 2.6 schreiben dürfen (weil angeblich einige bibliotheken noch nicht für 3.x vorhanden sind, oder unsere admins zu faul sind diese einzubinden) deshalb dachte ich ich mach mich, solang iches an der uni brauch, erstmal mit 2.6 vertraut....oder ist der unterschied "eher" gering, sodass ich trotzdem in 2.x schreiben könnte?
Antworten