Datentypen#

Midjourney: Datatype Jungle, ref. Henri Rousseau

The definition of ‘insanity’ in programming is doing the same thing over and over again and expecting different data types

— Linus Torvalds

Folien/PDF#

Variablen in Python#

Fast alle Programmiersprachen benutzen Variablen, um Werte abzuspeichern. Eine Variable ist dabei eine Zuweisung eines Wertes zu einem Namen. Intern verweist dieser Name dann auf die Speicheradresse im Arbeitsspeicher des Programmes, wo der Wert gespeichert ist. Dadurch kann man bei der Programmierung mit dem Namen der Variable arbeiten, ohne sich um die genaue Speicheradresse kümmern zu müssen.

📘 Definition: Variable
Bei der Programmierung ist eine Variable ein Wert, der bei der Ausführung eines Computerprogramms auftritt und meist verändert werden kann. Eine Variable wird normalerweise im Quelltext durch einen Namen bezeichnet, hat einen Datentypen und eine Adresse im Speicher des Computers.

Neben Variablen gibt es auch Konstanten. In den meisten compilierten Programmiersprachen gibt es spezielle Syntax, um Konstanten zu definieren, da diese direkt in den Programmcode hinterlegt werden und nicht im Arbeitsspeicher des Programmes.

📘 Definition: Konstante
Eine Konstante ist ein Wert, der nicht verändert werden kann, nachdem er einmal zugewiesen wurde.

In Python gibt es keine speziellen Konstanten, aber es ist üblich, Variablen, die als Konstanten verwendet werden sollen, in Großbuchstaben zu schreiben, um sie von normalen Variablen zu unterscheiden. Sowohl Konstanten als auch Variablen haben einen Datentyp, der angibt, welche Art von Wert sie speichern können.

📘 Definition: Datentyp
Der Datentyp einer Variable bestimmt den Typ des Wertes, der in der Variable gespeichert ist und welche Operationen auf diesem ausgeführt werden können. Z.B. ob es sich um eine Zahl, einen Text oder eine Liste handelt.

Der Datentyp einer Variable wird in Python automatisch bestimmt, wenn der Wert zugewiesen wird. Deshalb nennt man Python auch eine dynamisch typisierte Sprache. Das heißt, dass wir den Datentypen einer Variable nicht vorher festlegen müssen, sondern er dynamisch durch Zuweisung eines Wertes zur Variable festgelegt wird. In anderen Programmiersprachen muss der Datentyp einer Variable oft explizit deklariert werden, bevor der Wert zugewiesen wird. Diese nennt man auch statisch typisierte Sprachen. Sie gelten als sicherer und fehlerfreier, da der Datentyp einer Variable bereits zur Compile-Zeit überprüft wird.

Eine Zuweisung geschieht durch den ‘=’ Operator auf dessen linker Seite immer der Variablenname steht und rechts der Wert, der zugewiesen werden soll. In Python können Variablen beliebige Namen haben, solange sie den Regeln für Bezeichner entsprechen. Ein Bezeichner darf nur Buchstaben, Ziffern und Unterstriche enthalten, darf nicht mit einer Ziffer beginnen und darf keine reservierten Schlüsselwörter der Programmiersprache verwenden.

nummer = 1  # variablenname = wert

Der Wert einer Variable kann mit print(variablenname) angezeigt werden

print(nummer)
1

In einem Notebook, wie diesem, wird automatisch auf die letzte Code-Zeile in einem Code-Block ein print() angewendet. Also können wir auch schreiben

nummer
1

Grundsätzlich sollte man bei der Benennung von Variablen darauf achten, dass sie aussagekräftig sind und den Inhalt der Variable beschreiben. Das erleichtert das Verständnis des Codes und die Wartung des Programms. Es gibt hierbei einige Regeln

  • Verwenden Sie Namen, die die Bedeutung und den Inhalt der Variablen klar vermitteln.

  • Vermeiden Sie übermäßig generische Namen wie “Daten” oder “v”.

  • Halten Sie die Namenskonventionen in Ihrem Code konsistent.

  • Verwenden Sie Kleinbuchstaben mit Unterstrichen (_) zur Trennung von Wörtern (Snake Case), z.B. meine_variable.

  • Vermeiden Sie Sonderzeichen wie ä, ö, ü, ß da diese in der Zeichenkodierung Probleme verursachen können.

  • Verwenden Sie keine reservierten Schlüsselwörter der Programmiersprache als Variablennamen (z.B. if, for, while).

  • Vermeiden Sie Abkürzungen oder Akronyme, es sei denn, sie sind allgemein verständlich (z.B. “BIP”).

  • Streben Sie nach einem Gleichgewicht zwischen Klarheit und Kürze.

Hier sind einige Beispiele für gute und schlechte Variablennamen:

Gut

Schlecht

Beschreibung

age

a

Steht eindeutig für das Alter einer Person.

first_name

fn

Beschreibt eindeutig den Vornamen.

birth_year

by

Eindeutig und verständlich für das Geburtsjahr.

email_address

email

Verdeutlicht, dass es sich um eine E-Mail-Adresse handelt.

is_on

on

is_ zeigt, dass es sich um einen Wahrheitswert handelt.

product_list

products

Macht deutlich, dass es sich um eine Liste handelt.

score_total

score

Zeigt, dass es sich um die Gesamtsumme handelt.

user_count

count

Gibt an, dass es sich um die Anzahl der Nutzer handelt.

Datentypen#

Es gibt verschiedene Datentypen, die in Python und in Programmiersprachen allgemein verwendet werden können. Man unterscheidet einfache und zusammengesetzte Datentypen. Einfache Datentypen (Primitive Datentypen) können nur einen Wert des entsprechenden Wertebereichs aufnehmen. Zusammengesetzte Datentypen (Komplexe Datentypen) sind ein Datenkonstrukt, welches aus einfacheren Datentypen besteht. Da sie theoretisch beliebig komplex werden können, werden sie auch häufig schon zu den Datenstrukturen gezählt.

{width=250px}

Der Datentyp einer Variable wird mit type(variablenname) bestimmt und mit print(type(variablenname)) ausgegeben.

print(type(nummer)) # in einem program nutzt man die print() funktion um eine ausgabe zu erzeugen
<class 'int'>

Da Python eine dynamisch typisierte Sprache ist, können wir den Datentyp einer Variable durch eine neue Zuweisung einfach ändern.

nummer = 2     # die Variable nummer hat jetzt den Wert 2, was immer noch numerisch ist
print("Wert: ", nummer, "\nDatentyp: ", type(nummer))
Wert:  2 
Datentyp:  <class 'int'>
nummer = "text" # text ist kein numerischer Wert sondern ein Text-String
print("Wert: ", nummer, "\nDatentyp: ", type(nummer))
Wert:  text 
Datentyp:  <class 'str'>

Numerische Datentypen#

Numerische Datentypen sind Datentypen, die zur Darstellung und Verarbeitung von Zahlen verwendet werden. Sie bilden die Grundlage für mathematische Berechnungen in Programmiersprachen. Zu den numerischen Datentypen zählen ganze Zahlen (Integer), Gleitkommazahlen (Float) und komplexe Zahlen.

  • Ganze Zahlen (Integer): Sie repräsentieren Zahlen ohne Nachkommastellen, sowohl positive als auch negative Werte. In vielen Programmiersprachen gibt es verschiedene Varianten, die sich durch ihre Speicherkapazität unterscheiden, wie z.B. Short, Int oder Long.

  • Gleitkommazahlen (Float): Diese Datentypen werden verwendet, um Zahlen mit Dezimalstellen darzustellen. Sie ermöglichen die Darstellung von Brüchen und sehr großen oder sehr kleinen Zahlen durch eine wissenschaftliche Notation.

Die genaue Bezeichnung und Größe der numerischen Datentypen kann je nach Programmiersprache variieren. In Python werden numerische Werte automatisch dem passenden Typ zugeordnet, ohne dass der Programmierer die Größe oder das Vorzeichen explizit angeben muss.

