Python-Fortschrittspfad - Vom Lehrling zum Guru

659

Ich lerne, arbeite und spiele seit anderthalb Jahren mit Python. Als Biologe, der sich langsam der Bioinformatik zuwendet, war diese Sprache der Kern aller wichtigen Beiträge, die ich im Labor geleistet habe. Ich habe mich mehr oder weniger in die Art und Weise verliebt, wie Python es mir ermöglicht, schöne Lösungen auszudrücken, und auch in die Semantik der Sprache, die einen so natürlichen Fluss von Gedanken zu praktikablem Code ermöglicht.

Was ich gerne wissen würde, ist Ihre Antwort auf eine Art Frage, die ich in diesem oder anderen Foren selten gesehen habe. Diese Frage scheint mir für jeden von zentraler Bedeutung zu sein, der sich auf dem Weg zur Verbesserung von Python befindet, sich aber fragt, wie seine nächsten Schritte aussehen sollen.

Lassen Sie mich zusammenfassen, was ich NICHT zuerst fragen möchte;)

  • Ich möchte nicht wissen, wie man Python SCHNELL lernt
  • Ich möchte auch nicht herausfinden, wie ich die Sprache am besten kennenlernen kann
  • Schließlich möchte ich keinen "One Trick, der alles macht" -Ansatz kennen.

Was ich über Ihre Meinung wissen möchte, ist:

Was sind die Schritte, die SIE einem Python-Gesellen empfehlen würden, von der Ausbildung bis zum Guru-Status (Sie können jederzeit dort anhalten, wo es Ihr Fachwissen vorschreibt), damit Sie Schritt für Schritt zu einem immer besseren Python-Codierer werden. Einige der Leute auf SO scheinen für ihre Python-Fähigkeiten fast der Anbetung würdig zu sein, bitte klären Sie uns auf :)

Die Art der Antworten, die ich genießen würde (aber die Leserschaft gerne überraschen würde: P), ist mehr oder weniger so formatiert:

  • Lesen Sie dies (z. B. Python-Tutorial) und achten Sie auf diese Art von Details
  • Code für so viele Zeiten / Probleme / Codezeilen
  • Lesen Sie dann dies (z. B. dieses oder jenes Buch), aber achten Sie diesmal darauf
  • Bewältigen Sie einige Probleme im wirklichen Leben
  • Fahren Sie dann mit Lesen von Y fort.
  • Stellen Sie sicher, dass Sie diese Konzepte verstehen
  • Code für X-Zeit
  • Kommen Sie auf diese und jene Grundlagen zurück oder gehen Sie weiter zu ...
  • (Du verstehst, worum es geht :)

Es ist mir wirklich wichtig, Ihre Meinung darüber zu kennen, worauf man in verschiedenen Phasen genau achten sollte, um STÄNDIG voranzukommen (natürlich mit gebührenden Anstrengungen). Wenn Sie aus einem bestimmten Fachgebiet stammen, besprechen Sie den Pfad, den Sie in diesem Bereich für angemessen halten.

EDIT: Dank Ihrer großartigen Beiträge bin ich wieder auf dem Python-Verbesserungspfad! Ich schätze wirklich!

Morlock
quelle

Antworten:

471

Ich dachte, der Prozess der Python-Meisterschaft lief ungefähr so ​​ab:

  1. Entdecken Sie Listenverständnisse
  2. Generatoren entdecken
  3. Integrieren Sie Map, Reduce, Filter, Iter, Range und Xrange häufig in Ihren Code
  4. Entdecken Sie Dekorateure
  5. Schreiben Sie viel rekursive Funktionen
  6. Entdecken Sie itertools und functools
  7. Lesen Sie Real World Haskell ( kostenlos online lesen )
  8. Schreiben Sie Ihren gesamten alten Python-Code mit unzähligen Funktionen höherer Ordnung, Rekursion und so weiter neu.
  9. Ärgern Sie Ihre Kollegen in der Kabine jedes Mal, wenn sie Ihnen eine Python-Klasse präsentieren. Behaupten Sie, es könnte "besser" als Wörterbuch plus einige Funktionen implementiert werden. Umfassen Sie funktionale Programmierung.
  10. Entdecken Sie das Strategiemuster und dann all diese Dinge aus dem imperativen Code wieder, den Sie nach Haskell so sehr vergessen haben.
  11. Finde ein Gleichgewicht.
Wheaties
quelle
@ Wheaties Super schöne Liste, liebe es! Sie scheinen eine Tendenz zur funktionalen Programmierung zu haben und nicht objektorientiert zu sein ... gibt es einen bestimmten Grund? Hat Sie die Erfahrung mit Haskell zu diesem Ansatz umgeleitet?
Morlock
8
Ja und nein. Ich finde, ich schreibe besseren und prägnanteren Code, je näher ich der funktionalen Programmierung komme. Es gibt jedoch viele Orte, an denen die Dinge auf zwingende Weise klarer ausgedrückt werden. Es gibt einen Grund, warum Real World Haskell bei Python-Konventionen ausverkauft ist. Es macht Sie zu einem besseren Programmierer. Mein Rat: Erkunden Sie so viele Facetten von Python wie möglich und probieren Sie dann eine funktionale Sprache aus.
Wheaties
@wheaties erhält die Antwort, da es sowohl näher am gewünschten Format als auch sehr inspirierend ist. Vielen Dank, dass Sie sich die Zeit genommen haben, um zu antworten!
Morlock
1
Anfänger: Wörterbuch dann später ... Meisterschaft: Metaprogrammierung
gath
Könnten Sie näher darauf eingehen, >> ob es "besser" als Wörterbuch und mit einigen Funktionen implementiert werden könnte. <<?
Koobz
108

Eine gute Möglichkeit, Ihr Python-Wissen zu erweitern, besteht darin , den Quellcode der Bibliotheken, Plattformen und Frameworks zu durchsuchen, die Sie bereits verwenden.

Wenn Sie beispielsweise eine Site auf Django erstellen, können viele Fragen, die Sie möglicherweise stören, beantwortet werden, indem Sie sich ansehen, wie Django die betreffende Funktion implementiert.

Auf diese Weise lernen Sie weiterhin neue Redewendungen, Codierungsstile und Python-Tricks kennen . (Einige werden gut und andere schlecht sein.)

Und wenn Sie etwas Pythony sehen, das Sie in der Quelle nicht verstehen, gehen Sie zum # Python-IRC-Kanal und Sie werden viele "Sprachanwälte" finden , die Ihnen gerne erklären.

Eine Anhäufung dieser kleinen Klarstellungen über Jahre hinweg führt zu einem viel tieferen Verständnis der Sprache und all ihrer Vor- und Nachteile.

Dkamins
quelle
1
Ich würde hinzufügen, dass anstatt einfach eine Django-Erweiterung / ein Django-Plugin zu installieren, versuchen Sie, den Code manuell über einen Git-Zweig hinzuzufügen. Dadurch werden Sie gezwungen, den Code, den Sie dem Projekt hinzufügen, tatsächlich zu lesen .
g33kz0r
14
Ich bin neugierig, warum ich IRC verwenden sollte, wenn der Rest von uns von der Frage profitieren könnte.
Tshepang
1
+1 für "Redewendungen, Stile und Tricks". Eine echte KULTUR zu leben, die von echten Kontaktpersonen geschaffen wurde (auch wenn dieser Kontakt in diesem Fall bedeutet, dass sie meistens den Code des anderen lesen), hat das menschliche Wissen im Laufe der Zeit immer weiterentwickelt.
Heltonbiker
92

Verstehen Sie (genauer) die Datentypen von Python und ihre Rollen in Bezug auf die Speicherverwaltung

Wie einige von Ihnen in der Community wissen, unterrichte ich Python-Kurse . Die beliebtesten sind der umfassende Intro + Intermediate-Kurs sowie ein "Fortgeschrittenenkurs", der eine Vielzahl von Bereichen der Anwendungsentwicklung einführt.

Sehr oft wird mir eine ähnliche Frage gestellt: "Soll ich an Ihrem Intro oder Fortgeschrittenenkurs teilnehmen? Ich habe Python bereits seit 1-2 Jahren programmiert, und ich denke, das Intro ist mir zu einfach, also würde ich es tun." springe gerne direkt zum Fortgeschrittenen ... welchen Kurs würdest du empfehlen? "

Um ihre Frage zu beantworten, prüfe ich, wie stark sie in diesem Bereich sind - nicht, dass dies wirklich der beste Weg ist, um zu messen, ob sie für einen fortgeschrittenen Kurs bereit sind, sondern um zu sehen, wie gut ihr Grundwissen über Pythons Objekte und Speichermodell, das eine Ursache für viele Python-Fehler ist, die von Nicht-Anfängern geschrieben wurden, sondern auch von denen, die darüber hinausgegangen sind.

