Python-Referenz: Anweisungen

Aus Wikibooks

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Allgemeine Anweisungen 00% fertig

[Bearbeiten] Die import-Anweisung 00% fertig

[Bearbeiten] Die print-Anweisung 20% fertig

Die print-Anweisung druckt etwas auf den Textbildschirm und gibt einen Zeilenvorschub aus.

print "Hallo, Welt!"

Soll der Zeilenvorschub unterdrückt werden, so kann das Komma verwendet werden. Die beiden folgenden Anweisungen drucken genau eine Zeile aus:

print "Spam",
print "und Eggs"

Man beachte, daß das Komma ein Leerzeichen einfügt.

[Bearbeiten] Die def-Anweisung 00% fertig

[Bearbeiten] Die lambda-Anweisung 00% fertig

[Bearbeiten] Die class-Anweisung 00% fertig

[Bearbeiten] Die del-Anweisung 00% fertig

[Bearbeiten] Die exec-Anweisung 00% fertig

[Bearbeiten] Die global-Anweisung 80% fertig

Muss man Variablen außerhalb der aktuellen Methode/Funktion verändern, so benötigt man global:

x = 3
def Parrot():
    global x
    x = 4
 
Parrot()
print x

Ohne global wäre eine neue lokale Variable innerhalb der Funktion Parrot() erzeugt worden.

global greift auch bei ineinandergeschachtelten Funktionen. Es wird jeweils die globalste Variable referenziert, die im aktuellen Modul vorliegt:

NumberOfParrots = 3
 
def Parrot():
    NumberOfParrots = 3
 
    def DeadParrot():
        global NumberOfParrots
        NumberOfParrots -= 1
 
    DeadParrot()
    print "Parrot sagt, es leben", NumberOfParrots, "Papageien."
 
print "Leben noch alle", NumberOfParrots, "Papageien?"
Parrot()
print "Es leben noch", NumberOfParrots, "Papageien!"

[Bearbeiten] Bedingte Ausführung 00% fertig

[Bearbeiten] Die if-Anweisung 80% fertig

In Abhängigkeit von einer Bedingung wird in einem Programm verzweigt.

Name = raw_input("Bitte Namen eingeben: ")
if Name != '':
    print "Hallo", Name

Die print-Anweisung wird nur ausgeführt, wenn die Bedingung (Name != "") wahr ist.

[Bearbeiten] Die else-Anweisung 80% fertig

Ist die Bedingung, die if abfragt, nicht erfüllt, kann mit der else-Anweisung dazu passend Code ausgeführt werden:

Name = raw_input("Bitte Namen eingeben: ")
if Name != '':
    print "Hallo", Name
else:
    print "Sie haben wohl keinen Namen, was?"

[Bearbeiten] Die elif-Anweisung 80% fertig

Feiner verzweigen lässt sich mit elif. Hier können weitere Abstufungen der Abfrage unternommen werden.

Name = raw_input("Bitte Namen eingeben: ")
if Name == '':
    print "Sie haben wohl keinen Namen, was?"
elif Name == "test":
    print "Das ist doch nicht ihr richtiger Name, oder?"
else:
    print "Hallo,", Name, "!"

[Bearbeiten] Schleifen 00% fertig

[Bearbeiten] Die while-Schleife 80% fertig

Die while-Schleife wiederholt eine Anweisungsfolge so lange, wie eine Bedingung erfüllt ist. Damit lässt sich eine Endlosschleife leicht implementieren:

while True:
    print "Endlos..."

Die folgende while-Schleife wird gebraucht, um hartnäckig nach dem Namen zu fragen. Beendet wird sie erst, wenn ein Name eingegeben wurde:

Name = '' 
while Name == '': 
    print "Wie heisst Du? ", 
    Name = raw_input()

[Bearbeiten] Die for-Schleife 80% fertig

Die for-Schleife wird gebraucht, wenn die Anzahl der Wiederholungen von vornherein bekannt ist. Das folgende Beispiel schreibt die Ziffern 0 bis 4 auf den Bildschirm:

for i in xrange(5):
    print i

Ebenfalls lässt sich über ein Tupel oder eine Liste iterieren, die Ausgabe sind die einzelnen Listenelemente:

for elem in ['spam', 'eggs']:
    print elem

Nützlich in dem Zusammenhang ist, daß in der for-Schleife mehrere Variablen verwendet werden können:

for num, elem in enumerate(['spam', 'eggs']):
    print num, elem

[Bearbeiten] Kontrollfluss 00% fertig

[Bearbeiten] Die pass-Anweisung 80% fertig

Die pass-Anweisung dient alleine als Platzhalter für Stellen im Code, wo syntaktisch eine Anweisung nötig ist aber semantisch nichts geschehen soll. Die pass-Anweisung ist auf Grund der Defintion von Code-Blöcken in Python notwendig. In C oder Java würde anstelle von pass beispielsweise ein ; oder { } stehen.

Beispiele:

class Klasse(object):
    pass
liste = [1,2,3]
try:
    liste[10]
except IndexError:
    pass

[Bearbeiten] Die continue-Anweisung 80% fertig

Die continue-Anweisung darf nur innerhalb von while- und for-Schleifen vorkommen und wird dabei verwendet, die restlichen Anweisungen des Schleifendurchlaufs abzubrechen, um direkt mit dem nächsten Durchlauf der direkt umschließenden Schleife fortzufahren. Zu beachten ist allerdings, dass continue nicht innerhalb eines Code-Blocks einer finally-, def- oder class-Anweisung stehen darf, selbst wenn sich diese in einer Schleife befinden.

Beispiele:

# gibt alle geraden Zahlen zwischen 1 und 10 aus
for i in range(1,11):
    if i % 2:
        continue
    print i

[Bearbeiten] Die break-Anweisung 00% fertig

[Bearbeiten] Die return-Anweisung 00% fertig

[Bearbeiten] Die yield-Anweisung 50% fertig

Mit der yield-Anweisung lassen sich Generatoren erzeugen. Ein Generator gibt bei jedem Aufruf einen Wert zurück, ohne dass eine Liste erzeugt wird oder das Argument einer Funktion verändert wird. Da man über die Werte, die ein Generator erzeugt iterieren kann, nennt man ihn auch Iterator.

Das Programm gibt einige Zahlen aus:

def generator(von, bis, schritt):
    x = von
    while x < bis:
        yield x # hier kann x abgefragt werden
        x += schritt
 
# dieser Generator kann über die Werte 0.1 ... 0.19 iterieren
MyGen1 = generator(0.1, 0.2, 0.01)
 
# dieser Generator kann über die Werte -1.0 ... 0.9 iterieren
MyGen2 = generator(-1.0, 1.0, 0.1)
 
for i in MyGen1:
    print i
 
for i in MyGen2:
    print i

[Bearbeiten] Ausnamhebehandlung 00% fertig

[Bearbeiten] Die try-Anweisung 00% fertig

[Bearbeiten] Die raise-Anweisung 00% fertig

[Bearbeiten] Die assert-Anweisung 40% fertig

Mit assert(Bedingung) werden im Programm Zusicherungen eingeführt. Sind diese Zusicherungen nicht erfüllt, so wird eine Ausnahme namens AssertionError geworfen.

x = raw_input("Bitte etwas eingeben: ")
assert(x != '') # Hier soll sichergestellt werden, daß keine leere Eingabe erfolgte.
print x
Persönliche Werkzeuge