print("Hello, World")Hello, World
In diesem Abschnitt erklären wir anhand von Beispielen die Grundlagen der Python-Programmierung. Wir arbeiten mit dem Notebook aus dem vorherigen Kapitel weiter.
Geben Sie in einer Codezelle Folgendes ein und führen Sie die Zelle aus
print("Hello, World")Hello, World
Das Notebook hat den Inhalt der Zelle gelesen, ihn als Python-Code interpretiert, ausgeführt und die Antwort unter der Zelle gedruckt.
Um Hilfe zu einem beliebigen Python-Objekt zu erhalten, fügen Sie ihm zwei Fragezeichen hinzu:
print??Signature: print(*args, sep=' ', end='\n', file=None, flush=False) Docstring: Prints the values to a stream, or to sys.stdout by default. sep string inserted between values, default a space. end string appended after the last value, default a newline. file a file-like object (stream); defaults to the current sys.stdout. flush whether to forcibly flush the stream. Type: builtin_function_or_method
oder verwenden Sie die Funktion help().
help(print)Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Machen Sie sich noch keine Gedanken über die Begriffe „Python-Objekt“ und „Funktion“. Ihre genaue Bedeutung wird in zukünftigen Übungseinheiten geklärt.
Es ist oft nützlich, Ihrem Code erklärenden Text hinzuzufügen. Dieser Text sollte vom Python-Interpreter übersprungen werden. Python verwendet das # Zeichen für Kommentare. Alles zwischen dem # Zeichen und das Ende der Zeile wird ignoriert:
print("Hello, ") # print("World")Hello,
Wenn Sie diese Zelle ausführen, wird nur die erste print-Funktion ausgeführt, da die zweite vom Python-Interpreter als Kommentar behandelt wird. Verwenden Sie Kommentare, um komplizierte oder nicht offensichtliche Teile des Codes zu dokumentieren.
In Python besteht eine Variable aus einem Objekt und seinem Namen. Das Gleichheitszeichen (=) wird verwendet, um einem Objekt einen Namen zuzuordnen. Variablennamen können aus Groß- und Kleinbuchstaben, Ziffern und Unterstrichen bestehen, dürfen jedoch nicht mit einer Ziffer beginnen. Hier erstellen wir eine Reihe von Variablen namens height, width usw.
# Eigenschaften eines Buches mit A4-Seiten
height = 0.21022 # in [m] <- weil Einheiten nicht offensichtlich sind
width = 0.29730 # in [m]
nb_pages = 434
title = "The life of Edgar"Mithilfe von Variablen können neue Variablen definiert werden. Berechnen wir die Oberfläche der Buchseiten.
area = nb_pages * height * width
print("Oberfläche des Buches '", title, "' is", area)Oberfläche des Buches ' The life of Edgar ' is 27.124308204
Alle Python-Variablen haben einen Typ, der definiert, wie sie verwendet werden können. Beispielsweise können ganze Zahlen (int in Python) oder Gleitkommazahlen (float) für mathematische Operationen verwendet werden und Zeichenfolgen (str) können zur Manipulation von Textteilen verwendet werden. Wenn Sie nicht sicher sind, welchen Typ eine bestimmte Variable hat, überprüfen Sie dies mit der Funktion type.
print(type(area))
print(type(nb_pages))
print(type(title))<class 'float'>
<class 'int'>
<class 'str'>
Die Verwendung von Variablen mit dem falschen Typ in einer Operation schlägt fehl.
title + area--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[36], line 1 ----> 1 title + area TypeError: can only concatenate str (not "float") to str
Der Python-Interpreter informiert Sie darüber, dass ein TypeError aufgetreten ist und wo er aufgetreten ist. Im Python-Sprachgebrauch wurde ein TypeError ausgelöst.
Python ist dynamisch typisiert. Das bedeutet, dass eine Variable ihren Typ ändern kann, wenn sich ihr Objekt ändert. Das Folgende gilt in Python.
x = height
print(type(x))
x = nb_pages
print(type(x))
x = title
print(type(x))<class 'float'>
<class 'int'>
<class 'str'>
In Python gibt es einige vordefinierte Spezialvariablen. true, false, None und andere. Sie existieren immer und können nicht geändert werden. None zeigt an, dass kein Wert existiert.
Boolesche Variablen werden verwendet, um die Wahrheit einer Aussage darzustellen. Sie können über die speziellen Variablen true (wahr) und false (falsch) direkt zugewiesen werden.
abe_lincoln_lies = False
pinocchio_lies = TrueAlternativ kann der Wahrheitswert das Ergebnis eines Python-Ausdrucks sein. Wenn der Wert einer Variablen ungleich None ist (im Fall von Zeichenfolgen oder Containern: nicht leer), wird der Ausdruck im Allgemeinen als true betrachtet, andernfalls als false.
print(bool(area))
print(bool(0))True
False
Die Ergebnisse von Vergleichen sind ebenfalls boolesch.
print(height == width) # Gleichheitsvergleich
print(height < width) # größer als der Vergleich
print(height != width) # UngleichheitsvergleichFalse
True
True
Python verfügt über eine große Bibliothek mit Modulen, die Sie importieren können, um auf zusätzliche Variablen und Funktionen zuzugreifen. Die Module, die wir in diesem Kurs am häufigsten verwenden werden, sind + numpy, das grundlegende Paket für wissenschaftliches Rechnen mit Python. + scipy, Sammlung von Software für Mathematik, Naturwissenschaften und Ingenieurwesen + matplotlib, eine 2D-Plotbibliothek
Module können mit Hilfe der import-Anweisung auf unterschiedliche Weise importiert werden. Die einfachste Form ist einfach import <Modulname>.
import numpyNach dem Import sind alle Variablen von „numpy“ als numpy.<var> zugänglich.
print(numpy.pi)
print(numpy.sin(numpy.pi/2))3.141592653589793
1.0
Es kann lästig sein, immer <Modulname>.<Variablenname> einzugeben. Sie können Ihnen das Leben erleichtern, indem Sie selektive Importe oder Alias-Importe verwenden. Bei selektiven Importen importieren Sie nur die Variablen, die Sie interessieren.
from numpy import log, e
print(log(e))1.0
Bei Alias-Importen geben Sie einem Modul einen kürzeren Namen.
import numpy as np
np.cos(np.pi)-1.0
Schließlich können selektiver und Alias-Import auch kombiniert werden.
from numpy import pi as PI
print(PI)3.141592653589793
Bisher haben wir nur einfache, einzelne Variablen betrachtet. Sehr oft ist es jedoch praktisch, Variablen zu gruppieren und als eine Einheit zu behandeln. Hier werden wir uns insbesondere zwei Containertypen ansehen, die liste und das dictionary (Wörterbuch).
Eine list ist ein eindimensionaler, geordneter Container von Python-Objekten. Die Syntax zum Erstellen einer Liste ist eckige Klammern ([]).
my_list = [6, 24.5, True, "Hakuna Matata"]
print(my_list)[6, 24.5, True, 'Hakuna Matata']
Die Variablen in einer Liste werden als Elemente bezeichnet und können jedes Python-Objekt sein, sogar eine andere Liste.
my_new_list = [1, PI, my_list, None]
print(my_new_list)[1, 3.141592653589793, [6, 24.5, True, 'Hakuna Matata'], None]
Listen können mit der Methode extend erweitert werden, oder einzelne Elemente können mit der Methode append an sie angehängt werden.
my_list = [1, 2, 3]
my_list.extend([4, 5, 6])
print(my_list)
# Beachten Sie den Unterschied
my_list = [1, 2, 3]
my_list.append([4, 5, 6])
print(my_list)
my_list = [1, 2, 3]
my_list.append(4)
print(my_list)[1, 2, 3, 4, 5, 6]
[1, 2, 3, [4, 5, 6]]
[1, 2, 3, 4]
Häufig möchten Sie auf einzelne Elemente oder einen Teil einer Liste zugreifen. In Python erfolgt dies über eckige Klammern ([]).
my_list = [1, 2, 3, 4, 5, 6, 8, 9]
print(my_list[0])
print(my_list[1])1
2
Beachten Sie, dass die Listenindizes bei Null beginnen, d. h. der Index des ersten Listenelements ist 0. Sie können eine Liste auch rückwärts indizieren, indem Sie negative Indizes verwenden.
print(my_list[-1])
print(my_list[-2])9
8
Wenn Sie auf einen Ausschnitt (Slice) der Liste, zugreifen möchten, definieren Sie einen Indexbereich, indem Sie einen Start- und einen Stoppindex angeben. Diese werden durch durch einen Doppelpunkt (:) getrennt.
print(my_list[2:5])
print(my_list[5])[3, 4, 5]
6
Beachten Sie, dass das Element my_list[5] nicht Teil der ausgewählten Unterliste ist. Ein Slice ist so definiert, dass es am Startindex inklusive und am Stopindex des Slice exklusiv ist.
Wenn Sie entweder den Start- oder den Stoppindex weglassen, wählt Python sinnvolle Standardwerte.
print(my_list[:3]) # die ersten drei Punkte
print(my_list[-2:]) # die letzten 2 Artikel
print(my_list[:]) # alle Artikel--------------------------------------------------------------------------- NameError Traceback (most recent call last) Cell In[20], line 1 ----> 1 print(my_list[:3]) # die ersten drei Punkte 2 print(my_list[-2:]) # die letzten 2 Artikel 3 print(my_list[:]) # alle Artikel NameError: name 'my_list' is not defined
Darüber hinaus kann ein Slice auch einen dritten Parameter haben: den Schritt. Dies kann nützlich sein, wenn Sie beispielsweise jeden dritten Artikel anzeigen möchten.
print(my_list[0:-1:3])[1, 4, 8]
Ebenso wie Indizes kann der Schritt auch ein negativer Wert sein. Eine einfache Möglichkeit, eine Liste umzukehren, besteht darin, einen Schritt von -1 zu verwenden.
print(my_list[::-1])[9, 8, 6, 5, 4, 3, 2, 1]
Zusätzlich zum Elementzugriff können Indizes auch zum Ändern oder Entfernen von Elementen zur bzw. aus der Liste verwendet werden.
print(my_list)
my_list[2] = "A"
print(my_list)
my_list[3:5] = ['x', True]
print(my_list)
del my_list[5]
print(my_list)[1, 2, 3, 4, 5, 6, 8, 9]
[1, 2, 'A', 4, 5, 6, 8, 9]
[1, 2, 'A', 'x', True, 6, 8, 9]
[1, 2, 'A', 'x', True, 8, 9]
Ein Wörterbuch (dict) ist eine ungeordnete Sammlung von Schlüssel/Wert-Paaren. Das bedeutet, dass in einem Wörterbuch jedes Schlüsselobjekt mit einem Wertobjekt verknüpft ist. Schlüssel müssen innerhalb eines Wörterbuchs eindeutig sein, aber mehrere Schlüssel können auf denselben Wert verweisen.
Die Syntax zum Erstellen eines Wörterbuchs besteht aus geschweiften Klammern ({}), die Schlüssel:Wert-Paare umgeben
my_dict = {"height": height, "width": width, "title": title}
print(my_dict){'width': 0.2973, 'height': 0.21022, 'title': 'The life of Edgar'}
Sie können auf Wertobjekte in einem Wörterbuch zugreifen, indem Sie deren Schlüssel als Index verwenden
print(my_dict["title"])The life of Edgar
Sie können den Inhalt eines Diktats auch über die Tasten ändern
my_dict["weight"] = 379.8e-3 # in kg
my_dict["nb_pages"] = nb_pages
del my_dict["weight"]
print(my_dict){'width': 0.2973, 'nb_pages': 434, 'height': 0.21022, 'title': 'The life of Edgar'}
Wenn Sie versuchen, auf einen nicht vorhandenen Schlüssel zuzugreifen, wird ein KeyError ausgelöst
del my_dict["hakuna matata"]--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-31-b85b46565a4a> in <module>() ----> 1 del my_dict["hakuna matata"] KeyError: 'hakuna matata'
print(my_dict[24])--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-32-40f0f7df6cb7> in <module>() ----> 1 print(my_dict[24]) KeyError: 24
Python teilt Ihnen mit, dass die Schlüssel hakuna matata und 24 nicht im Wörterbuch vorhanden sind.
Sie sollten etwas über Variablen und Typen in Python gelernt haben und gesehen haben, dass Python eine dynamisch typisierte Sprache ist, in der Variablen ihren Typ ändern können.
Sie verstehen, wie Sie benötigte Variablen aus externen Modulen importieren, und ohne genau zu wissen, was eine Python-Funktion ist, haben Sie die Funktionen print, type, numpy.cos und mehrere andere verwendet.
Sie wissen, wie man Listen- und Wörterbuchcontainer erstellt und diese mithilfe von Indizes manipulieren kann.
In diesem Kurs lernen Sie gerade so viel Python, dass Sie unsere Übungen zur Numerik von Differentialgleichungen bewältigen können. Wenn Sie daran interessiert sind, eine umfassendere Grundlage für die Durchführung wissenschaftlicher numerischer Berechnungen zu erhalten, ist das Buch Effective Computation in Physics eine hervorragende Ressource. Zögern Sie nicht, uns bei Fragen zu kontaktieren.