Kapitel 8
Dictionaries
242
Um solche Fehler zu vermeiden, gibt es mehrere Möglichkeiten. Vor einem Zugriff über
einen Schlüssel
key kann man mit dem in-Operator prüfen, ob das Dictionary überhaupt
einen Eintrag mit dem Schlüssel
key besitzt. Beispiel:
Einen Schutz vor Laufzeitfehlern bietet auch die Methode
get(). Sie liefert nur dann einen
Wert, falls der ihr übergebene Schlüssel existiert (und sonst
None). Als optionales zweites
Argument kann man eine Meldung (z.B.
'unbekannt') spezifizieren, die zurückgegeben
wird, falls das erste Argument nicht in der Schlüsselmenge des Dictionarys enthalten ist.
Beispiel:
8.4 Praxisbeispiel: Vokabeltrainer
Ein einfaches Skript zum Üben von Vokabeln auf der Basis eines Dictionarys lautet folgen-
dermaßen:
File "<pyshell#28>", line 1, in <module>
deutsch ['search']
KeyError: search
>>> def uebersetze (wort, d):
i f w ort i n d:
return d[wort]
e l s e :
return 'unbekannt'
>>> uebersetze('slice', deutsch)
['Scheibe', 'Schnitte', 'Stück']
>>> uebersetze ('search', deutsch)
'unbekannt'
>>> deutsch.get('search')
>>> deutsch.get('search', 'unbekannt')
'unbekannt'
# vokabeltrainer.py
import random
#Funktionsdefinitionen
def dict_laden(pfad): #1
d = {}
try:
datei = open(pfad)
liste = datei.readlines()
for eintrag in liste:
243
8.4
Praxisbeispiel: Vokabeltrainer
Erläuterung:
#1: In einem Dictionary sind Englisch-Vokabeln und ihre deutschen Übersetzungen ver-
zeichnet. Das Dictionary wird aus einer Textdatei erstellt (siehe Abschnitt 9.1).
#2: Bei einer Aufgabe wird aus der Schlüsselmenge des Dictionarys (englische Vokabeln)
nach dem Zufallsprinzip eine Vokabel ausgewählt. Das
dict_keys-Objekt, das die Methode
keys() zurückgibt, muss in eine Liste umgewandelt werden, damit auf beliebige Elemente
zugegriffen werden kann.
#3: Der Benutzer muss jetzt die Übersetzung eingeben.
#4: Falls die Eingabe nicht mit einem Wort aus der Liste der Übersetzungen übereinstimmt,
gibt es eine negative Rückmeldung und die Liste der deutschen Wörter wird ausgegeben.
l_eintrag = eintrag.split()
d[l_eintrag[0]] = l_eintrag[1:]
datei.close()
except:
p a ss
return d
def aufgabe(d):
zufall = random.randint(0, len(d.keys())-1)
vokabel = list(d.keys())[zufall] #2
print('Wie lautet das deutsche Wort für',
vokabel+'?')
a n t w ort = inp u t () #3
if antwort not in d[vokabel]: #4
print('Leider falsch.')
print(vokabel, 'bedeutet:', end=' ')
for wort in d[vokabel]:
print(wort, end=' ')
p r int( )
e l s e : #5
print('Richtig!')
del d[vokabel]
# Hauptprogramm
print('Vokabeltrainer')
print()
woerterbuch = dict_laden('c:\\python\\projekt\\woerterbuch.txt')
whi l e wo e r ter b u ch: #6
aufgabe (woerterbuch)
print('Sie haben alle Vokabeln gelernt.')
eingabe = input()

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.