5. Lektion: Variablen Vielfalt

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche

Datenstrukturen

Wir haben schon über Variablen gesprochen, die einen Wert enthalten können. Es gibt in Phyton aber eine ganze Reihe von Variablen die mehrere Werte enthalten können. Dafür gibt es den Begriff Datenstruktur.

Einfache Variablen

Einfache Variablen haben wir schon in der 2. Lektion kennengelernt.

  • Sie können nur einen Wert enthalten.
  • Sie sind nicht auf einen Datentyp festgelegt, sondern können aufnehmen, was man ihnen gerade zuweist.

Konstanten

Konstanten gibt es in Python nicht. Will man Werte als konstant kennzeichnen, so schreibt man ihren Namen komplett in Großbuchstaben.
In Micropython gibt es allerdings Konstanten.
Eine Konstante wird mit der Funktion const() erzeugt:

KONSTANTE_INT = const(42)
KONSTANTE_STR = const('Hallo')
KONSTANTE_FLOAT = const(3.14)

Listen

https://medium.com/@pythonfundamentals/python-lists-an-essential-guide-with-code-examples-8c30f61e1c67

Erzeugen

liste = [1, 2, 3]
  • Die Werte von Listen werden in eckige Klammern geschrieben.
  • Listen sind veränderbar - mutable
  • Werte dürfen mehrfach vorkommen.
  • Es können unterschiedliche Datentypen in einer Liste enthalten sein.
  • Listen dürfen Listen enthalten

Übung

  • Erzeugt 10 Listen mit einheitlichen und gemischten Datentypen.
  • Erzeuge dabei auch Listen die eine oder mehrere Listen enthalten.
  • Wir sichern die Listen als listen_1.py

Lesen

  • Die Werte in einer Liste sind indiziert.
  • Der Index beginnt mit 0 !!!
  • Über den Index kann auf den Wert zugegriffen werden
x = liste[1]  # => 2

Übung

  • Greift über den Index auf einzelne Elemente Eurer Listen zu.

Verändern

  • Über den Index können einzelne Werte verändert werden.
liste[1] = 5   #  => [1, 5, 3]

Übung

  • Verändert einzelne Werte in euren Listen und überprüft die Änderung
  • Ändert den Datentyp einzelner Elemente

Erweitern

.insert(i, x)

  • fügt an Index i den Wert x ein.

.append(x)

  • fügt ein neues Element zur Liste hinzu
    • liste.append([10, 20]) => [1, 2, 3, [10, 20]]

.extend(x)

  • fügt ggf. mehrere Elemente hinzu.
    • liste.extend([10, 20]) => [1, 2, 3, 10, 20]

Übung

  • Erweitert eure Listen mit allen Methoden und überprüft die Änderungen

Verkleinern

.pop([i])

  • Entfernt das Element mit Index i aus der Liste und gibt es zurück.
    • ohne i wird das letzte Element ausgewählt.

.remove(x)

  • Entfernt das erste Element mit dem Wert x.

Übung

  • Holt mit pop ein Element aus einer Liste und zeigt es mit print() an.
  • Entfernt alle Elemente mit dem selben Wert aus einer Liste.

Sortieren

.reverse()

  • kehrt den Inhalt der Liste um. (Ohne Sortierung)

.sort(reverse=True|False, key=myFunc)

  • sortiert eine Liste
    • Ohne Parameter wird alphabetisch sortiert.
    • k(ey) gibt den Sortierschlüssel an. Z.B. Länge bei Strings.
    • r(everse) gibt eine umgekehrte Sortierung zurück.
  • Es können nur gleiche Datentypen sortiert werden.

Übung

  • Sortierte ein paar Deiner Listen.
  • Prüfe ob wirklich nur gleiche Datentypen sortiert werden können.

Suchen

.index(x)

  • index gibt den Index des ersten Auftretens von x in der Liste zurück.

.count(x)

  • gibt zurück wie oft x in der Liste vorkommt.

Übung

  • suche nach Einträgen in deinen Listen.
  • Zähle einige Werte.

Löschen

.clear()

  • alle Elemente einer Liste entfernen.

Übung

  • leere eine Deiner Liste mit .clear() und kontrolliere den Inhalt.


Funktionen die auf Listen angewendet werden können

len(x)

  • gibt die Länge der Liste x zurück.

max(x)

  • gibt den größten Wert aus der Liste x zurück.

min(x)

  • gibt den kleinsten Wert aus der Liste x zurück.

del(x)

  • löschen eines Elementes
    • del(liste[1])
  • löschen der ganzen Datenstruktur
    • del(liste)

Übung:

  • Wende diese Funktionen auf verschiedene Deiner Listen an.
  • Teste den Unterschied zwischen l.clear() und del(l) aus.


Dictionaries / Wörterbücher

https://medium.com/@pythonfundamentals/python-dictionaries-a-comprehensive-guide-with-code-examples-9e425a9e324e
https://pythonflood.com/python-dictionaries-the-key-ingredient-to-data-mastery-a6060ea83c15
In Python 3.6 und davor waren Dictionaries unsortiert.