{width=500px}

Python unterscheidet intern nur zwischen int (Integer) und float (Gleitkommazahl). Es gibt keine speziellen Datentypen für Short, Long oder Double wie in anderen Programmiersprachen. Der Vorteil von Python als dynamisch typisierte Programmiersprache ist, dass Python intern die passende Repräsentation wählt. Man kann also z.B. auch problemlos sehr lange Integer Werte speichern, welche in den meisten typisierten Sprachen nicht verarbeitet werden könnten, da die Zahl zu groß ist. Dies ist insbesondere bei Berechnungen mit sehr großen Zahlen (wie Multiplikation) sehr hilfreich, da dabei keine Überläufe passieren können, wenn die Ergebnisse den Zahlenbereich überschreiten.

nummer = 3.14  # die Variable nummer hat jetzt den Wert 3.14, was eine Gleitkommazahl ist
print("Wert: ", nummer, "\nDatentyp: ", type(nummer))
Wert:  3.14 
Datentyp:  <class 'float'>
nummer = 1232321361278362746384633213232142142131231312323123212132313231332132312 # die Variable nummer hat jetzt einen sehr langen Integer Wert
print("Wert: ", nummer, "\nDatentyp: ", type(nummer))
Wert:  1232321361278362746384633213232142142131231312323123212132313231332132312 
Datentyp:  <class 'int'>

Boolesche Datentypen#

In allen Programmiersprachen gibt es boolesche Datentypen, um Wahrheitswerte auszudrücken und logische Operationen auszuführen.

{width=450px}

In Python gibt es den Datentyp bool und die Wahrheitswerte True und False für Wahr und Falsch. Zu beachten ist hierbei die Großschreibung des Anfangsbuchstaben, da diese zwischen den Programmierspachen sehr stark variieren kann.

richtigoderfalsch = True
print("Wert: ", richtigoderfalsch, "\nDatentyp: ", type(richtigoderfalsch))
Wert:  True 
Datentyp:  <class 'bool'>

Die Variable richtigoderfalsch hat den Datentypen bool.

Die komplette Großchreibung oder Kleinschreibung des Wahrheitswertes True ist z.B. nicht erlaubt.

richtigoderfalsch = TRUE
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[10], line 1
----> 1 richtigoderfalsch = TRUE

NameError: name 'TRUE' is not defined

Bei einem Fehler wird der Code nicht ausgeführt also hat sich auch der Wert der Variable nicht geändert

print(richtigoderfalsch)
True

Textuelle Datentypen#

Textuelle Datentypen werden verwendet, um Buchstaben und Zeichenfolgen darzustellen. Ein einzelnes Zeichen wird als Char bezeichnet, während eine Folge von mehreren Zeichen als String bezeichnet wird. Strings können auch als zusammengesetzte Datentypen betrachtet werden, da sie aus mehreren Zeichen bestehen.

{width=450px}

