2017-12-21 8 views
1

Ich verwende diesen Scrabble-Code, um Buchstaben in Zahlen zu übersetzen, aber jedes Mal, wenn ich versuche, es auszuführen, gibt es einen Schlüsselfehler zurück: '', und ich weiß nicht, warum dies geschieht oder wie es zu beheben ist.Grund für Schlüsselfehler zurückgegeben?

score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
     "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
     "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
     "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
     "x": 8, "z": 10} 
def tracker(): 
    word = input("Please enter a word.") 
    total = 0 
    for i in word: 
     total = total + score[i.lower()] 
    print(total) 
    return total 
def main(): 
    tracker() 
main() 

Gibt den Fehler:

Please enter a word. Yellow 
Traceback (most recent call last): 
    File "H:\Scrabble.py", line 15, in <module> 
    main() 
    File "H:\Scrabble.py", line 14, in main 
    tracker() 
    File "H:\Scrabble.py", line 10, in tracker 
    total = total + score[i.lower()] 
KeyError: ' ' 
+1

gesamt = gesamt + score [i.lower()]? – Transhuman

+0

Sie haben ein Leerzeichen als Eingabe eingegeben ... –

+0

'i' ist ein Leerzeichen und Sie haben kein Leerzeichen in Ihrem Wörterbuch. Eine Option wäre die Verwendung von 'score.get (i.lower(), 0) ', um bei unbekannten Buchstaben auf eine Nullpunktzahl zu setzen. – jonrsharpe

Antwort

0

Ihre Eingabe wahrscheinlich einen Raum hat, die nicht in der Partitur Wörterbuch ist. versuchen:

oben

Partitur
unknown_char=0 
#Whatever the unknown char data should be 

in Tracker()

for i in word: 
    try: 
     total += score[i.lower()] 
    except: 
     total += unknown_char 
0

In jedes Programm, das Benutzereingabe erfordert, müssen SieEingabefehler verwalten.

Ich empfehle die Verwendung .strip() Methode auf das Wort, das Sie durchlaufen werden. Es wird die Räume los. Außerdem sollten Sie überprüfen, ob die Zeichen in Ihrem Dictionnary ist, ich glaube, Sie sollten als solche tun:

if i not in word : raise ValueError("Your error message.") 

Auch wenn durch Ihre dict laufen, sollten Sie .items() (Python 3.x) verwenden oder .iteritems() (Python 2.7), wenn Sie den Schlüssel und den Wert als solche benötigen: