Vom Feinsten! Lerne Python so, dass es Spaß macht und du alles behältst! Schrödinger taucht voll ein und ist begeistert von der vielseitigen Sprache - und du bist dabei. Vom Maker-Projekt bis zur KI liegt ihr mit Python genau richtig. Damit alles gut funktioniert, knöpft ihr zwei euch erst einmal die Sprachgrundlagen vor und fangt dabei ganz vorne an. Dabei lernt ihr direkt so zu programmieren, dass ihr auch in größeren Projekten guten Code schreibt. Schrödinger hilft dir gleich doppelt beim Lernen: Mit einem Kumpel bleibt nicht nur mehr hängen. Er stellt auch viele Fragen - und nicht selten die, die du auch gerade stellen wolltest.
Zu allen Themen gibt erst Erklärungen und dann Aufgaben: Mal entsteht eine Anwendung, mal gibt es Code zu reparieren, und am Ende gibt es Übungen und Fragen, die sicherstellen, dass ihr alles verstanden habt.
Fantastisch illustriert. Für Einsteiger, Umsteiger und Fans.
Aus dem Inhalt:
- Installationshilfe und gründlicher Einstieg
- Objektorientierung aus der Profi-Praxis
- Das Zen of Python
- Umgang mit Zeit und Datum
- Module
- Alles rund um Datenbanken
- Keine Angst vor regulären Ausdrücken
- Einblicke in Künstliche Intelligenz
- Unmengen an Beispielcode und Übungen
Die Fachpresse zur Vorauflage:
LINUX MAGAZIN: »Eine vergnügliche Einführung in die Programmiersprache Python. «
Inhaltsverzeichnis
Vorwort . . . 22 1. Schrödinger startet durch -- mit Python! Python, erste schnelle Schritte . . . 23 Die Programmiersprache Python! . . . 25 Das Zen of Python und die Sache mit den PEPs . . . 26 Python, ein erstes »Hallo Welt« . . . 27 Fingerübungen mit »print« . . . 31 Hallo Welt in (einzeiligen) Variationen . . . 32 Wir müssen reden: Du und deine Variablen . . . 35 Variablen -- was geht? Und was ist voll krass korrekt? . . . 39 Die Sache mit den (Daten-)Typen . . . 43 Diese Datentypen sind für dich da! . . . 47 Über den richtigen Kamm scheren -- Datentypen konvertieren . . . 48 Lustiges Konvertieren -- was Python zu was macht . . . 51 Die Funktion »str()« -- verwandelt alles in Text . . . 51 Die Funktion »int()« -- ganze Zahlen . . . 52 Die Funktion »float()« -- Fließkomma mit Punkt . . . 53 Die Funktion »bool()« -- Wahrheit oder Pflicht . . . 53 Was ist das denn für ein Typ -- »type()« . . . 54 Probier's doch mal aus . . . 56 Und was ist noch wichtig? . . . 57 Syntax, Variablen, Datentypen und dynamische Typisierung . . . 58 2. Ein Dinkel macht noch keinen Korn. Syntax, Kommentar und guter Stil . . . 59 Eingabe, Berechnung und eine Ausgabe . . . 61 Zahlen mit Komma -- statt mit dem Punkt . . . 64 Die Zeit der Abrechnung ist gekommen . . . 66 Damit kannst du rechnen -- die Grundrechenarten . . . 67 Wie wär's mit einem Rabatt? . . . 69 Du und deine Kontrollstruktur . . . 72 »while« -- Schleifen binden leicht gemacht . . . 72 Ganz wichtig: Die Bedingung der Schleife . . . 73 Ein schneller Blick auf die Vergleiche . . . 74 Schleifen binden -- der erste eigene Prototyp . . . 76 Entrückt -- Einrückungen statt Klammern . . . 79 Fehlerschau -- nicht alles, was gefällt, ist auch erlaubt . . . 82 Weiter im (Kassen-)Programm -- jetzt mit Schleife . . . 84 . . . es gibt keine blöden Kommentare! . . . 87 Die »if«-Anweisung -- wenn schon, denn schon . . . 88 Zeit für Entscheidungen -- dein erstes »if« . . . 89 Wenn, dann und ansonsten? . . . 91 Wenn schon, denn schon und auch noch »else« . . . . . . 92 Einfachere Bedingungen! . . . 93 Kürzeres »else if« mit »elif« . . . 94 »while« -- The Python-Way mit »break« . . . 97 Die Sache mit dem Walross := . . . 98 match -- case, wähl mal . . . 100 Was hast du gelernt? Was haben wir gemacht? . . . 106 3. Arbeitszimmer und Werkbänke. Funktionen und Rückgabewerte . . . 107 Funktionen . . . 108 Der Name der Funktion . . . 109 Falsche oder richtige Funktionsnamen? . . . 110 Eigene Funktionen -- der erste Prototyp . . . 111 Deine Funktion im Programmablauf . . . 113 Deine erste eigene Funktion . . . 114 Dynamik dank Parameter? . . . 115 Zeit zum Ausprobieren! Einmal »lecker Funktion« mit extra Parametern! . . . 117 Mehr Freiheit dank der Standardwerte . . . 118 Standardwerte -- Probieren geht über Studieren . . . 119 Schlüssel-Wert-Paare -- alles richtig zugeordnet . . . 121 Wie könnte so eine Funktion »spam« aussehen? . . . 122 Besser als jede Doku -- Docstrings . . . 124 Weiter mit der Funktion in Kastenform . . . 126 Funktionen -- die Super-Fehlervermeider . . . 128 The return of the living values . . . 132 Der »Wertekorrigierer« -- Steuerung mit »return« . . . 134 Mehrere Werte mit »return« zurückgeben . . . 135 Du und deine Funktion -- ein paar Beispiele . . . 136 Spiel's noch mal Sam -- die Rekursion! . . . 137 Die dunkle Seite der Funktionen -- »local« und »global« . . . 138 Lokal vs. global -- was geht? . . . 139 »global« -- die dunkle Seite der Macht . . . 140 Große Aufgabe dank Funktionen ganz klein -- Kassenprogramm reloaded . . . 141 Was hast du gelernt? Was haben wir gemacht? . . . 144 4. Listen, Tupel, Sets und Dictionaries. . . . alle Daten sind schon da! . . . 145 Du und deine Liste . . . 146 Der 1. FC Dinkel und andere Mannschaften . . . 149 Teile und herrsche -- Teile von Listen . . . 151 Der neue Star auf dem Feld -- die »for«-Schleife . . . 152 Wie für »for« gemacht -- »range« . . . 153 Das Hornberger Elfmeterschießen -- erst mit »for« und dann mit »range« . . . 155 Index und Wert ausgeben mit »enumerate« . . . 157 Wenn Besuch kommt -- eine Mannschaft mehr . . . 158 Die Sache mit den Methoden . . . 159 Eine ganze Liste anhängen mit »extend« . . . 160 Einzelne Werte einfügen mit »insert« . . . 161 Alles wieder andersrum -- mit »reverse« . . . 162 Geordnet und wohlsortiert, dank »sort« . . . 162 Sortieren nach Schrödingers Gnaden . . . 164 Ein Element aus der Liste holen und entfernen -- »pop« . . . 166 Ja, wo is' er denn -- »index« . . . 167 Einfach nur löschen -- »remove« . . . 167 Alle Werte sind schon da -- »count« und »in« . . . 168 Du, die Liste und deine Vereine . . . 170 Ziemlich einmalig -- das Set . . . 173 Tupel -- in Stein gemeißelte Listen . . . 175 Du und deine Tore -- gut gespeichert im Dictionary . . . 178 Werte auslesen mit »get« . . . 179 Zeigt her eure Werte -- alle Werte eines Dictionarys ausgeben . . . 180 Was hast du gelernt? Was haben wir gemacht? . . . 182 5. Text, Strings und Abenteurer. Texte verändern und bearbeiten . . . 183 Hilfreich wie eine Machete im Dschungel -- der Backslash »« . . . 186 Texte zusammenfügen . . . 188 Übung macht den Meister . . . 190 Die erste Aufgabe -- Umbenennen von Dateinamen . . . 191 Die richtige Ausrüstung für den Textdschungel -- hilfreiche Methoden . . . 194 Alle Funktionalitäten in einer Funktion . . . 196 Strings schöner ausgeben -- mehr als nur Kosmetik . . . 199 Variable im Text -- praktisch und einfach mit »{ }« . . . 202 Der Vollständigkeit halber -- formatiert mit »%« . . . 204 Alle Wörter großgeschrieben -- »title« . . . 205 Wie oft ist das noch da -- »count« . . . 205 Wo ist der Schatz -- suchen mit »find« und »rfind« . . . 206 So machst du aus Listen Texte -- »join« . . . 207 Ist das eigentlich 'ne Zahl -- »isnumeric« . . . 208 Buchstaben und Zahlen -- »isalnum« . . . 209 Sind da nur Buchstaben -- »isalpha« . . . 209 Von der grauen Theorie zum praktischen Nutzen . . . 210 Method Chaining -- Methoden in Reihe . . . 213 Was hast du gelernt? Was haben wir gemacht? . . . 214 6. Von Käfern und anderen Fehlern. Nur kein Fehler ist ein guter Fehler . . . 215 Fehlerbehandlung mit »try« und »except« . . . 218 Bombensichere Eingaben dank »try« und »except« . . . 219 Kenne deine Gegner -- unterschiedliche Fehlerarten . . . 223 Fehlerbehandlungen im Eigenbau . . . 225 Mit deinem Fehler auf du und du . . . 226 Schönere Fehlerbehandlung mit »else« und »finally« . . . 230 Fehler geschüttelt, nicht gerührt . . . 231 Zu guter Letzt -- »finally« . . . 233 Debuggen (nicht nur) mit Thonny . . . 234 Du, der Debugger und die Breakpoints . . . 236 Gezielte Fehlerjagd mit Breakpoints . . . 240 Was hast du gelernt? Was haben wir gemacht? . . . 242 7. Die Module spielen verrückt. Die Standardbibliothek und noch viel mehr . . . 243 Schnelle Infos dank Docstring und »help« . . . 247 Ein Modul namens »dateiname« . . . 249 Modul und trotzdem Programm . . . 251 Das doppelt gemoppelte Modul für den direkten Test . . . 254 Mächtig vielseitig -- globale Variablen (nicht nur) in Modulen . . . 255 Die Methode »dateiname« -- nur noch flexibler . . . 258 Schrecklich lange Modulnamen -- »as« . . . 260 Das Modul einer Variablen zuweisen . . . 261 Module wie du und ich -- Python Standard Library . . . 264 Was für ein Zufall -- »random« . . . 266 Wo liegt der Unterschied? . . . 267 Import mit »from«, »import« und »as« -- gezielt und direkt . . . 268 Wie viel Zufall steckt in Zufallszahlen? . . . 270 Mehr als nur ein Import -- zwei Importe . . . 271 Was hast du gelernt? Was haben wir gemacht? . . . 272 8. Von Klassen, Objekten und alten Griechen. Objektorientierte Programmierung . . . 273 Die gute, alte Softwarekrise . . . 274 Retter gesucht? Retter gefunden: OOP! . . . 274 Ganz konkret -- die Sache mit Klassen und Objekten . . . 277 Von der ersten Klasse zum ersten Objekt . . . 278 Alles auf Anfang -- die Methode »_ _init_ _« . . . 279 Dein erstes Attribut . . . 280 Es gibt auch ganz schnöde Variablen . . . 282 Mehr Infos dank Docstring . . . 283 Das Orakel von Delphi . . . 285 Die erste Klasse am Stück -- gleich mal etwas reloaded . . . 288 Das erste eigene Objekt . . . 289 Orakel reloaded -- das Attribut ändern . . . 293 Vorsicht beim Zugriff auf Attribute! . . . 294 Die Sache mit den Parametern . . . 296 Vertrauen ist gut, Kontrolle besser . . . 297 Übergebene Werte sind gefährlich! . . . 298 Das ist die Stunde der Methode »property«! . . . 299 Besser als nur Setter und Getter . . . 301 »property« und Orakel -- das passt! . . . 305 . . . der durchaus seltsame klingende, aber ziemlich coole »@property«-Dekorator . . . 308 »private« und »protected« -- aber gar nicht so ganz . . . 310 Wiederverwendbarkeit und Vererbung . . . 314 Besser als recyceln -- neue Klasse aus alter Klasse . . . 316 Super Sache dieses »super« . . . 319 Statische Attribute und Methoden . . . 321 Was hast du gelernt? Was haben wir gemacht? . . . 325 9. Höchste Zeit für Datum, Zeit und Zeitangaben. Schrödingers Zeitmaschine . . . 327 Du und deine Zeitmaschine . . . 328 Welcher Tag ist heute? Welches Jahr! ? -- »date« . . . 328 Bastel mal ein schickes Datum . . . 330 Tag, Monat, Jahr mit Platzhaltern in Form bringen . . . 331 Einmal Datum, geschüttelt -- nicht gerührt . . . 333 Es wird Zeit, die Zeit zu ändern . . . . . . 335 Was von der ganzen Zeit noch übrig bleibt . . . 337 Stunden, Minuten und Sekunden mit »time« . . . 339 Ist noch Zeit für einen Dinkelkaffee? . . . 341 Es ist an der Zeit, die Zeit zu formatieren! . . . 343 Gestatten, »datetime«, aus dem Hause »datetime« . . . 346 Besser als jedes Orakel -- Zeit lesen mit »strptime« . . . 347 Datum und Zeit finden -- so ganz in der Praxis . . . 349 . . . 351 Ganz großes Kino -- Unixtime und The Epoch . . . 351 Wann war die letzte Änderung? . . . 353 Noch ein Wort zu »timedelta« -- rechne mit der Zeit . . . 355 . . . rette Weihnachten mit »timedelta« . . . 356 Was hast du gelernt? Was haben wir gemacht? . . . 35810. Vom wichtigen Umgang mit Daten, Dateien und Ordnern. Endlich in Stein gemeißelt . . . 359 Wohin mit all den Daten? . . . 360 Das Regal auf der Gurke . . . 361 Zeit zum Lesen . . . 363 Zeit für ein bisschen Serialisierung . . . 364 Du und dein Regal -- ein paar hilfreiche Informationen . . . 365 Mit Netz und doppeltem Boden . . . 366 Du und deine Textdatei -- schreiben und lesen . . . 368 Und es geht noch kürzer -- mit »with«! . . . 370 Du und deine Textdatei . . . 371 Listen und Zeilenumbrüche schreiben . . . 373 Zeilenweises Lesen . . . 375 Im Dschungel der Ordner und Dateien . . . 376 Halt mal die Machete -- Überleben im Ordnerdschungel . . . 380 Kopieren oder nicht kopieren, das ist hier die Frage . . . 383 Eindeutige Hash-Werte für Vergleiche . . . 385 Und nicht vergessen: Verschieben und Löschen . . . 387 Was hast du gelernt? Was haben wir gemacht? . . . 38811. Zufallszahlen, Matrizen und Arrays. Ein klein bisschen Mathematik, die du wirklich gebrauchen kannst . . . 389 Du, die Zufallszahlen und NumPy . . . 391 Auf dem Weg zum Millionär -- ein Lottoprogramm . . . 394 Andere Verteilungen bei den Zufallszahlen . . . 396 Ganz normalverteilte Werte . . . . . . 399 Die Sache mit den Arrays . . . 401 Ein paar schnelle Berechnungen . . . 403 Bau mal ein Array . . . 406 Weniger selbst arbeiten -- Arrays mit »arange« . . . 407 Die Sache mit den mehrdimensionalen Arrays . . . 408 Bastelarbeiten mit Arrays . . . 410 Rechnen mit Arrays . . . 412 Was hast du gelernt? Was haben wir gemacht? . . . 41412. Grafische Oberflächen. Buttons, GUI und Layout-Manager . . . 415 Der Layout-Manager »pack« und die Sache mit den Frames . . . 419 Mit deinem Fenster auf du und du . . . 422 Ein bisschen Kosmetik mit schöneren Elementen . . . 427 Die Sache mit dem Lambda -- nicht nur für GUIs . . . 429 Button mit Parametern -- ganz einfach dank Lambda . . . 431 Rechnen mit dem Schrödinator und die Sache mit den »tkinter«-Variablen . . . 435 Ganz kurz noch schönere Schriften . . . 437 Ereignisse im objektorientieren Fenster . . . 438 Das Schrödinger-Zeichenprogramm . . . 446 Was hast du gelernt? Was haben wir gemacht? . . . 44813. Von Daten, Datenbanken und SQL. Das relationale Datenbankmodell . . . 449 Retter und Held gesucht: Datenbankprofi . . . 451 Daten braucht das Land! . . . 459 Keine doppelten Sachen -- die Sache mit dem Primärschlüssel . . . 462 Stopp die Viren und Trojaner! . . . 464 »fetchall«, »fetchmany«, »fetchone« -- alle, viele, einer . . . 470 Finde die richtige Abwehrstrategie! . . . 473 Die Sache mit dem WHERE . . . 475 Schönere Datenbankverbindung mit »with« . . . 478 Weiter im Programm mit der kontrollierten Eingabe . . . 479 Eine Funktion, alles zu speichern . . . . . . 481 Zeit, die Viren zu stoppen -- die Auswertung der Daten . . . 483 Höchste Zeit für schnelle Auswertungen . . . 487 Finale -- Ändern mit UPDATE . . . 494 Die Sache mit den Normalformen . . . 499 Mehr Leistung mit dem Index . . . 504 Was hast du gelernt? Was haben wir gemacht? . . . 50614. Hast du mal einen Chart für mich? Zahlen und Daten im Überfluss . . . 507 Drei Kurven sollt ihr sein . . . 513 Zeit für die erste Auswertung . . . 515 Nicht nur für Charts: Schlaue Listen mit List Comprehension . . . 517 Kleine, schlaue Listen selbst gemacht . . . 520 Da geht noch was -- noch ein »if« und auch ein »else« . . . 526 Sahne, Frucht und Dinkel -- was ist am beliebtesten? . . . 528 Mehr als nur ein Fenster -- die Sache mit den »subplots« . . . 531 Noch mehr Torten -- das Kuchendiagramm . . . 534 Du und deine Normalverteilung -- von ziemlich eindimensional bis schick in 3D . . . 537 Was hast du gelernt? Was haben wir gemacht? . . . 54015. Künstliche Intelligenz & Data Science. Wenn der eigene Kopf schon raucht . . . 541 Richtige Ergebnisse -- mal ganz ohne Formel . . . 545 Und jetzt alles mit echter KI . . . 548 (Trainings-)Daten braucht das Land . . . 549 Nicht für die Schule lernt die KI . . . 549 Zeit, das Orakel zu befragen . . . 550 Die zweite Zahlenreihe . . . 551 Zeit für noch mehr Lernen lassen . . . 552 Virenerkennung mit dem RandomForestClassifier . . . 555 Daten polieren -- mit der richtigen Strategie! . . . 558 Mittelwert und Median als Strategie . . . 562 Was hast du gelernt? Was haben wir gemacht? . . . 56416. Datenaustausch mit CSV und JSON. Daten schreiben -- Daten lesen . . . 565 Ein paar Einstellungen und der richtige Dialekt . . . 571 Da geht auch was mit Dictionaries . . . 573 Zeit zu lesen . . . 575 Die Sache mit JSON . . . 578 Einmal JSON und zurück . . . 579 Auch JSON will gelesen sein . . . 581 Was hast du gelernt? Was haben wir gemacht? . . . 58217. Reguläre Ausdrücke. Das Schweizer Messer der Textverarbeitung . . . 583 Eine Suche -- ganz klassisch . . . 585 Mit regulären Ausdrücken ist das kein Problem! . . . 588 Nur mal kurz: Ein paar Flaggen . . . 593 Eine Funktion zur passgenauen Wortsuche . . . 595 Vordefinierte Zeichenklassen, ein Punkt und viele Beispiele . . . 599 Ein Beispiel -- die Suche nach Datum und Zeit . . . 602 Besser als jedes Orakel -- das Matchobjekt auslesen . . . 604 Finde die Kennung -- probieren geht über studieren . . . 605 Selber basteln -- eigene Zeichenklassen . . . 608 Schöneres Datum dank eigener Zeichenklassen . . . 611 Quantifier -- wie oft oder vielleicht auch gar nicht? . . . 614 Mehr als ein Treffer -- »findall« und »finditer« . . . 617 Mach mal was mit Quantifiern . . . 618 Ganz kurz: Quantifier mit »? «, »*« und »+« . . . 621 Ein (fast) gültiges Kennwort . . . 622 Ein Anfang, ein Ende und ein paar Empfehlungen . . . 624 Suchgruppen -- mehr als nur ein Zeichen . . . 627 Die Sache mit »compile« . . . 629 Was hast du gelernt? Was haben wir gemacht? . . . 630Anhang. Die verlorenen Kapitel. Für alles, was (noch) nicht passend ist . . . 631 A . . . Installation von Python unter Windows . . . 633 B . . . Die Python-Shell . . . 639 C . . . PEP 20 . . . 647 D . . . Die All-in-one-Entwicklungsumgebung . . . 651 E . . . DB Browser for SQLite . . . 661 Index . . . 671