Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Hallo Datentypen

About Python, variable types and script execution. For interactive reading and executing code blocks Binder and find b01-pybase.ipynb, or install Python and JupyterLab locally.

Python Umwelt

These pages are written with JupyterLab . For the best learning experience make sure to read about Integrierte Entwicklungsumgebungen (IDE) before starting this tutorial.

Die ersten Codezeilen

Die Beispiele in den ersten Schritten drehen sich um Eis, um das Nutzen von einfachen Code-Snippets zu illustrieren. Wenn Sie Eis nicht mögen, ersetzen Sie es durch Ihre Lieblings-Kategorie der Dinge.

Letztlich sind Sie bereit, *** die erste Antwort (Ausgang) aus der *Python Konsole zu erhalten. Beginnen Sie mit einem einfachen Aufruf der print-Funktion durch Eingabe:

print("This is output from the digital ice cream printer.")
This is output from the digital ice cream printer.

Rufen Sie an, dass der print-Befehl, wie alle anderen Python-Befehle, die folgen, entweder in einer Python-Konsole (z.B. Conda Prompt unter Windows oder Terminal unter Linux) oder in Ihrer Lieblings-IDE ausgeführt werden kann. Darüber hinaus können wir den print-Befehl in einer *Python-Datei aufschreiben, die auf .py endet (z.B. icecream_tutorial.py) und die Datei ausführen. Zum Beispiel in *PyCharm:

  • Erweitern Sie den Projektzweig (wenn noch nicht getan: auf der linken Seite des Fensters)

  • Klicken Sie mit der rechten Maustaste in den Projektordner, wählen Sie New > Python File und nennen Sie die neue Python (.py)-Datei (z.B. icecream_tutorial.py).

  • Kopieren Sie den obigen print("...")code in die neue Python-Datei und speichern Sie ihn.

  • Rechtsklicken Sie in der Python-Datei, dann Run icecream_tutorial.py (alternativ: drücken Sie die Ctrl +Shift +F10keys).

  • Nun sollte die Python Console unten im Fenster erscheinen und den Text im obigen print-Befehl drucken.

In jedem *anderen (IDE) Terminal, cd an das Verzeichnis, in dem die Python-Datei (icecream_tutorial.py) lebt, geben Sie dann python icecream_tutorial.py ein und schlagen Sie Enter.

Mit dem " apostrophes im Befehl print geben wir eine string Variable an den Befehl print. Anstatt " zu verwenden, kann man auch ' verwenden, aber es ist wichtig, die gleiche Art von Apostroph am Anfang und am Ende der String (Text) Variable zu verwenden.

Eine Randnote: In Python3 print ist eine Funktion, nicht ein Stichwort wie in Python2. print ist z.B. nützlich, um eine Skript-Show zu machen, wo sie derzeit läuft. Es ist auch möglich, andere Arten von Variablen als Strings zu drucken, aber die Kombination von numerischen und Textvariablen erfordert mehr Codierung (siehe nächste Abschnitte).

Python Variablen und Datentypen

Die oben gezeigte print Funktion hat bereits string Variablen involviert. Darüber hinaus gibt es ein paar andere variable (Daten) Typen in Python:

  • Text

  • Borolen

  • Anzahl (numerisch)

  • Tupel

  • Liste

  • Wörterbuch

Text

Textvariablen in Python sind strings (str) die aus mehreren Kennzeichen bestehen (chr):

Rendered table
Source code

| Typ | Beispiel | Beschreibung | ... | str | "apple" | String umarmt mit doppelten Zitaten | | | 'apple' | String umarmt mit einzelnen Zitaten | | """apple""" | Literal string (multi-line text) | | chr | "a" | Zeichen (Einheit eines Zeichens) |

Darüber hinaus haben String-Variablen einige eingebaute Funktionen, die die Codierung erleichtern. Um eine Stringvariable zu erstellen (instantiate) verwenden Sie das =-Zeichen wie folgt:

flavor1 = "vanilla" # str
first_letter = "v" # str / char
print(flavor1.upper())
print(flavor1[0])
print(flavor1.split("ll")[0])
VANILLA
v
vani

Charaktere können in Zahlen und umgekehrt umgerechnet werden. Die eingebaute ord()-Funktion gibt den Unicode-Code-Punkt eines Zeichens zurück, und chr() tut die Rückseite. Dies ist beispielsweise nützlich, um über alphabetisch sortierte Listen zu iterieren.

print(ord("c"))  # character -> integer (Unicode code point)
print(chr(99))   # integer -> character
99
c

Boolen

Boolean Variablen sind entweder True (1) oder False (0) mit vielen nützlichen Code-Implementierungen. Wir kommen später in der Rubrik unter bedingten (if ...) Aussagen an Booleaner zurück (bool).

bowl = False
print("The bowl exists: " + str(bowl))
The bowl exists: False

Zahlen (Numerisch)

Python kennt ein paar verschiedene numerische Datentypen:

| Typ | Beispiel | Beschreibung |

| int | 10 | Signiert Integer | | float | 5.382 | Floating point real number | |complex |1.43j | Complex number; j (oder J) bezeichnet die imaginäre Einheit |

Um eine numerische Variable zu erstellen, verwenden Sie das =-Zeichen wie folgt:

scoops = 2 # int
weight = 0.453 # float

Python benötigt keine Typzuweisung für eine Variable, da sie ** eine hochrangige, interpretierte Programmiersprache* ist (außer z.B. C++). Sobald jedoch eine Variable einem Datentyp zugeordnet wurde, ändern Sie sie nicht im Code (es ist nur eine gute Praxis - so dass Scoops ganze Zahlen bleiben).

Wenn eine Druckaussage numerische und Textvariablen kombiniert, müssen die numerischen Variablen zunächst in Text umgewandelt werden, und dann concatenated in einen String. Es gibt mehrere Möglichkeiten, mehrere Variablen in einem Textstring zu kombinieren:

print("My ice cream consists of %d scoops." % scoops) # use %d for integers, %f for floats and %s for strings
print("My ice cream weighs %1.3f kg." % weight)
print("My ice cream weighs " + str(weight) + " kg.")
print("My ice cream weighs {0} kg and has {1} scoops".format(weight * scoops, scoops)) # multiple variable conversion

# f-strings (Python 3.6+) are the modern, preferred way to format text:
print(f"My ice cream weighs {weight:.3f} kg and has {scoops} scoops.")
My ice cream consists of 2 scoops.
My ice cream weighs 0.453 kg.
My ice cream weighs 0.453 kg.
My ice cream weighs 0.906 kg and has 2 scoops
My ice cream weighs 0.453 kg and has 2 scoops.
print("My ice cream weighs " + weight + " kg.") # this cannot work because weight is a float
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[7], line 1
----> 1 print("My ice cream weighs " + weight + " kg.") # this cannot work because weight is a float

TypeError: can only concatenate str (not "float") to str

Liste

Eine Liste ist eine Reihe von Werten, die mit Brackets [] umfasst wird. Bei den Werten kann es sich um einen anderen Datentyp (z.B. numerisch, Text, Wörterbuch oder Tupel) oder um eine andere Liste (sogenannte nierte Listen) handeln.

flavors = ["chocolate", "bread", flavor1] # a list of strings
nested_list = [[1, 2, 3], ["a", "b", "c"]]
print(nested_list)
print("A list of strings: " + str(list("ABC")))
[[1, 2, 3], ['a', 'b', 'c']]
A list of strings: ['A', 'B', 'C']

Die Einträge einer Liste werden entries genannt und entries können von einer Liste angehängt, eingefügt oder gelöscht werden.

Auch Listen haben viele nützliche Einbaufunktionen:

flavors.append("cherry") # append an entry at the end
print(flavors)
flavors.insert(0, "lemon") # insert an entry at position 0
print(flavors)
print(f"There are {len(flavors)} flavors in my list.")
print(*flavors) # print all elements of the list (note: cannot be concatenated to a str)
print("This is all I have: " + str(flavors[:]).strip("[]"))
del flavors[2] # bread is not a flavor, so let's remove it
print("This is all I have: " + ", ".join(flavors))      
['chocolate', 'bread', 'vanilla', 'cherry']
['lemon', 'chocolate', 'bread', 'vanilla', 'cherry']
There are 5 flavors in my list.
lemon chocolate bread vanilla cherry
This is all I have: 'lemon', 'chocolate', 'bread', 'vanilla', 'cherry'
This is all I have: lemon, chocolate, vanilla, cherry

Tupfen

Ein Tupel stellt eine Sammlung von Python-Objekten dar, ähnlich einer Liste, und die Reihenfolge der Werte (Datentypen) in einem Tupel kann jeden Typ annehmen. Elemente eines Tupels werden auch mit ganzen Zahlen indexiert. Im Gegensatz zu den Listen wird ein Tupel mit runden Klammern () umarmt und ein tuple ist unveränderlich, während *Listen mutierbar sind. Dies bedeutet, dass ein Tupelobjekt nach der Erstellung nicht mehr verändert werden kann. Warum möchten Sie dann Tupel verwenden? Die Antwort ist, dass ein Tupel speichereffizienter ist als ein mutierbares Objekt, weil der nichtmutbare Tupel Referenzen auf vorhandene Objekte erstellen kann. Darüber hinaus kann ein Tupel als key eines Wörterbuchs (siehe unten) dienen, was mit einer Liste nicht möglich ist.

