Читать книгу Routineaufgaben mit Python automatisieren - Al Sweigart - Страница 115
Listen verwenden
ОглавлениеEinsteiger in die Programmierung sind oft versucht, viele einzelne Variablen zu erstellen, um Gruppen ähnlicher Werte zu speichern. Nehmen wir an, ich möchte die Namen meiner Katzen festhalten. Dann könnte ich Code wie den folgenden schreiben:
catName1 = 'Zophie'
catName2 = 'Pooka'
catName3 = 'Simon'
catName4 = 'Lady Macbeth'
catName5 = 'Fat-tail'
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.