Dazu zeige ich sie auf diese einfache zweiteilige Quizfrage: Beispiel 1: x = 42;  y = x;  x + = 1;  drucke x, y Bsp. 2: x = [1,2,3]; y = x; x [0] = 4; drucke x, y

Oft sind sie in der Lage, die Ausgabe zu erhalten, aber das Warum ist schwieriger und viel wichtiger für eine Antwort ... Ich würde die Ausgabe als 20% der Antwort abwägen, während das "Warum" 80% Kredit erhält. Wenn sie nicht verstehen können, warum, unabhängig von ihrer Python-Erfahrung, werde ich die Leute immer zum umfassenden Intro + Intermediate-Kurs führen, da ich eine Vorlesung über Objekte und Speicherverwaltung bis zu dem Punkt verbringe, an dem Sie mit dem antworten können sollten Ausgabe und das Warum mit ausreichendem Vertrauen. (Nur weil Sie die Syntax von Python nach 1-2 Jahren kennen, sind Sie erst dann bereit, über ein "Anfänger" -Label hinauszugehen, wenn Sie ein besseres Verständnis dafür haben, wie Python unter dem Deckmantel funktioniert.)

Eine nachfolgende Anfrage, die eine ähnliche Antwort erfordert, ist noch schwieriger, z.

Beispiel 3

x = ['foo', [1,2,3], 10.4]
y = list(x) # or x[:]
y[0] = 'fooooooo'
y[1][0] = 4
print x
print y

Die nächsten Themen, die ich empfehle, sind das Verstehen des Referenzzählens, das Erlernen der Bedeutung von "Internieren" (aber nicht unbedingt das Verwenden), das Erlernen flacher und tiefer Kopien (wie in Beispiel 3 oben) und schließlich die Wechselbeziehungen zwischen den verschiedenen Typen und Konstrukte in der Sprache, dh Listen gegen Tupel, Diktate gegen Mengen, Listenverständnis gegen Generatorausdrücke, Iteratoren gegen Generatoren usw.; Alle diese anderen Vorschläge sind jedoch ein anderer Beitrag für eine andere Zeit. Hoffe das hilft in der Zwischenzeit! :-)

ps. Ich stimme den anderen Antworten zu, um die Selbstbeobachtung zu vertiefen, den Quellcode anderer Projekte zu studieren und beiden Vorschlägen ein starkes "+1" hinzuzufügen!

pps. Gute Frage übrigens. Ich wünschte, ich wäre am Anfang klug genug gewesen, um so etwas zu fragen, aber das ist lange her, und jetzt versuche ich, anderen bei meiner langjährigen Vollzeit-Python-Programmierung zu helfen !!

wescpy
quelle
Wesley Chun! Morlock, das ist der Typ, über den Sie im kühnen Teil Ihrer Frage gesprochen haben. Als zutiefst sachkundiger Mann, der auch ein sehr begabter Lehrer ist, hat mir das Buch einen enormen Auftrieb gegeben.
unmounted
Danke @bvmou! Ich konnte diese Frage nur beantworten, weil ich diesen Lernprozess wie alle anderen durchlaufen musste ... nur meiner war vor 13 Jahren! :-) Danke für das Einstecken von corepython.com tho! :-)
wescpy
@wescpy Kannst du mir die Ausgabe für Beispiel3 erklären oder mich auf eine gute Ressource verweisen, um dieses Zeug zu lernen? Danke.
Sankalp
1
Der Trick ist, dass nur Objektreferenzen kopiert werden, nicht die Objekte selbst. Das ist alles was es gibt ... hoffe es hilft! Ich habe vor ein paar Wochen bei OSCON einen Vortrag darüber gehalten. Ich war angenehm überrascht, als mir jemand sagte, es sei das bestbewertete Python-Gespräch auf der Konferenz! Sie können die Folien hier herunterladen: oscon.com/oscon2013/public/schedule/detail/29374
wescpy
Die Ausgabe ist SyntaxError: ungültige Syntax, nicht wahr? Warum? Weil ich Python 3 verwendet habe und printkeine Aussage ist.
Konrad Borowski
67

Lesen Sie den Aufsatz von Peter Norvig über das Werden eines Programmiermeisters in 10 Jahren: http://norvig.com/21-days.html . Ich würde wetten, dass dies für jede Sprache gilt.

twneale
quelle
59

Introspektion verstehen

  • schreibe ein dir()Äquivalent
  • schreibe ein type()Äquivalent
  • finde heraus, wie man "Affen-Patch"
  • Verwenden Sie das disModul, um zu sehen, wie verschiedene Sprachkonstrukte funktionieren

Diese Dinge zu tun wird

  • Geben Sie einige gute theoretische Kenntnisse darüber, wie Python implementiert wird
  • Geben Sie einige gute praktische Erfahrungen in der Programmierung auf niedrigerer Ebene
  • geben Ihnen ein gutes intuitives Gefühl für Python-Datenstrukturen
Mark Harrison
quelle
1
"Schreiben Sie ein type()Äquivalent", das wäre sehr schwierig, wenn Sie die vollständige Metaclassy-Spezifikation von nehmen würden type!
Asmeurer
48
def apprentice():
  read(diveintopython)
  experiment(interpreter)
  read(python_tutorial)
  experiment(interpreter, modules/files)
  watch(pycon)

def master():
  refer(python-essential-reference)
  refer(PEPs/language reference)
  experiment()
  read(good_python_code) # Eg. twisted, other libraries
  write(basic_library)   # reinvent wheel and compare to existing wheels
  if have_interesting_ideas:
     give_talk(pycon)

def guru():
  pass # Not qualified to comment. Fix the GIL perhaps?
amit
quelle
4
Guru () sollte bestanden werden. nichts kann Guru beschreiben, lassen Sie es passieren
inv
1
Wenn Sie die GIL reparieren, dann sind Sie meiner Meinung nach auf einem höheren Niveau als der Guru, aber knapp unter dem wohlwollenden Diktator. ;)
Adam Parkin
41

Ich gebe Ihnen den einfachsten und effektivsten Rat, den Ihnen wohl jeder geben kann: Code .

Sie können eine Sprache nur durch Codierung besser verwenden (was bedeutet, dass Sie sie verstehen) . Sie müssen aktiv Spaß am Codieren haben, sich inspirieren lassen, Fragen stellen und selbst Antworten finden.

Hast du eine Stunde Zeit? Schreiben Sie Code, der eine Zeichenfolge umkehrt, und finden Sie die optimale Lösung heraus. Ein freier Abend? Warum versuchen Sie es nicht mit Web-Scraping? Lesen Sie den Code anderer Leute. Sehen Sie, wie sie Dinge tun. Fragen Sie sich, was Sie tun würden.

Wenn mir an meinem Computer langweilig ist, öffne ich meine IDE und den Code-Storm. Ich schreibe Ideen auf, die interessant und herausfordernd klingen. Ein URL-Shortener? Klar, das kann ich machen. Oh, ich habe gelernt, wie man als Nebeneffekt Zahlen von einer Basis in eine andere umwandelt!

Dies gilt unabhängig von Ihrem Kenntnisstand. Du hörst nie auf zu lernen. Wenn Sie in Ihrer Freizeit aktiv programmieren, werden Sie mit wenig zusätzlichem Aufwand die Sprache verstehen und letztendlich ein Guru. Sie bauen Wissen und wiederverwendbaren Code auf und merken sich Redewendungen.

Humphrey Bogart
quelle
24

Wenn Sie Python für die Wissenschaft verwenden und verwenden (was Sie anscheinend sind), wird ein Teil davon darin bestehen, wissenschaftliche Bibliotheken zu lernen und zu verstehen, für mich wären dies

  • numpy
  • scipy
  • matplotlib
  • Mayavi / mlab
  • Chaco
  • Cython

Für das wissenschaftliche Rechnen ist es wichtig zu wissen, wie man die richtigen Bibliotheken verwendet und Ihren Code vektorisiert.

Ich wollte hinzufügen, dass der Umgang mit großen numerischen Datensätzen auf gängige pythonische Weise (objektorientierte Ansätze, Listen, Iteratoren) äußerst ineffizient sein kann. Beim wissenschaftlichen Rechnen kann es erforderlich sein, Ihren Code so zu strukturieren, dass er sich drastisch von der Herangehensweise der meisten herkömmlichen Python-Codierer an Daten unterscheidet.

Benutzer503635
quelle
Vielen Dank. Es lohnt sich auf jeden Fall, sich Zeit zu nehmen, um Numpy und Scipy zu lernen, um die Speichernutzung für große Datenmengen effizienter zu gestalten!
Morlock
1
Fügen Sie wahrscheinlich Pandas und IPython zur Liste hinzu.
Eric Wilson
20