Python unterscheidet zwischen Char und Strings nicht. Für beide gibt es den Datentyp str. Ein String ist eine Zeichenkette, die aus einer beliebigen Anzahl von Zeichen besteht. Strings werden in Python in Anführungszeichen gesetzt, entweder in einfachen (') oder in doppelten (") Anführungszeichen.

zeichen = 'a'
print("Wert: ", zeichen, "\nDatentyp: ", type(zeichen))
Wert:  a 
Datentyp:  <class 'str'>
zeichenkette = 'hallo welt'
print("Wert: ", zeichenkette, "\nDatentyp: ", type(zeichenkette))
Wert:  hallo welt 
Datentyp:  <class 'str'>

Python unterscheidet diese Datentypen nicht und nutzt für beide den Datentyp str.

Das Zeichen ist in Python einfach ein str mit der Länge 1. Wir bestimmen die Länge mit der len() Funktion.

print(len(zeichen))
1
print(len(zeichenkette))
10

In Python kann eine Zeichenkette (String) im Code mit einfachen ' oder doppelten " Anführungszeichen geschrieben werden. Je nach dem welches Anführungszeichen muss die Zeichenkette auch mit dem gleichen Anführungszeichen beendet werden. Dies hat den Vorteil, dass sich verschachtelte Anführungszeichen nicht extra kodiert (escaped) werden müssen.

zeichenkette = "hallo 'welt'"
print("Wert: ", zeichenkette, "\nDatentyp: ", type(zeichenkette))
Wert:  hallo 'welt' 
Datentyp:  <class 'str'>

Sollte eine Kodierung (Escaping) notwendig sein, so geschieht sie in Python mit \. Also geht die alternative Schreibweise

zeichenkette = 'hallo \'welt\''
print("Wert: ", zeichenkette, "\nDatentyp: ", type(zeichenkette))
Wert:  hallo 'welt' 
Datentyp:  <class 'str'>

Python hat auch einige besonders einfache Syntaxzucker. Zum Beispiel kann man Formatierte Zeichenketten einfach erzeugen, indem wir ein f vor die Zeichenkette schreiben. In dem String kann man dann direkt Variablenwerte schreiben mit {variablenname} die dann in der Zeichenketten vor Ausgabe ersetzt werden.

zeichenkette = f"der wert von nummer ist '{nummer}'"
print("Wert: ", zeichenkette, "\nDatentyp: ", type(zeichenkette))
Wert:  der wert von nummer ist '1232321361278362746384633213232142142131231312323123212132313231332132312' 
Datentyp:  <class 'str'>

Binäre Datentypen#

Im Computer werden alle Daten binär gespeichert, also als eine Folge von 0 und 1. Hierfür gibt es in Programmiersprachen spezifische binäre Datentypen, die es ermöglichen, Daten in dieser Form zu repräsentieren, ohne sie in andere Formate umzuwandeln (z.B. Text, Nummern, Bool). Binäre Datentypen können damit beliebige Zeichen repräsentieren. Sie kommen häufig vor, um komplexe Dateien wie Bilder, Videos oder CAD-Dateien zu speichern.

Da sie an sich nur eine Zeichenkette sind, können sie auch als String interpretiert werden. Deshalb kann man sie Python erzeugen, indem man vor einem String b schreibt. Das erzeugt einen binären String (auch Bytearray), dessen Datentyp in Python ist bytes.

wort = b"byte"
print("Wert: ", wort, "\nDatentyp: ", type(wort))
Wert:  b'byte' 
Datentyp:  <class 'bytes'>

Der Wert eines einzelnen Byte in dem Bytearray ist normalerweise eine natürliche Zahl von 0 bis 255. In Python wird hierfür ein ´int´ benutzt. Das lässt sich zeigen, indem man auf den Index eines einzelnen Bytes in dem Bytearray zugreift.

print("Wert: ", wort[0], "\nDatentyp: ", type(wort[0]))
Wert:  98 
Datentyp:  <class 'int'>

Sequenzen#

Sequenzen sind eine geordnete Abfolge an Werten. Sequenzen werden in Programmiersprachen meist als Array bezeichnet. Array haben oft eine feste, unveränderliche Länge und nur Werte von einem Datentyp, der bei der Erzeugung definiert wird. Die Werte in dem Array sind allerdings veränderlich.

Listen sind ein weiterer typischer Datentyp für Sequenzen. Listen haben oft keine feste Länge und können beliebig erweitert werden.

{width=450px}

Python unterstützt den Datentyp Array nicht, sondern nur Listen (list) und Tupel (tuple). Beide können unterschiedliche Datentypen enthalten. list werden durch eckige Klammern deklariert, mit den einzelnen Werten die durch Komma getrennt werden. Diese Werte können unterschiedliche Datentypen haben.

liste = [1, 2, 3, "a", True]
print("Wert: ", liste, "\nDatentyp: ", type(liste))
Wert:  [1, 2, 3, 'a', True] 
Datentyp:  <class 'list'>

Einzelne Werte in einer Liste können überschrieben werden. Dazu kann man auf einzelne Indexe in der Liste zugreifen.

liste[1] = "anders"
print("Wert: ", liste)
Wert:  [1, 'anders', 3, 'a', True]

Listen können modifiziert werden und dadurch ihre Länge ändern (weshalb sie keine Arrays sind). Um ein neuen Wert an die Liste anzuhängen kann die append()-Funktion der Liste genutzt werden.

liste.append(False)
print("Wert: ", liste)
Wert:  [1, 'anders', 3, 'a', True, False]

Die Länge der Liste kann mit der Funktion len() bestimmen.

print(len(liste))
6

tuple haben im Vergleich zu Listen eine feste Länge in Python. Da sie unterschiedliche Datentypen enthalten können, sind sie auch keine Arrays.

tuple = (1,2,3,"a", True)
print("Wert: ", tuple, "\nDatentyp: ", type(tuple))
Wert:  (1, 2, 3, 'a', True) 
Datentyp:  <class 'tuple'>

tuple sind im Gegensatz zu Listen unveränderlich (immutable).

tuple[0]=True
print(tuple)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[26], line 1
----> 1 tuple[0]=True
      2 print(tuple)

TypeError: 'tuple' object does not support item assignment

Zusätzlich gibt es den besonderen Datentyp range um Sequenz von ganzen Zahlen zu erzeugen. Sie werden mit der Funktion range erzeugt.

zahlenfolge = range(1,10)
print("Wert: ", zahlenfolge, "\nDatentyp: ", type(zahlenfolge))
Wert:  range(1, 10) 
Datentyp:  <class 'range'>

Um auf ein Element zuzugreifen wird die Elementzahl in eine eckige Klammer geschrieben. In Python wird der Index in einer Liste ab 0 gezählt (ab 1 in einigen Programmiersprachen).

print( liste[0] ) # gibt das erste Element aus
print( liste[1] ) # printed das zweite Element aus
1
anders

Eine Besonderheit in Python ist, dass auch negative Indizes erlaubt sind um das Ende von Listen zuzugreifen (sowas nennt man unter Programmierern Syntaxzucker).

print( liste[-1] )             # gibt das letzte Element aus
print( liste[len(liste)-1] )   # wäre die übliche umständliche Variante das letze Elemente auszugeben über die Länge len(x)
False
False

In Python kann auch auf Listenteile zugegriffen werden durch Slicing. Das kann man nutzen, um Teillisten zu erzeugen.

print(liste[0:10]) # greift auf die ersten zehn Element zu (ohne 10)
print(liste[:10])  # greift auch auf die ersten zehn Element zu (ohne 10)
print(liste[-10:]) # greift auf die letzten zehn Element zu
[1, 'anders', 3, 'a', True, False]
[1, 'anders', 3, 'a', True, False]
[1, 'anders', 3, 'a', True, False]

Mengen#

Mengen stellen eine Gruppe an Werten ohne Wiederholungen dar, so wie in der Mathematik.

{width=450px}

Der Datentyp für Mengen in Python heißt set. Sie werden durch geschweifte Klammern deklariert.

menge = {1, 2, 3}
print(menge)
print(type(menge))
{1, 2, 3}
<class 'set'>

Mengen kann man gut nutzen, um z.B. alle einzigartigen Werte in einer Liste mit Wiederholungen zu finden wie aus einer Namensliste.

listemitwiederholung = list([1,2,2,2,2,2,3])
menge = set(listemitwiederholung)
print("Wert: ", menge, "\nDatentyp: ", type(menge))
Wert:  {1, 2, 3} 
Datentyp:  <class 'set'>

Ein andere wichtige Anwendung von Sets ist, um zu prüfen ob ein Element in dem Set ist. Dies kann man mit dem Schlüsselwort in machen

1 in menge
True

Das geht genauso bei der Liste ist allerdings langsamer, insbesondere wenn die Liste sehr groß ist (>> 1000 Länge).

1 in listemitwiederholung
True

Wörterbücher#

Wörterbücher werden in vielen Programmiersprachen genutzt, um Schlüssel-Wert-Paare zu verwalten, wie zum Beispiel die Eigenschaften und ihre Werte eines Datenobjektes. Wörterbücher bilden mathematisch eine Abbildung von einer Menge an Schlüsseln auf eine Menge an Werte dar (Key-Value). Die Menge der Schlüssel darf keine Wiederholung aufweisen, die Menge der Werte schon.

{width=450px}

Wörterbücher werden in den meisten Programmiersprachen als Map (von engl. Mapping = Abbildung) bezeichnet. In Python werden sie als dict bezeichnet. Sie werden durch geschweifte Klammern und Schlüssel/Wert-Paaren definiert.

haus = {
  "Gebäudetyp": "Wohnhaus", 	
  "Baujahr": 2022
}
print("Wert: ", haus, "\nDatentyp: ", type(haus))
Wert:  {'Gebäudetyp': 'Wohnhaus', 'Baujahr': 2022} 
Datentyp:  <class 'dict'>

Neue Werte können den Wörterbüchern hinzugefügt werden, indem man einem Schlüssel als Index einen Wert zuweist.

haus['Material'] = "Stein"
print("Wert: ", haus, "\nDatentyp: ", type(haus))
Wert:  {'Gebäudetyp': 'Wohnhaus', 'Baujahr': 2022, 'Material': 'Stein'} 
Datentyp:  <class 'dict'>

Auch hier kann man testen, ob ein Element im dict ist.

'Material' in haus
True

Werte können über den Index auch gelöscht werden mit dem Schlüsselwort del.

del haus['Material']
print("Wert: ", haus, "\nDatentyp: ", type(haus))
Wert:  {'Gebäudetyp': 'Wohnhaus', 'Baujahr': 2022} 
Datentyp:  <class 'dict'>

Null-Werte#

In vielen Programmiersprachen gibt es auch einen Wert, um einen fehlenden Wert darzustellen, z.B. wenn etwas nicht da ist.

{width=450px}

Der Null-Wert in Python heißt None und sein Datentyp ist NoneType.

noch_kein_wert = None
print("Wert: ", noch_kein_wert, "\nDatentyp: ", type(noch_kein_wert))
Wert:  None 
Datentyp:  <class 'NoneType'>

Der None Wert wird oft genutzt, um zum Beispiel zu markieren, dass eine Variable zwar existiert, aber noch kein Wert zugewiesen wurde.

Der Null-Wert ist in der Informatik umstritten, da er zu Fehlern führen kann, wenn Programmiersprachen ihn sehr oft benutzen (wie Java). Einige moderne Programmiersprachen haben ihn deshalb abgeschafft.

Das Problem ist, dass man nicht unterscheiden kann, ob etwas None - nicht definiert - oder None - als Null definiert - ist.

Das passiert auch in Python. Die get() Funktion eines dict gibt z.B. den Wert für ein Schlüssel im Wörterbuch und None wenn dieser nicht vorhanden ist.

print(haus.get('schluessel_fehlt'))
None

Allerdings kann man auch None einem Wert im Dictionary zuweisen.

haus['ist_none'] = None
print(haus.get('ist_none'))
None

In beiden Fällen gibt die get() Funktion None zurück und können nicht mehr direkt unterscheiden, ob der Wert nicht da ist oder mit None belegt ist.

Modifizierbarkeit (Mutability)#

Grundsätzlich unterscheidet man in Programmiersprachen zwischen veränderlichen (mutable) und unveränderlichen (immutable) Datentypen.

📘 Definition: Mutability
Modifizierbarkeit beschreibt die Veränderbarkeit von Datenstrukturen.
  • Ist ein Datentyp mutable können Variablen von diesem Typ direkt verändert werden.

  • Ist er immutable kann man diese nur durch eine komplette Neubelegung verändern.

Um Programmierfehler zu verhindern und Zugriffssicherheit (Datenschutz) zu gewährleisten, unterscheiden einige Programmiersprachen sehr strikt zwischen mutable und immutable Datentypen.

Mutabel (änderbar)

Immutabel (nicht änderbar)

list

tuple

set

frozenset

dict

frozendict

bytearray

bytes

Quiz#

--- shuffleQuestions: true shuffleAnswers: true --- ### Was sind die grundlegenden Kategorien von Datentypen? > Es gibt zwei Kategorien - [X] Einfache - [X] Zusammengesetzt - [ ] Text - [ ] Objekte - [ ] Zahlen ### Was sind einfache Datentypen? > Es gibt vier einfache Datentypen - [X] Numerisch - [X] Logisch - [X] Textuel - [X] Binär - [ ] Sequenz - [ ] Mengen ### Was sind zusammengesetzte Datentypen? > Es gibt drei zusammengesetzte Datentypen - [ ] Ganze Zahlen - [ ] Textuel - [ ] Array - [X] Sequenz - [X] Mengen - [X] Wörterbuch ### Was sind numerisch Datentypen? > Es gibt drei numerisch Datentypen - [X] Ganze Zahlen - [ ] Halbe Zahlen - [X] Natürliche Zahlen - [ ] Unnatürliche Zahlen - [X] Reelle Zahlen - [ ] Komplexe Zahlen ### Was sind textuelle Datentypen? > Es gibt zwei textuelle Datentypen - [ ] Ganze Zahlen - [X] String - [X] Char - [ ] Komplexe Zahlen - [ ] Blobs ### Was sind logische Datentypen? > Es gibt einen logischen Datentyp - [X] Boolean - [ ] String - [ ] Char - [ ] True/False ### Was sind binäre Datentypen? > Es gibt zwei binäre Datentypen - [ ] Ganze Zahlen - [X] Byte - [ ] Char - [X] Byte Array ### Welche Datentypen werden in Python mit `int` ausgedrückt? > `int` wird für drei Datentypen benutzt - [X] Ganze Zahlen - [X] Natürliche Zahlen - [ ] Reelle Zahlen - [ ] Komplexe Zahlen - [X] Byte - [ ] Char ### Welche Datentypen werden in Python mit `str` ausgedrückt? > `str` wird für zwei Datentypen benutzt - [X] String - [X] Char - [ ] Byte - [ ] Byte Array ### Welche Datentypen sind das? ```python variable = ["a", "b", "c"] ``` > Zwei Datentypen sind richtig - [ ] String - [ ] Dict - [ ] Set - [X] List - [ ] Array - [X] Sequenz - [ ] Mengen - [ ] Wörterbuch ### Welche Datentypen sind das? ```python variable = {"a", "b", "c"} ``` > Zwei Datentypen sind richtig - [ ] String - [ ] Dict - [X] Set - [ ] List - [ ] Array - [ ] Sequenz - [X] Mengen - [ ] Wörterbuch ### Welche Datentypen sind das? ```python variable = {"a":1, "b":2, "c":3} ``` > Zwei Datentypen sind richtig - [ ] String - [X] Dict - [ ] Set - [ ] List - [ ] Sequenz - [ ] Mengen - [X] Wörterbuch ### Welche der folgenden Python-Datentypen sind **mutabel**? > Drei Datentypen sind richtig - [x] list - [x] set - [x] dict - [ ] tuple - [ ] str ### Welche Aussage zur Mutabilität ist **korrekt**? - [ ] Ein `tuple` kann nach seiner Erstellung verändert werden. - [ ] `frozenset` ist eine mutierbare Variante von `set`. - [x] `bytearray` ist eine mutierbare Version von `bytes`. - [ ] Strings (`str`) in Python sind mutabel. ### Was bedeutet „mutabel“ im Kontext von Python-Datentypen? - [x] Der Inhalt eines Objekts kann nach der Erstellung verändert werden. - [ ] Das Objekt kann nicht kopiert werden. - [ ] Das Objekt belegt immer mehr Speicher als ein immutables Objekt. - [ ] Ein mutables Objekt kann nicht Teil eines Sets sein.