返回键错误的原因?

时间:2017-12-21 14:00:44

标签: python

我正在使用这个Scrabble代码将字母转换为数字,但每当我尝试运行它时,它会返回一个Key Error:'',我不知道为什么会发生这种情况或如何修复它。

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()

返回错误:

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: ' '

2 个答案:

答案 0 :(得分:0)

您的输入可能有一个空格不在乐谱词典中。尝试:

高于分数

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

答案 1 :(得分:0)

在需要用户输入的任何程序中,您需要管理输入错误

我建议在您要迭代的单词上使用.strip()方法。它会摆脱空间。此外,您可能想要检查角色是否在您的词典中,我相信您应该这样做:

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

此外,在迭代你的dict时,如果你需要键和值,你应该使用.items()(python 3.x)或.iteritems()(python 2.7):

for key, value in your_dict.iteritems():