Laden Sie Twisted herunter und sehen Sie sich den Quellcode an. Sie verwenden einige ziemlich fortgeschrittene Techniken.

Jason Christa
quelle
12

Alle Datentypen und -strukturen gründlich verstehen

Schreiben Sie für jeden Typ und jede Struktur eine Reihe von Demoprogrammen, die jeden Aspekt des Typs oder der Datenstruktur ausführen. Wenn Sie dies tun, kann es sich lohnen, Notizen zu jedem einzelnen zu bloggen ... es könnte für viele Menschen nützlich sein!

Mark Harrison
quelle
Dies wäre nicht nur in Python nützlich, sondern auch im abstrakten Sinne.
Humphrey Bogart
1
Dies ist etwas, was ich auch mache, wenn ich ein neues Konstrukt finde, schreibe ich ein Spielzeugprogramm, das zeigt, wie man es benutzt. Und stellen Sie es online in einem Github-Repo: github.com/pzelnip/MiscPython
Adam Parkin
10

Ich habe Python über einen Sommer zuerst selbst gelernt, indem ich das Tutorial auf der Python-Site gemacht habe (leider kann ich das nicht mehr finden, daher kann ich keinen Link posten).

Später wurde mir Python in einem meiner ersten Studienjahre an der Universität beigebracht. Im folgenden Sommer habe ich mit PythonChallenge und mit Problemen von Google Code Jam geübt . Das Lösen dieser Probleme hilft sowohl aus algorithmischer Sicht als auch aus der Perspektive, zu lernen, was Python kann und wie man es manipuliert, um das Beste aus Python herauszuholen.

Aus ähnlichen Gründen habe ich gehört, dass Code Golf auch funktioniert, aber ich habe es nie selbst ausprobiert.

inspectorG4dget
quelle
3
Du meinst dieses Tutorial? Python 2: docs.python.org/tutorial/index.html ; Python 3: docs.python.org/py3k/tutorial/index.html .
Humphrey Bogart
10

Lernalgorithmen / Mathematik / Datei-E / A / Pythonic-Optimierung

Dies wird Sie nicht zum Guru machen, aber um zu beginnen, versuchen Sie, die Project Euler-Probleme zu lösen. Die ersten 50 oder so sollten Sie nicht besteuern, wenn Sie eine anständige High-School-Mathematik haben und wissen, wie man Google. Wenn Sie eine lösen, gelangen Sie in das Forum, in dem Sie die Lösungen anderer Leute durchsehen können, die Ihnen noch mehr beibringen. Seien Sie jedoch anständig und veröffentlichen Sie Ihre Lösungen nicht, da die Idee darin besteht, die Leute zu ermutigen, es selbst auszuarbeiten.

Wenn Sie Brute-Force-Algorithmen verwenden, ist es unversöhnlich, sich zu zwingen, in Python zu arbeiten. Auf diese Weise lernen Sie, wie Sie große Datenmengen im Speicher anordnen und mit den schnellen Sprachfunktionen wie Wörterbüchern effizient darauf zugreifen können.

Dadurch habe ich selbst gelernt:

  • Datei IO
  • Algorithmen und Techniken wie die dynamische Programmierung
  • Python-Datenlayout
    • Wörterbücher / Hashmaps
    • Listen
    • Tupel
    • Verschiedene Kombinationen davon, z. B. Wörterbücher zu Tupellisten
  • Generatoren
  • Rekursive Funktionen
  • Python-Bibliotheken entwickeln
    • Dateisystem-Layout
    • Laden Sie sie während einer Dolmetschersitzung neu

Und auch sehr wichtig

  • Wann aufgeben und C oder C ++ verwenden!

All dies sollte für die Bioinformatik relevant sein

Zugegeben, ich habe aus dieser Erfahrung nichts über die OOP-Funktionen von Python gelernt.

