In diesem Abschnitt geht es darum zu lernen, wie man Python-Skripte erstellt und startet. Ausgehend von einem ersten einfachen Beispiel entwickeln wir im zweiten Beispiel das Programm weiter und zeigen, wie durch das Anlegen einer Projektstruktur (und von Modulen) eine professionelle Arbeitsweise möglich wird. Nach dem Durcharbeiten dieser Seite kann mit den eigentlichen Projekten begonnen werden.
Aufgabe - „Schnell, schneller, am schnellsten“
Schreibe ein Python-Programm (reflexio), das Reaktionszeiten messen kann.
#!/usr/bin/env python3 # Testet die Reaktionszeit # @author: DEIN NAME # @version: 1.0 # @usage: ./reflexio.py import time import random VERSION = "This is reflexio v.1.0" def main(): print(VERSION) print("============== ANLEITUNG ================================") print("(1) Drücke 'ENTER', um die Messung zu starten.") print("(2) Drücke 'ENTER', sobald die Meldung 'JETZT' erscheint!") print("==========================================================") print("") input() print("Status: ...Messung läuft\n") wartezeit = random.uniform(2, 6) time.sleep(wartezeit) print("JETZT!") start = time.time() input() ende = time.time() reaktion = ende - start print("Status: ...Messung beendet") print(f"Deine Reaktionszeit: {reaktion:.3f} Sekunden") if __name__ == "__main__": main()
Damit ein Python-Skript per './reflexio' ausführbar ist, müssen die unten aufgeführten Punkte erfüllt sein.
#!/usr/bin/env python3chmod +x reflexio/reflexioAufgabe – „Schnell, schneller, am schnellsten“
Schreibe ein Python-Programm (reflexio-advanced), das Reaktionszeiten misst, diese sammelt und in einer gemeinsamen Datei speichert. Auf diese Weise soll beispielsweise der Mittelwert vieler einzelner Messungen berechnet werden können.
pi@raspi88:~/devel/projects/reflexio_advanced $ pwd /home/pi/devel/projects/reflexio_advanced
└── reflexio_advanced # Projektverzeichnis │ ├── data # Ordner für die Messwerte (messwerte.txt) └── src # Ordner für den Quellcode ├── core # core-Verzeichnis │ ├── __init__.py # Erforderlich für Python! │ ├── utility.py # Hilfsfunktionen │ └── logic.py # Programm-Logik └── reflexio_advanced.py # Main Programm
Der Code ist
Der Code – insbesondere die Funktionen – sollen ebenfalls dokumentiert werden, was im Kurs gezeigt wird.
Außerdem können z.B. die Module wiederverwendet werden – ebenso kann das Utility-Modul als Vorlage für andere Programme dienen.
Die Dokumentation der Methoden (Docstrings) fehlt hier übrigens noch.