Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

E-Mail-Adressen mit einer Liste verwalten

Verwaltung vieler E-Mail-Adressen

Der MSS-Leiter des ...-Gymnasiums möchte allen Schülerinnen und Schülern der Jahrgangsstufe 11 den neuen Kursarbeitsplan per E-Mail zukommen zu lassen. Im Python-Programm, das er für diesen Zweck geschrieben hat, müssen nur noch die E-Mail-Adressen aller Empfänger geeignet verwaltet werden. Deine Mithilfe ist jetzt gefragt!

Wie lässt sich eine Ansammlung von E-Mail-Adressen verwalten? Man könnte hierzu für jede E-Mail-Adresse eine Variable einführen:

# Datenverwaltung
adresse1 = 'amueller@gmx.de'
adresse2 = 'carla2@hotmail.org'
adresse3 = 'herbert.fluhr@web.de'
adresse4 = 'petra@dahm.de'
adresse5 = 'ewen@t-online.de'
adresse6 = 't_schmidt@web.de'
adresse7 = 'nicole.weber@gmx.de'
# Datenverarbeitung
print(adresse1)
print(adresse2)
print(adresse3)
# ...

Wenn auf diese Weise sehr viele E-Mail-Adressen verwalten werden sollen (z.B. die Adrssen von 100 Personen), dann ist dieser Ansatz sicher nicht praktikabel. Ein neuer Ansatz muss also her.

Statt alle Daten einzeln mit Variablen zu verwalten, ist es geschickter, eine Liste als eine Art Daten-Container zu benutzen. Mit Hilfe dieses Daten-Containers werden mehrere einzelne Daten zu einer komplexeren Dateneinheit zusammengefasst. Man benötigt dann nur noch eine Variable, um die Dateneinheit zu verwalten.

# Datenverwaltung
listeAdressen = [
    'amueller@gmx.de',
    'carla2@hotmail.org',
    'herbert.fluhr@web.de',
    'petra@dahm.de',
    'ewen@t-online.de',
    't_schmidt@web.de',
    'nicole.weber@gmx.de'
    ]
# Datenverarbeitung
for adresse in listeAdressen:
    print(adresse)

Aufgabe 1

Teste das Programm. Erweitere die bereits existierende Liste um weitere E-Mail-Adressen. Worin besteht der Vorteil, eine Datenansammlung mit einer Liste zu verwalten?

Zugriff auf die Listenelemente

Natürlich möchte man auch auf die einzelnen Elemente einer Liste zugreifen können. Der folgende Python-Dialog zeigt, wie das geht.

>>> listeAdressen = [
    'amueller@gmx.de',
    'carla2@hotmail.org',
    'herbert.fluhr@web.de',
    'petra@dahm.de',
    'ewen@t-online.de',
    't_schmidt@web.de',
    'nicole.weber@gmx.de'
    ]
>>> listeAdressen
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de', 
'ewen@t-online.de', 't_schmidt@web.de', 'nicole.weber@gmx.de']
>>> listeAdressen[0]
'amueller@gmx.de'
>>> listeAdressen[1]
'carla2@hotmail.org'
>>> listeAdressen[6]
'nicole.weber@gmx.de'
>>> listeAdressen[7]
Traceback (most recent call last):
  ...
    listeAdressen[7]
IndexError: list index out of range
>>> len(listeAdressen)
7
>>> listeAdressen[len(listeAdressen)-1]
'nicole.weber@gmx.de'
>>> listeAdressen[1] = 'carla_meier@online.de'
>>> listeAdressen
['amueller@gmx.de', 'carla_meier@online.de', 'herbert.fluhr@web.de', 'petra@dahm.de', 
'ewen@t-online.de', 't_schmidt@web.de', 'nicole.weber@gmx.de']

Aufgabe 2

Führe selbst einen solchen Python-Dialog durch. Welche Möglichkeiten (und Grenzen) gibt es, auf Listenelemente zuzugreifen?

Eine Liste über den Index durchlaufen

Das folgende Demo-Programm zeigt, wie man eine Liste durchläuft, indem man Schritt für Schritt über den Index auf die einzelnen Listenelemente zugreift.

# Datenverwaltung
liste = ['a', 'b', 'c', 'd', 'e']

# Liste über den Index durchlaufen
index = 0
while index < len(liste):
    print(index)
    print(liste[index])
    index = index + 1

Aufgabe 3

(a) Was leistet das Programm? Kannst du es - ohne vorheriges Testen - vorhersagen?

(b) Entwickle analog ein Programm, das ausgehend von einer Liste mit E-Mail-Adressen die E-Mail-Header erzeugt und auf dem Bildschirm ausgibt:

>>> 
From: mssleiter@burg-kl.de
To: amueller@gmx.de
Subject: Kursarbeiten

From: mssleiter@burg-kl.de
To: carla2@hotmail.org
Subject: Kursarbeiten

...

From: mssleiter@burg-kl.de
To: nicole.weber@gmx.de
Subject: Kursarbeiten
...

(c) Teste auch das folgende Programm. Was leistet der range-Operator?

# Datenverwaltung
liste = ['a', 'b', 'c', 'd', 'e']

# Liste über den Index durchlaufen
for index in range(len(liste)):
    print(index)
    print(liste[index])

Liste über die Elemente durchlaufen

In Python kann man Listen auch direkt über die Elemente durchlaufen.

# Datenverwaltung
liste = ['a', 'b', 'c', 'd', 'e']

# Liste über die Elemente durchlaufen
for element in liste:
    print(element)

Aufgabe 4

(a) Teste auch dieses Programm.

(b) Entwickle wie oben ein Programm, das ausgehend von einer Liste mit E-Mail-Adressen die E-Mail-Header erzeugt und auf dem Bildschirm ausgibt:

>>> 
From: mssleiter@burg-kl.de
To: amueller@gmx.de
Subject: Kursarbeiten

From: mssleiter@burg-kl.de
To: carla2@hotmail.org
Subject: Kursarbeiten

...

From: mssleiter@burg-kl.de
To: nicole.weber@gmx.de
Subject: Kursarbeiten
...
X

Fehler melden

X

Suche