Kapitän Lepton
quelle
3
Ich mag die PE-Site, aber seien wir ehrlich: Es ist eine Mathe-Site, keine Programmier-Site. Die meisten Probleme (oder zumindest die meisten, die ich gemacht habe) laufen darauf hinaus, ein paar Mathe-Tricks zu kennen als alles, was mit Programmiersprachen zu tun hat. Oft werden die guten Lösungen in den Foren von den Wellen naiver Lösungen usw. übertönt.
Adam Parkin
Im Gegenteil, ich stellte fest, dass es sowohl um die Anwendung von Programmier- als auch um Mathematikfähigkeiten und vor allem um die Kombination der beiden ging , um echte Probleme zu lösen. Sie können PE nicht zum Erlernen der Python-Programmierung verwenden, wenn Sie über schlechte Mathematikkenntnisse verfügen, aber Sie werden nur lernen, wie man eine Sprache verwendet, indem Sie sie verwenden. Daher ist es ideal, wenn Ihre Mathematik gut genug ist.
Kapitän Lepton
7

Haben Sie das Buch " Bioinformatik-Programmierung mit Python " gesehen? Sieht so aus, als wären Sie ein genaues Mitglied der Fokusgruppe.

Tim Pietzcker
quelle
2
Nachdem ich vor einiger Zeit das Buch schnell durchgesehen hatte, stellte ich fest, dass dieses Buch nicht sehr interessant ist. Es richtet sich an sehr unerfahrene Python-Benutzer und die Probleme selbst sind nicht besonders interessant. Schade, dies ist eindeutig ein Bereich, in dem die Verwendung von Python zunimmt. Ein anregenderes Buch wäre großartig gewesen.
Morlock
6

Sie haben bereits viel Lesematerial, aber wenn Sie mehr verarbeiten können, empfehlen wir Ihnen, sich über die Entwicklung von Python zu informieren, indem Sie die Vorschläge zur Python-Verbesserung lesen, insbesondere die "fertigen" PEPs und die "Zurückgestellten, Verlassenen, Zurückgezogenen und Abgelehnten". PEPs.

Wenn Sie sehen, wie sich die Sprache geändert hat, welche Entscheidungen getroffen wurden und welche Gründe sie haben, werden Sie die Philosophie von Python aufgreifen und verstehen, wie "idiomatisches Python" entsteht.

http://www.python.org/dev/peps/

Greg Ball
quelle
3

Jemand anderem beizubringen, der anfängt, Python zu lernen, ist immer eine großartige Möglichkeit, Ihre Ideen klar zu machen, und manchmal bekomme ich viele nette Fragen von Schülern, die mich dazu bringen, konzeptionelle Dinge über Python zu überdenken.

Marc-Olivier Titeux
quelle
2

Nicht genau das, wonach Sie fragen, aber ich denke, es ist ein guter Rat.

Lerne eine andere Sprache, spielt keine Rolle, welche. Jede Sprache hat ihre eigenen Ideen und Konventionen, aus denen Sie lernen können. Erfahren Sie mehr über die Unterschiede in den Sprachen und vor allem sind whysie unterschiedlich. Probieren Sie eine rein funktionale Sprache wie Haskell aus und sehen Sie einige der Vorteile (und Herausforderungen) von Funktionen, die frei von Nebenwirkungen sind. Sehen Sie, wie Sie einige der Dinge, die Sie aus anderen Sprachen lernen, auf Python anwenden können.

Davy8
quelle
1
Haskell ist faszinierend und ich bin von Lisp angezogen, aber ich habe das Gefühl, dass es in der Python-Welt noch viel zu entdecken gibt, bevor ich weitermachen möchte.
Morlock
2
landoflisp (.com) hat kürzlich meine Aufmerksamkeit erregt.
Jiaaro
Wenn jemand an Lisp denkt, empfehle ich Schema
Tharindu Rusira
2

Ich empfehle, mit etwas zu beginnen, das Sie dazu zwingt, die Ausdruckskraft der Syntax zu erkunden. Python ermöglicht viele verschiedene Arten, dieselbe Funktionalität zu schreiben, aber es gibt oft einen elegantesten und schnellsten Ansatz. Wenn Sie an die Redewendungen anderer Sprachen gewöhnt sind, werden Sie diese besseren Möglichkeiten möglicherweise nie anders finden oder akzeptieren. Ich habe ein Wochenende damit verbracht, die ersten 20 Probleme mit Project Euler zu lösen, und mit Django in Google App Engine eine einfache Webanwendung erstellt. Dies führt Sie vielleicht nur vom Lehrling zum Anfänger, aber Sie können dann weiterhin etwas fortgeschrittenere Webanwendungen erstellen und fortgeschrittenere Project Euler-Probleme lösen. Nach ein paar Monaten ging ich zurück und löste die ersten 20 PE-Probleme von Grund auf in einer Stunde anstelle eines Wochenendes.

hus787
quelle