Название: Routineaufgaben mit Python automatisieren
Автор: Al Sweigart
Издательство: Bookwire
Жанр: Математика
isbn: 9783960889571
isbn:
catName6 = 'Miss Cleo'
Das ist jedoch eine schlechte Vorgehensweise. (Außerdem möchte ich betonen, dass ich in Wirklichkeit nicht so viele Katzen habe!) Erstens kann das Programm niemals mehr Katzennamen speichern, als Variablen zur Verfügung stehen, was zu einem Problem führt, wenn sich die Anzahl der Katzen ändert. Bei Programmen, die auf diese Weise geschrieben sind, gibt es gewöhnlich auch eine Menge an doppeltem oder fast identischem Code. Schauen Sie sich einmal an, wie viel doppelten Code es in dem folgenden Programm namens allMyCats1.py gibt:
print('Enter the name of cat 1:')
catName1 = input()
print('Enter the name of cat 2:')
catName2 = input()
print('Enter the name of cat 3:')
catName3 = input()
print('Enter the name of cat 4:')
catName4 = input()
print('Enter the name of cat 5:')
catName5 = input()
print('Enter the name of cat 6:')
catName6 = input()
print('The cat names are:')
print(catName1 + ' ' + catName2 + ' ' + catName3 + ' ' + catName4 + ' ' +
catName5 + ' ' + catName6)
Anstatt mehrerer ähnlicher Variablen können Sie auch eine einzige Variable mit einem Listenwert verwenden. Die folgende verbesserte Version von allMyCats1.py nutzt eine einzige Liste und kann darin so viele Katzennamen speichern, wie der Benutzer eingibt. Geben Sie den folgenden Quellcode in ein Dateieditorfenster ein und speichern Sie ihn als allMyCats2.py:
catNames = []
while True:
print('Enter the name of cat ' + str(len(catNames) + 1) +
' (Or enter nothing to stop.):')
name = input()
if name == '':
break
catNames = catNames + [name] # list concatenation
print('The cat names are:')
for name in catNames:
print(' ' + name)
Wenn Sie dieses Programm ausführen, erhalten Sie folgende Ausgabe:
Enter the name of cat 1 (Or enter nothing to stop.):
Zophie
Enter the name of cat 2 (Or enter nothing to stop.):
Pooka
Enter the name of cat 3 (Or enter nothing to stop.):
Simon
Enter the name of cat 4 (Or enter nothing to stop.):
Lady Macbeth
Enter the name of cat 5 (Or enter nothing to stop.):
Fat-tail
Enter the name of cat 6 (Or enter nothing to stop.):
Miss Cleo
Enter the name of cat 7 (Or enter nothing to stop.):
The cat names are:
Zophie
Pooka
Simon
Lady Macbeth
Fat-tail
Miss Cleo
Die Ausführung dieser Programme können Sie sich auf https://autbor.com/allmycats1/ und https://autbor.com/allmycats2/ ansehen. Der Vorteil der Verwendung einer Liste besteht darin, dass sich die Daten jetzt in einer Struktur befinden, sodass das Programm sie auf viel flexiblere Art und Weise verarbeiten kann, als wenn sie in mehreren ähnlichen Variablen steckten.
Listen in for-Schleifen
In Kapitel 2 haben Sie gelernt, wie Sie einen Codeblock mithilfe einer for-Schleife eine gegebene Anzahl von Malen ausführen. Technisch gesehen wiederholt eine for-Schleife den Codeblock einmal für jedes Element in einem Listenwert. Nehmen wir an, Sie führen folgenden Code aus:
for i in range(4):
print(i)
Die Ausgabe dieses Programms lautet wie folgt:
0
1
2
3
Der Grund dafür ist, dass der Rückgabewert von range(4) ein sequenzieller Wert ist, den Python ähnlich wie [0, 1, 2, 3] auffasst. (Sequenzen werden weiter hinten in diesem Kapitel im Abschnitt »Sequenzielle Datentypen« behandelt.) Das folgende Programm führt zu der gleichen Ausgabe wie oben:
for i in [0, 1, 2, 3]:
print(i)
Diese for-Schleife durchläuft seine Klausel, wobei die Variable i bei jeder Iteration auf den nächstfolgenden Wert der Liste [0, 1, 2, 3] gesetzt wird.
Eine übliche Python-Technik besteht darin, range(len(eineListe)) in einer for-Schleife zu verwenden, um über die Indizes einer Liste zu iterieren. Geben Sie beispielsweise folgenden Code in die interaktive Shell ein:
>>> supplies = ['pens', 'staplers', 'flamethrowers', 'binders']
>>> for i in range(len(supplies)):
... print('Index ' + str(i) + ' in supplies is: ' + supplies[i])
Index 0 in supplies is: pens
Index 1 in supplies is: staplers
Index 2 in supplies is: flamethrowers
СКАЧАТЬ