Grundkonzepte der wissenschaftlichen Programmierung mit Python - Terminologie und Tools PDF
Document Details
Uploaded by ImportantPluto253
Fachhochschule Wiener Neustadt
Michael Rauter
Tags
Related
- Python Programming Question Bank.pdf
- Week 2 Lab - Introduction to Python Programming PDF
- Aprendiendo a Programar en Python con mi Computadora (PDF)
- Grundkonzepte der wissenschaftlichen Programmierung mit Python - Syntax und Programme PDF
- Grundkonzepte der wissenschaftlichen Programmierung mit Python – NumPy PDF
- Anaconda, Pandas, and NumPy PDF
Summary
This document is a presentation on the fundamental concepts of scientific programming with Python, covering terminology and tools, including different topics like source code, syntax, compilers, interpreters, and integrated development environments (IDEs).
Full Transcript
EDV in der Radiologietechnologie ILV SS Michael Rauter Master Program MedTech – functional imaging, conventional and ion radiotherapy https://www.python.org/community/logos/ Grundkonzepte der wissenschaftlichen Programmierung mit Python – Terminologie un...
EDV in der Radiologietechnologie ILV SS Michael Rauter Master Program MedTech – functional imaging, conventional and ion radiotherapy https://www.python.org/community/logos/ Grundkonzepte der wissenschaftlichen Programmierung mit Python – Terminologie und Tools Grundkonzepte der wissenschaftlichen Programmierung Themen dieses Themenblocks Was werden wir uns ansehen? Grundbegriffe/Terminologie: ❖ Source code (Scripts), (ausführbares) Programm, Algorithmus ❖ Syntax einer Programmiersprache und Fehlertypen ❖ Compiler- vs. Interpreter-Sprachen ❖ Integrated Development Environment (IDE) Werkzeuge und Technologien: ❖ Miniconda Python Distribution ❖ Python Interpreter (Interaktiver Modes sowie Python-Interpreter über Kommandozeile) ❖ PyCharm Community Edition ❖ Debugging mit dem PyCharm Debugger Michael Rauter 3 Grundkonzepte der wissenschaftlichen Programmierung Motivation Warum und wo wir das Scripten/Programmieren mit Python benötigen werden: Wenn Berechnungen zu kompliziert sind, diese per Hand durchzuführen Wenn Berechnungen zu mühsam sind, diese manuell durchzuführen (Zeit- und Arbeitsersparnis) Um Fehler bei der Berechnung zu minimieren (ein Computer wird nicht müde, ist nicht unkonzentriert) Datenanalyse und Statistik (z.B. Auswertung von Ergebnissen bei den Bachelorarbeiten) Erzeugen von ansprechenden grafischen Plots der analysierten Daten um die Funktionsweise der Methoden der Medizinischen Bildverarbeitung verstehen zu lernen Daten-Visualisierungen etc… Michael Rauter 4 Grundkonzepte der wissenschaftlichen Programmierung Grundbegriffe Was ist „source code“ und was ist der Zusammenhang mit dem Begriff „Programm“ Source code (auch Quellcode) ist die Bezeichnung für eine Sequenz von Anweisungen/Befehle (instructions/statements) an den Computer in einer für diesen verständlichen Programmiersprache. Die Sequenz der Anweisungen definiert was ein Programm tun soll. Man spricht auch davon, dass der source code in einer bestimmten Programmiersprache (z.B. C, C++, C#, Java, Python, MATLAB, …) geschrieben ist und deren Regeln befolgt. Typischerweise wird die Sequenz der Anweisungen in einer Textdatei gespeichert und mit einer Dateiendung versehen, die darauf schließen lässt, dass es sich bei der Datei um Source Code handelt, der in der entsprechenden Sprache geschrieben wurde (z.B:.py für Python source code). Ausführbare Programme (executables) sind das Resultat des Erzeugens/Übersetzens von source code. Sowohl bei source code, als auch bei Programmen spricht man oft davon, dass sie in einer bestimmten Programmiersprache geschrieben wurden – gelegentlich werden daher beide Begriffe synonym verwendet, was allerdings technisch gesehen nicht richtig ist Michael Rauter 5 Grundkonzepte der wissenschaftlichen Programmierung Grundbegriffe Was versteht man unter „Algorithmus“ Ein Algorithmus ist eine Abfolge von Programmanweisungen, die ein konkretes Problem löst, z.B: das Sortieren von einer Liste von Werten, Berechnen eines kürzesten Pfades in einem Graphen, Lösen eines Gleichungssystems, …) Nicht unüblich ist, dass innerhalb eines Programms mehrere unterschiedlicher Algorithmen zum Einsatz kommen, um eine komplexere Gesamtaufgabenstellung zu lösen (mitunter wird dann auch im ganzheitlichen Zusammenhang von Algorithmus gesprochen) Michael Rauter 6 Grundkonzepte der wissenschaftlichen Programmierung Grundbegriffe Die „Syntax“ einer Programmiersprache Unter Syntax einer Programmiersprache versteht man das Regelwerk, welches valide Kombinationen von Symbolen, Zeichen und Wörtern definiert, welche korrekte aufgebaute Anweisungen und Ausdrücke formen. Nur korrekt formulierte Anweisungen werden durch die Programmiersprache akzeptiert (oder besser gesagt durch ihren Interpreter bzw. Compiler) → nur korrekte Anweisungen ergeben ein korrektes Programm. Jede einzelne Anweisung (Zeile) eines Programms muss daher korrekt sein, andernfalls wird die Programmiersprache entweder das komplette Programm ablehnen (im Fall einer Compiler-Sprache) oder mit einer Fehlermeldung beim ersten Verarbeiten einer fehlerhaften Anweisung das Ausführen des Programms beenden (im Fall einer Interpreter-Sprache). Michael Rauter 7 Grundkonzepte der wissenschaftlichen Programmierung Grundbegriffe Die „Syntax“ einer Programmiersprache (anhand Python) Eine korrekte Anweisung kann bestehen aus: ❖ Schlüsselwörtern (spezielle Zeichenfolgen), welche spezifisch für die jeweilige Programmiersprache sind, z.B: def, if, elif, else, and, or, return, for, while, class … ❖ Funktionsnamen und User-definierte Variablennamen (Name kann selbst vergeben werden, z.B. „x“) ❖ Operatoren (z.B: +, -, *, /, **, =, ==, !=, =, …) Die Sammlung von Zeichen eines Schlüsselwortes, Variablen-/Funktionsnamen und Operatoren werden durch Leerzeichen getrennt u. Tokens genannt, z.B. das Token „while“ besteht aus den Zeichen “w“, “h“, “i“, “l“, “e” Die korrekte Reihenfolge der Tokens innerhalb einer Anweisung ist wichtig! Die einzelnen Tokens eines Statements müssen dem Regelwerk der Programmiersprache entsprechen Statements können von anderen Statements abhängen/diese bedingen, z.B: ein Statement, welches ein „else“ beinhaltet, benötigt immer ein vorherigen Statement mit einem „if“ um Sinn zu machen Michael Rauter 8 Grundkonzepte der wissenschaftlichen Programmierung Grundbegriffe Fehlertypen in Programmen Syntax-Fehler ❖ sind Verletzungen des Regelwerks der Programmiersprache betreffend Anweisungen und Ausdrücken ❖ werden oft auch als compile-time errors bezeichnet Logische (Programm-)Fehler ❖ sind solche, die zur Laufzeit des Programms auftreten und aus einer fehlerhaften logisch falschen Abfolge von Anweisungen herrühren und zu inkorrekten oder unbeabsichtigtem Verhalten führen ❖ sie können sich in fehlerhaften Resultaten, unbeabsichtigtem Programmverhalten, Abstürzen oder Endlosschleifen manifestieren. ❖ werden auch runtime errors genannt (da sie auftreten, wenn das Programm ausgeführt wird) Michael Rauter 9 Grundkonzepte der wissenschaftlichen Programmierung Grundbegriffe Was ist ein executable (binary)? executables (oder auch binary genannt) sind ausführbare Programme (Anwendungen) in lauffertiger Form, die vom Betriebssystem direkt zur Ausführung gebracht werden können (z.B. durch Starten des Programms von der Kommandozeile des Betriebssystems oder durch direkten Start über die Benutzeroberfläche, z.B. in Windows durch Doppelklick auf das Anwendungs-Icon). Abhängig vom Betriebssystem besitzen diese ausführbaren Programme (Dateien) eine spezielle Dateiendung, (z.B. „.exe“ unter einem Windows Betriebssystem). Beispiele für executables sind etwa alle Programme, die man im Windows Startmenu finden kann bzw. alle installierten Programme (z.B. Excel, Word, Notepad, Rechner, Windows Explorer, Web Browsers, …) Auch der Python Interpreter selbst ist eine executable (python.exe) und befindet sich im Installationsordner der Python Distribution Michael Rauter 10 Grundkonzepte der wissenschaftlichen Programmierung Grundbegriffe Compiler vs. Interpreter Programmiersprachen können in Compiler- und Interpreter-Sprachen unterteilt werden. Compiler-Sprachen übersetzen den source code mit einem Compiler direkt in ein ausführbares Programm. Ein Compiler ist also ein spezielles Programm, das aus source code ein executable erzeugt/baut (build). Interpreter-Sprachen interpretieren den source code mit einem eigenen Programm - dem sogenannten Interpreter – zur Laufzeit des zu interpretierenden Programms zeilenweise und übersetzen den source code sozusagen „on-the-fly“. Daher wird bei diesem Prozess auch kein executable erzeugt. Es wird einfach das auszuführende Programm zum Laufen gebracht, indem alle Anweisungen (eine nach der anderen) ausgeführt werden. Wenn Skripts in Python ausgeführt werden, dann werden diese vom Python Interpreter interpretiert. Michael Rauter 11 Grundkonzepte der wissenschaftlichen Programmierung Grundbegriffe Distribution einer Programmiersprache (häufig auch Software Development Kit (SDK) genannt) Sammlung von Software-Werkzeuge (Programme), mit welchen man eigene Python-Programme mit dieser Programmiersprache bauen (Compiler-Sprachen) oder laufen lassen (Interpreter-Sprachen) kann. Alle notwendigen Dateien aus denen diese Toolsammlung besteht sind im Installationsverzeichnis der Distribution in einer Ordnerstruktur organisiert. Im Fall einer Python-Distribution ist das wichtigste Werkzeug der Python Interpreter python.exe (siehe Screenshot einer conda-Distribution) Michael Rauter 12 Grundkonzepte der wissenschaftlichen Programmierung Wie funktioniert das in der Praxis, Python Code laufen lassen… Möglichkeit 1: direkt im interaktiven Modus des Python Interpreters laufen lassen Durch Ausführen des python.exe binary files ohne Kommandozeilen-Parameter wird der interactive mode von Python gestartet (hier wird die python.exe vom Kommandozeilen-Tool von Windows (cmd.exe) aus gestartet): Michael Rauter 13 Grundkonzepte der wissenschaftlichen Programmierung Wie funktioniert das in der Praxis, Python Code laufen lassen… Möglichkeit 1: direkt im interaktiven Modus des Python Interpreters laufen lassen (Fortsetzung) Der interaktive Modus wartet auf Tastatureingaben (wir können Befehle (Anweisungen) mit der Tastatur eingeben). Obwohl das im ersten Moment praktisch aussieht, werden wir diesen Modus nicht verwenden. (man kann diesen Modus beenden, indem man das Kommando „ quit()“ aufruft) Michael Rauter 14 Grundkonzepte der wissenschaftlichen Programmierung Wie funktioniert das in der Praxis, Python Code laufen lassen… Möglichkeit 1: direkt im interaktiven Modus des Python Interpreters laufen lassen (Fortsetzung) Hier sieht man, wie ein simples arithmetische Berechnung durchgeführt werden kann. Es wird eine Variable mit Namen „x“ definiert, danach wird x mit 11 multipliziert und das Ergebnis mit dem print Befehl ausgegeben. (man kann diesen Modus beenden, indem man das Kommando „ quit()“ aufruft) Michael Rauter 15 Grundkonzepte der wissenschaftlichen Programmierung Wie funktioniert das in der Praxis, Python Code laufen lassen… Warum man die einzelnen Code-Befehle in Programm-Code-Dateien schreiben und speichern sollte Es ist zwar - wie gesehen - möglich im interaktiven Modus Befehle direkt nacheinander einzugeben, aber: mit steigender Anzahl und Komplexität der Befehlsabfolgen zunehmend unpraktischer Mühsam und fehleranfällig komplexere Abläufe zu reproduzieren Deshalb: Die Befehlsabfolge in einem.py–Skript sammeln Einfache Reproduzierbarkeit, Wieder- oder Hintereinander-ausführung des Skripts möglich Einfachere Weitergabe möglich (die offensichtlich besonders einfache Weitergabe von Skripts an Kollegen, die als Teil der Hausübung zu erbringen sind, ist allerdings nicht erlaubt!) Verwendung eines Debuggers zur einfacheren Fehlersuche möglich Michael Rauter 16 Grundkonzepte der wissenschaftlichen Programmierung Wie funktioniert das in der Praxis, Python Code laufen lassen… Möglichkeit 2: Verwenden des Python Interpreter mit einer.py-Datei (welche die Anweisungen enthält) Durch Ausführen der python.exe mit dem Dateinamen der.py-Datei als Kommandozeilen-Parameter versucht der Interpreter das in der.py-Datei gespeicherte Programm zu interpretieren (und laufen zu lassen). 1 Der Programmcode wird in einem Texteditor geschrieben und in einer.py-Datei gespeichert 2 Der Interpreter (python.exe) wird von der Kommandozeile aus mit dem Quellcode-File als Parameter ausgeführt. Man kann den Output des Programms „352“ im Kommandofenster sehen Michael Rauter 17 Grundkonzepte der wissenschaftlichen Programmierung Grundbegriffe Was eine Integrierte Entwicklungsumgebung ist und warum das eine tolle Erfindung ist: (Integrated Development Environment (IDE)) Der Workflow des Beispiels von der vorherigen Folie ist ziemlich mühsam: mehrere Programme sind nötig, um das Ziel der Programmausführung zu erreichen (ein Text-Editor (z.B: Notepad++) für das Schreiben des Codes, die Kommandozeile (cmd.exe) zum Aufruf der python.exe Wir müssen den richtigen Pfad/Namen der.py-Datei angeben (in unserem Beispiel ist der Pfad/Name C:\PythonProjects\exampleScripts\example_00_simple_arithmetics.py) Es wäre nett, wenn es ein Werkzeug gäbe, das diese mühsame und fehleranfällige Arbeit übernimmt Idealerweise eine Software, die Text-Editor und das einfache Starten des geschriebenen Codes ermöglicht Das ist genau das, was eine Integrierte Entwicklungsumgebung leistet! Das erspart uns eine Menge Zeit und wird potentielle Fehler bei diesem Prozess verhindern weitere praktische Features einer IDE (z.B: Syntax-Hervorhebung, Auto-Vervollständigung, Debugger, …) Michael Rauter 18 Grundkonzepte der wissenschaftlichen Programmierung Programmieren mit Python Ein unvollständiger Überblick über Entwicklungsumgebungen für Python Eigenständige IDEs (z.B.: PyCharm, Spyder, Visual Studio, Eclipse, …) Browser-basierte Interpreter (z.B.: Jupyter Notebooks) Info Browser-basierte Lösungen bieten bisher keine zufriedenstellende Debugging-Möglichkeiten, weshalb wir mit PyCharm arbeiten werden. Gerade auch beim Lernen von Programmieren ist der Debugger Michael Rauter das wichtigste Tool, das es gibt! 19 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Installation und Erzeugen eines Projektes Die Installation (Miniconda und PyCharm) und die Einrichtung eines neuen Projekts in PyCharm findet sich in der separaten Anleitung auf moodle: https://moodle.fhwn.ac.at/mod/resource/view.php?id=332939 Michael Rauter 20 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Beim Erscheinungsbild der GUI von PyCharm kann man zwischen 2 Optionen wählen: (lässt sich über die Menu-Leiste über File → Settings → Appearance and Behavior → New UI umschalten) Michael Rauter New UI Classic 21 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Laufzeit-Konfiguration Projekt-Fenster definiert welches Programm Zeigt Struktur und Inhalt laufen soll/zu debuggen ist des Projektordners und (mit dem Haupt-.py-file als relevante Ressourcen an Einstiegspunkt) source code Editor-Fenster Hier schreibt man den Code für die ausgewählte.py-Datei, Änderungen speichert PyCharm automatisch (es gibt keinen Save-Button) Werkzeug-Fenster Inhalt des momentan ausgewählten Werkzeugfensters Hier z.B. das “Run”-Werkzeug Michael Rauter 22 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Ein einfaches Beispiel-Projekt (starten) In diesem Projekt gibt es ein einzelnes.py-file (main.py), das den Code für das Beispiel-Programm enthält (lediglich 3 Codezeilen mit Kommandos) Das aktuell geöffnete.py-Programm kann durch Klick auf den grünen Pfeil (Run- Kommando) ausführen werden Michael Rauter 23 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Laufzeit-Konfigurationen erstellen Noch besser ist es eine sogenannte Laufzeit-Konfiguration (runtime configuration) einzurichten Rechtsklick auf Tab mit Dateinamen des Quellcode-Files im Editor → Kontextmenu öffnet sich → Klick auf Run erzeugt Konfiguration und startet Programm Michael Rauter 24 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Laufzeit-Konfiguration - Fortsetzung Laufzeit-Konfiguration (in diesem Beispiel „main“) wurde erstellt Die Laufzeit-Konfiguration teilt dem Python Interpreter mit, welches.py file der Einstiegspunkt ins Programm ist, welches er interpretieren/ausführen soll. Vorteil ist, dass man innerhalb eines Projekts mehrere Konfigurationen haben kann (für verschiedene Programme oder um Programme mit unterschiedlichen Start-Parametern laufen zu lassen) Michael Rauter 25 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Ein einfaches Beispiel-Projekt (Fortsetzung) In diesem Projekt gibt es ein einzelnes.py-file (main.py), das den Code für das Beispiel-Programm enthält (lediglich 3 Codezeilen mit Kommandos) Durch Ausführen des Programms (Klick auf grünen Pfeil) wird der Code zeilenweise interpretiert und ausgeführt 1. definiert numerischen Variable “x” 2. “x” neu setzen: neuer Wert sei der bisherige Wert multipliziert mit 11 3. “x” wird in die Konsole geschrieben Michael Rauter 26 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Ein einfaches Beispiel-Projekt (Fortsetzung) Nach Ausführen des Programms beinhaltet die Konsole des „Run“-Fensters die Ausgabe des berechneten numerischen Wertes von “x”, in diesem Fall 352 Das print Kommando war für die Ausgabe in der Konsole verantwortlich (kann Werte von Variablen ausgeben) Hinweise: nicht jedes Programm muss Ausgaben in der Konsole tätigen Michael Rauter 27 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Ein einfaches Beispiel-Projekt (Fortsetzung) Im Fall eines Fehlers wirft der Python Interpreter eine Fehlermeldung, sobald er versucht die problematische Zeile auszuführen (die 2te Zeile wurde in diesem Beispiel geändert und enthält nun einen Syntax-Fehler in Form einer unbekannten (undefinierten) Variable “y”) Im „Run“-Konsolen-Fenster kann man die Fehlermeldung sehen PyCharm weist auch auf das Problem im Editor-Fenster hin (rot unterwellte Stelle) Michael Rauter 28 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Verwenden des Debuggers in PyCharm Eine der wichtigsten in PyCharm integrierten Funktionalitäten ist der sogenannte Debugger - was ist das? Ein spezielles Programm oder ein integrierter spezieller Betriebsmodus eines Compilers oder Interpreters, der es erlaubt, ein Programm in einem überwachten Modus zur Ausführung zu bringen. Dies ermöglicht: ❖ ein Programm bis zu einer bestimmten Codezeile von Interesse laufen zu lassen ❖ ein Programm Zeile für Zeile schrittweise auszuführen oder zu einer gewünschten Zeile zu springen ❖ alle aktuellen Werte des Workspaces/der Variablen zu inspizieren, welche durch bisherige Anweisungen angelegt wurden, die bis zum aktuellen Haltepunkt (breakpoint) ausgeführt wurden ❖ in (Unter-)Funktionen „hineinzuspringen“ und die Werte aller Variablen zu inspizieren ❖ im angehaltenen Programmzustand im Debug-Konsolen-Fenster Befehle zu testen, welche auch die aktuellen Programm-Variablen aus dem Workspace verwenden dürfen (so ist es möglich eine fehlerhafte Codezeile zu testen und herauszufinden, wo das Problem liegt) Michael Rauter 29 Grundkonzepte der wissenschaftlichen Programmierung PyCharm – die eingesetzte Entwicklungsumgebung in dieser Einführung Warum ich die Verwendung des Debuggers empfehle (nicht nur für die Fehlersuche, sondern auch generell schon für das Schreiben von Skripts) Anwendungsfälle: Verstehen, was ein der Code wirklich tut, wie Anweisungen und Berechnungen ausgeführt werden den Programmablauf (control flow) komplexerer Programme sichtbar machen (z.B. wie eine Schleife abgearbeitet wird) Untersuchen, warum ein fehlerhaftes Programm scheitert oder mit einem Fehler abbricht und infolgedessen den Grund für den Fehler einzugrenzen und zu eruieren Überprüfen, ob ein Programm wirklich das tut/berechnet, das man denkt das es tut (z.B. Zwischenergebnisse überprüfen, Kontrollieren, ob Bedingungen korrekt ausgewertet werden, Pfade korrekt übernommen werden) Zusammenfassend: besser im Programmieren werden durch Verstehen der inneren Abläufe von Programmen Michael Rauter 30 Grundkonzepte der wissenschaftlichen Programmierung Debugger – einfaches Beispiel – Debugging in PyCharm - Teil 1 of 4 Debugging wird mit Symbol mit grünem 2 Käfer gestartet Haltepunkt (durch Klicken auf die 1 Zeilennummer setzen) Quellcode-Zeile, welche als nächstes ausgeführt wird – in blau markiert 3 (Programm ist angehalten genau vor Ausführung der aktuell markierten Zeile): das bedeutet: die erste Zeile wurde noch nicht interpretiert/ausgeführt und daher wurden auch noch keine Variablen bis jetzt angelegt Ebenso wurde noch keine Ausgabe in der Konsole erzeugt Michael Rauter 31 Grundkonzepte der wissenschaftlichen Programmierung Debugger – einfaches Beispiel – Debugging in PyCharm - Teil 2 of 4 Es gibt verschiedene Debugging Aktionen, die ausgeführt werden können, eine wichtige ist z.B. einen Einzelschritt im Code (Step Over) zu machen (Hotkey F8) – macht man das, wird die 1. Zeile ausgeführt und der Programm-Ablauf hält direkt vor Ausführung der 2. Zeile an Ausführung von Zeile 1 führte zum Anlegen einer numerischen Variable “x”, welcher der Wert 32 zugeordnet wurde, wir können die neu angelegte Variable und ihren Wert im Variablen-Fenster sehen Das Anlegen einer Variablen erzeugt keine Ausgabe in der Konsole Michael Rauter 32 Grundkonzepte der wissenschaftlichen Programmierung Debugger – einfaches Beispiel – Debugging in PyCharm - Teil 3 of 4 Einzelschritt über Zeile 2 führt diese aus und hält das Programm direkt vor Ausführung der 3. Zeile an Ausführung von Zeile 2 resultierte in der Änderung der Variablen “x” (durch Multiplikation ihres alten Wertes mit 11 und Setzen ihres neuen Wertes auf den Ergebniswert der Operation) Erneut wurde keine Konsolen-Ausgabe erzeugt Michael Rauter 33 Grundkonzepte der wissenschaftlichen Programmierung Debugger – einfaches Beispiel – Debugging in PyCharm - Teil 4 of 4 Einzelschritt über Zeile 3 führt diese aus und beendet das Programm, da Zeile 3 die letzte Anweisung des Programms war Ausführung von Zeile 3 führte zum Ausgeben des aktuellen Wertes der Variablen “x” in die Konsole (Wert 352) Da das Programm schon beendet wurde, sind keine Variablen mehr vorhanden/verfügbar (da der Speicher beim Beenden des Programmes freigegeben wurde) Michael Rauter 34