Beispiel - Newsletter

Newsletter

Newsletter werden benutzt, um allen Mitgliedern einer Gruppe Informationen per E-Mail zukommen zu lassen.

So könnten schulinterne Newsletter etwa dazu dienen, allen Schülerinnen und Schülern der Jahrgangsstufe 11 des ...-Gymnasiums den neuen Kursarbeitsplan zukommen zu lassen.

Hierzu benötigt der MSS-Leiter die E-Mail-Adressen aller Schülerinnen und Schüler der 11. Jahrgangsstufe.

Adressliste

Zudem wird ein Programm benötigt, das E-Mails an alle diese Adressen verschickt. Das Verschicken soll hier nur simuliert werden, indem alle E-Mail-Header (das sind die Kopfzeilen) erzeugt und ausgegeben werden.

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: herbert.fluhr@web.de
subject: Kursarbeiten 
...
from: mssleiter@burg-kl.de
to: petra@dahm.de
subject: Kursarbeiten 
...
from: mssleiter@burg-kl.de
to: ewen@t-online.de
subject: Kursarbeiten 
...
from: mssleiter@burg-kl.de
to: t_schmidt@web.de
subject: Kursarbeiten 
...
from: mssleiter@burg-kl.de
to: nicole.weber@gmx.de
...

Verwaltung und Verarbeitung von E-Mail-Adressen

Wie lässt sich eine Ansammlung von E-Mail-Adressen verwalten? Bisher haben wir alle anfallenden Daten mit Hilfe geeigneter Variablen erfasst. Diesen Ansatz könnten wir hier ebenfalls weiter verfolgen.

# 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 Adressen von 100 Personen), dann erweist sich der gewählte Ansatz als 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 zusammenfassen. Man benötigt dann nur noch eine Variable, um die Dateneinheit zu verwalten.

Aufgabe 1

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

# Datenverwaltung
adressen = [
    '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'
    ]
adresseMSSLeiter = 'mssleiter@burg-kl.de'
# Datenverarbeitung
for adresse in adressen:
    print(adresse)

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.

>>> adressen = [
    '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'
    ]
>>> adressen
['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']
>>> adressen[0]
'amueller@gmx.de'
>>> adressen[1]
'carla2@hotmail.org'
>>> adressen[6]
'nicole.weber@gmx.de'
>>> adressen[7]
Traceback (most recent call last):
  ...
    adressen[7]
IndexError: list index out of range
>>> len(adressen)
7
>>> adressen[len(adressen)-1]
'nicole.weber@gmx.de'
>>> adressen[1] = 'carla_meier@online.de'
>>> adressen
['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

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

(b) Teste auch den folgenden Python-Dialog. Welche neuen Möglichkeiten eröffnen sich hier?

>>> adressen[0:2]
?
>>> adressen[2:5]
?
>>> adressen[1:4]
?
>>> adressen[3:3]
?
>>> adressen[3:8]
?
>>> adressen[0:len(adressen)]
?
>>> adressen[2:]
?
>>> adressen[:2]
?
>>> adressen[:]
?

Eine Liste durchlaufen

Wenn man alle Elemente einer Liste durchlaufen möchte, dann kann man das in Python auf mehrere Weisen tun.

# Adressliste
adressen = [
    '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'
    ]

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

# Liste direkt über die Elemente durchlaufen
for adresse in adressen:
    print(adresse)

Aufgabe 3

(a) Probiere das selbst aus. Kannst du alle Bestandteile des Programms erklären?

(b) Wie könnte man bei der oben gegebenen Adressliste die folgende Ausgabe erzeugen?

>>> 
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
...

Hinzufügen und Löschen von Listenelelementen

Listen kann man dynamisch erweitern. Man kann auch wieder Elemente aus einer Liste löschen. Wie das geht, zeigt der folgende Python-Dialog.

>>> adressen = ['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de']
>>> adressen
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de']
>>> adressen + ['b-krewer@t-online.de']
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de', 'b-krewer@t-online.de']
>>> adressen
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de']
>>> adressen = adressen + ['b-krewer@t-online.de']
>>> adressen
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de', 'b-krewer@t-online.de']
>>> adressen[0:1] + adressen[2:5]
['amueller@gmx.de', 'herbert.fluhr@web.de', 'petra@dahm.de', 'b-krewer@t-online.de']
>>> adressen
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de', 'b-krewer@t-online.de']
>>> adressen = adressen[0:1] + adressen[2:5]
>>> adressen
['amueller@gmx.de', 'herbert.fluhr@web.de', 'petra@dahm.de', 'b-krewer@t-online.de']

Aufgabe 4

(a) Führe den Python-Dialog selbst aus. Erkläre, wie die Ergebnisse zustande kommen.

(b) Wie kann man ein neues Listenelement vorne in die Liste setzen? Wie kann man das erste Listenelement löschen? Teste deine Ideen mit geeigneten Python-Dialogen.

X

Fehler melden

X

Suche