Название: Routineaufgaben mit Python automatisieren
Автор: Al Sweigart
Издательство: Bookwire
Жанр: Математика
isbn: 9783960889571
isbn:
Die Verwendung von range(len(supplies)) in dieser for-Schleife ist sehr praktisch, da der Code in der Schleife auf den Index (die Variable i) zugreifen und den Wert an diesem Index (also supplies[i]) lesen kann. Das Beste aber ist, dass range(len(-supplies)) stets sämtliche Indizes von supplies durchläuft, wie viele Elemente die Liste auch immer enthält.
Die Operatoren in und not in
Mit den Operatoren in und not in können Sie feststellen, ob sich ein Wert in einer Liste befindet oder nicht. Wie die anderen Operatoren werden auch in und not in in Ausdrücken verwendet und verknüpfen zwei Werte: den Wert, nach dem in der Liste gesucht werden soll, und die betreffende Liste. Ausgewertet werden diese Ausdrücke zu einem booleschen Wert. Probieren Sie das wie folgt in der interaktiven Shell aus:
>>> 'howdy' in ['hello', 'hi', 'howdy', 'heyas']
True
>>> spam = ['hello', 'hi', 'howdy', 'heyas']
>>> 'cat' in spam
False
>>> 'howdy' not in spam
False
>>> 'cat' not in spam
True
In dem folgenden Beispielprogramm gibt der Benutzer den Namen eines Haustiers ein, woraufhin geprüft wird, ob dieser Name in einer Liste von Haustieren steht. Geben Sie den folgenden Code im Dateieditor ein und speichern Sie ihn als myPets.py:
myPets = ['Zophie', 'Pooka', 'Fat-tail']
print('Enter a pet name:')
name = input()
if name not in myPets:
print('I do not have a pet named ' + name)
else:
print(name + ' is my pet.')
Die Ausgabe sieht wie folgt aus:
Enter a pet name:
Footfoot
I do not have a pet named Footfoot
Der Trick mit der Mehrfachzuweisung
Die Mehrfachzuweisung (technisch Tupel Unpacking genannt) ist eine Abkürzung, mit der Sie in einer einzigen Codezeile mehreren Variablen Werte aus einer Liste zuweisen können. Wenn Sie das einzeln tun wollten, müssten Sie wie folgt vorgehen:
>>> cat = ['fat', gray, 'loud']
>>> size = cat[0]
>>> color = cat[1]
>>> disposition = cat[2]
Stattdessen aber können Sie einfach Folgendes schreiben:
>>> cat = ['fat', gray, 'loud']
>>> size, color, disposition = cat
Dabei muss es jedoch genauso viele Variablen wie Elemente in der Liste geben. Anderenfalls meldet Python den Fehler ValueError:
>>> cat = ['fat', gray, 'loud']
>>> size, color, disposition, name = cat
Traceback (most recent call last):
File "<pyshell#84>", line 1, in <module>
size, color, disposition, name = cat
ValueError: not enough values to unpack (expected 4, got 3)
Die Funktion enumerate() für Listen
Um die Indizes der Listeneinträge abzurufen, können Sie in der for-Schleife statt range(len(eineListe)) auch die Funktion enumerate() verwenden. Bei jedem Schleifendurchlauf gibt enumerate() zwei Werte zurück, nämlich den Index eines Eintrags in der Liste und den Eintrag selbst. Der folgende Code führt zum selben Ergebnis wie der aus »Listen in for-Schleifen« weiter vorn in diesem Kapitel:
>>> supplies = ['pens', 'staplers', 'flamethrowers', 'binders']
>>> for index, item in enumerate(supplies):
... print('Index ' + str(index) + ' in supplies is: ' + item)
Index 0 in supplies is: pens
Index 1 in supplies is: staplers
Index 2 in supplies is: flamethrowers
Index 3 in supplies is: binders
Die Funktion enumerate() ist praktisch, wenn Sie im Schleifenblock sowohl den Eintrag als auch seinen Index benötigen.
Die Funktionen random.choice() und random.shuffle() für Listen
Das Modul random enthält zwei Funktionen, die Listen als Argumente entgegennehmen. Die Funktion random.choice() gibt einen zufällig ausgewählten Listeneintrag zurück. Um das auszuprobieren, geben Sie Folgendes in die interaktive Shell ein:
>>> import random
>>> pets = ['Dog', 'Cat', 'Moose']
>>> random.choice(pets)
'Dog'
>>> random.choice(pets)
'Cat'
>>> random.choice(pets)
'Cat'
Sie können sich random.choice(eineListe) als Kurzfassung von eineListe[random.randint(0, len(eineListe) - 1] vorstellen.
Die Funktion random.shuffle() sortiert die Listeneinträge um. Dabei ändert sie unmittelbar die vorhandene Liste, anstatt eine neue zurückzugeben. Das können Sie wie folgt in der interaktiven Shell ausprobieren:
>>> СКАЧАТЬ