a_tuple = ("a text element", 1, 3.03) # example tuple
print(a_tuple[0])
print(a_tuple[-1]) # last element of a tuple (this also works with lists ..)

# comparison of lists and tuples
import time # we need this package (module here) and we will learn more about modules later
print("patience ...")

# iterate over a list with 100000 elements
start_time = time.perf_counter()
a_list = [] # empty list
x = range(100000)
for item in x: a_list.append(item)
print("Run time with list: " + str(time.perf_counter() - start_time) + " seconds.")

# iterate over a tuple with 100000 elements with modifying the tuple
start_time = time.perf_counter()
new_tuple = () # empty tuple
x = range(100000)
for item in x: new_tuple = new_tuple + (item,)
print("Run time with tuple modification: " + str(time.perf_counter() - start_time) + " seconds.")

# iterate over a tuple with 100000 elements if no modification of the tuple is needed
start_time = time.perf_counter()
new_tuple = tuple(range(100000)) 
for item in new_tuple: pass
print("Run time without tuple modification: " + str(time.perf_counter() - start_time) + " seconds.")
a text element
3.03
patience ...
Run time with list: 0.011113214000033622 seconds.
Run time with tuple modification: 12.448654852999425 seconds.
Run time without tuple modification: 0.006154237000373541 seconds.

Wörterbuch

Diktionäre sind ein leistungsfähiger Datentyp in Python und haben die Grundstruktur my_dict = {key: value}. Im Gegensatz zu Listen wird ein Element eines Wörterbuchs aufgerufen, indem man statt einer Eintragsnummer eine key anruft. Ein Wörterbuch wird nicht aufgezählt und keys nur auf ihre values (was auch immer die Daten geben value ist).

my_dict =  {1: "Value 1", 2: "Value 2"}
another_dict = {"list1": [1, 2, 3], "number2": 1}
my_dict [1]
'Value 1'

Auch Wörterbücher haben viele nützliche eingebaute Funktionen:

my_dict.update({3: "Value 3"})  # add a dictionary element 
my_dict
del my_dict[1] # delete a dictionary element 
len(my_dict) # get the length (number of dictionary elements)
2

Darüber hinaus können zwei Listen der gleichen Länge zipped in ein Wörterbuch:

weight = [0.5, 1.0, 1.5, 2.0]
price = [1, 1.5, 1.8, 2.0]
apple_weight_price = dict(zip(weight, price))
print("{0} kg apples cost EUR {1}.".format(weight[2], apple_weight_price[weight[2]]))
1.5 kg apples cost EUR 1.8.

Sets

Ein Python-Set ist ein mutierbares Objekt, das mit kurilen Klammern augenblicklich ist. Sets sind unorderiert (im Gegensatz zu Listen und Tupeln), und daher für mathematische Operationen nützlich, wie z.B. Gewerkschaft, Schnitt, Differenz oder symmetrische Differenz von Elementen. Der folgende Codeblock enthält die Instantiation von zwei Sätzen und die Anwendung von mathematischen Operatoren.

ice_shop_a = {"vanilla", "chocolate", "green"}
ice_shop_b = {"blue", "chocolate", "vanilla"}

print("Ice shops united: " + str(ice_shop_a | ice_shop_b))
print("Both shops offer in common: " + str(ice_shop_a & ice_shop_b))
print("This is what shop a has, but not shop b: " + str(ice_shop_a - ice_shop_b))
print("This is what shop b has, but not shop a: " + str(ice_shop_b.difference(ice_shop_a)))
print("This is what is unique to both shops (symmetric difference): " + str(ice_shop_a ^ ice_shop_b))
Ice shops united: {'green', 'vanilla', 'chocolate', 'blue'}
Both shops offer in common: {'vanilla', 'chocolate'}
This is what shop a has, but not shop b: {'green'}
This is what shop b has, but not shop a: {'blue'}
This is what is unique to both shops (symmetric difference): {'green', 'blue'}

Betreiber

Die folgenden Operatoren vergleichen Datentypen und Ausgangswerte (TrueorFalse):

  • a == b a gleich b (gleicher Wert)

  • a is b a ist b (gleiches Objekt im Speicher — ein strenger Test als ==)

  • a and b a and b

  • a or b a oder b

  • a <= b a kleiner oder gleich b (ähnlich ohne gleiches Zeichen)

  • a >= b a größer oder gleich b (ähnlich ohne gleiches Zeichen)

  • a in b a in b (z.B. Mitgliedstest in einem String oder einer Liste — siehe Beispiel unten)

print(not False)
print(1 == 1)  # value equality
print(1 == 2)
print("ice" in "ice cream") 
True
True
False
True

Erfolgsprüfung lernen

Nehmen Sie den Lernerfolgstest für dieses Jupyter Notebook.