Erzeugen

dictionary = {key1: value1, key2: value2}

  • Dictionaries enthalten eine Liste von key:value Paaren.
    • key = Schlüssel
    • value = Wert
    • item = Schlüssel:Wert-Paar
  • Die items sind nicht sortiert und können ihre Reihenfolge verändern.
  • Keys dürfen nur einmal vorkommen.
  • Keys dienen als Index.
  • Values dürfen Dictionaries und andere Datenstrukturen enthalten.

Übung

  • Erstelle ein Wörterbuch, das die Zahlen 0 bis 9 als Schlüssel und die Wörter als Wert enthält.
  • Erstelle ein Wörterbuch das die deutschen Worte für die Zahlen 0 bis 9 als key und die englischen Worte als value enthält.
  • Erstelle ein Dictionary das 'Aussen', 'Wohnzimmer' und 'Schlafzimmer' als key enthält und die values dazu enbenfalls ein Dictionary mit den keys 'Temperatur', 'Luftdruck' und 'Luftfeuchte' sind. Die values dazu könnt Ihr selbst bestimmen.

Lesen

  • x = d[key] - gibt den Wert des Schlüssels zurück
  • x = d.items() - erstellt eine Liste mit den key:value-Paaren
  • x = d.keys() - erstellt eine Liste mit den keys
  • x = d.values() - erstellt eine Liste mit den values

Übung

  • Lasst Euch aus der 1. Liste die Worte für einige Zahlen ausgeben.
  • Lasst Euch aus der 2. Liste die englischen Worte für die deutschen Zahlenworte ausgeben.
  • Lasst Euch die Temperaur aller 3 Messstellen anzeigen.
  • Spielt ein bischen mit den 3 Methoden herum.

Erweitern

  • d[neuer_key] = value

Übung

  • Fügt zu den beiden ersten Dictionaries weitere Items hinzu.
  • Versucht dem Datensatz des Wohnzimmer noch den Messwert co2 hinzuzufügen.

Verändern

  • value eines items ändern
    • d[key] = neuer_Wert
  • key eines items ändern
    • d[neuer_key] = d[alter_key]
      del[alter_key]
    • d[neuer_key] = d.pop(alter_key)

Übung

  • Verändere einige Werte in dem 3. Dictionary.
  • Ändere im 3. Dictionary den Namen Luftfeuchte in Feuchte.

Verkleinern

  • d.pop(key) - gibt das item mit dem key zurück und entfernt es.

Übung

  • Lese die Werte des key Feuchte aus und entferne diese Items.

Sortieren

  • Dictionaries sind grundsätzlich unsortiert!
  • In Python gibt es inzwischen auch sortierte Dictionaries. In Micropython habe diese noch keinen Eingang gefunden.

Suchen

  • kommt wahrscheinlich im 2. Teil

Löschen

  • del d[k] löscht das eine Item.
  • d.clear() löscht alle items.

Übung

  • Lösche alle Luftdruck Items.
  • Lösche alle Items des 3. Dictionaries.
  • Lösche das 3. Dictionary komplett.


Strings

  • Strings kann man als Sonderform von Listen betrachten, die nur Zeichen enthalten.
  • Deshalb kann man sie auch so behandeln wie Listen. (Stimmt nur bedingt!)
  • Strings sind aber immutable also unveränderlich
    • wenn ein String verändert wird muss jedesmal ein neuer String angeleg werden.

Übung (für Zuhause)

  • Testet aus welche Methoden von Listen bei Strings funktionieren.

Zusammenführen

  • str1 + str2
  • ' '.join((str1, str2))

Übung

  • Erstelle mehrere Strings und probiere beide Methoden zum Zusammenführen.

Vervielfachen

  • str1 * n

Übung

  • Spiele ein wenig mit der Multiplikation von Strings.

Ausrichten

  • s.center(width)
    • fillchar geht hier nicht!
  • .ljust() und .rjust() gibt es Microphyton nicht.

Übung

  • gibt deine Strings in verschiedenen Spaltenbreiten zentriert aus.

Formatierung

Es gibt in Python 3 Arten Texte zu formatieren. In diesem Fall bedeutet das, Einfügen von Werten in einen besthenden Text. Davon stehen in Micropython nur die 2 älteren Methoden zur Verfügung. Die neueste, f-Formatierung genannt, gibt es in Micropython noch nicht. Bei Internetsuchen zur Formatierung in Python stößt man inzwischen meist auf die f-Formatierung. Das ist für Micropython wenig hilfreich. Deshalb ist es sinnvoller nach %-Formatierung oder .format() zu suchen.

%-Formatierung

.format()-Formatierung

Weitere Datenstrukturen

Diese werden nur zur Kenntniss gegeben. Sie werden hier nicht behandelt.

Tuple

immutable Liste
my_tuple = (1, 2, 'Hallo')

Set

Für Mengen
menge = {1, 2, 'Hallo'}
Elemente einer Menge müssen einmalig sein!

Array

Nur über Modul array.

Navigation

Zurück zu Micropython Kurs 2023 - Teil 1
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite