Skip to main content

Materialien zu den zentralen NRW-Abiturprüfungen im Fach Informatik ab 2018 implementiert in Python.

Project description

pynrw

pre-commit.ci status pylint status test status CodeQL PyPI - Version Python versions semantic-release PyPI - Format License: MIT Ruff Style: black Imports: isort

This package implements the datastructures given by the German state NRW in Python, thus futher documentation will be in German. This code is purely intended for educational purposes and should not be used in production!

Dieses Package dient alleine zu Bildungszwecken und sollte nicht in Produktion genutzt werden!

Dokumentation

Dieses Package implementiert die Datenstrukturen nach den Vorgaben des Landes NRW in Python, zu finden in nrw.datastructures, d.s.:

Die Implementation ist semantisch identisch zu der Implementation des Landes mit dem einzigen Unterschied, dass alles mehr pythonic ist, d.h. die Benennung der Methoden folgt pep8, Getter und Setter sind, wo es sinnvoll ist, in properties transformiert und die Dokumentation (doc strings) sind ebenfalls angepasst worden.

Das Interface ComparableContent ist ein gleichnamiges Protocol, definiert in nrw.datastructures._comparable_content. Es gibt die dunder special methods, __eq__, __lt__ und __gt__ für einfache Vergleichsoperationen vor. Das Module stellt auch ein TypeVar(https://docs.python.org/3/library/typing.html#typing.TypeVar) ComparableContentT zur Verfügung.

Außerdem implementieren die linearen Datenstrukturen __str__, welches das Arbeiten mit diesen deutlich vereinfacht.

Des weiteren sind (triviale) Optimierungen vorgenommen worden:

  • Verwendung von __slots__
  • redundante Aufrufe werden weggelassen
  • interne Optimierungen bei Zuweisungen

Zusätzlich enthält dieses Package nützliche Funktionen zum Sortieren, Suchen und Traversiern, zu finden in nrw.algorithms:

Allerdings muss annotiert werden, dass aufgrund den Natur der Datastrukturen, wie sie vom Land vorgegeben werden, die Laufzeiten nicht optimal sind. Zudem kann es zu ungewollten Nebeneffekte für die Argumente kommen. Welche dies sind, wird dem Leser als Übung überlassen. Es soll nicht vor einem Blick in den Quellcode zurückgeschreckt werden.

Für Hilfe zum jeweiligen Objekt (gilt für alle oben genannte Objekte), z.B.:

from nrw.datastructures import List
help(List)
help(List.insert)

Installation

pip install pynrw

Alternativ:

pip install git+https://github.com/realshouzy/pynrw.git

Beispiel

from nrw.algorithms import quick_sort
from nrw.datastructures import List

lst: List[int] = List()

for i in range(0, 10, -1):
  lst.append(i)

print(lst.content)  # None
lst.to_first()
print(lst.content)  # 9
print(lst)  # List(9 -> 8 -> 7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> 0)

sorted_lst: List[int] = quick_sort(lst)
sorted_lst.to_first()
print(sorted_lst.content)  # 0
print(sorted_lst)  # List(0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9)

Motivation

Vereinfacht: Java, als Programmiersprache in der Bildung, ist eine schlechte Wahl, da ...

  • Java veraltet ist.
  • das rein objekt-orientierte Paradigma schlechthin unbrauchbar ist.
  • die Syntax und und die statische Typisierung für Anfänger einschränkend sein können.

Diese Probleme und Hürden werden größtenteils mit Python überwunden.

Unterstützung

Jegliche Form der Unterstützung ist willkommen. Für mehr Informationen referiere ich hierhin.

Quellen

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pynrw-1.1.1.tar.gz (19.4 kB view hashes)

Uploaded Source

Built Distribution

pynrw-1.1.1-py3-none-any.whl (27.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page