我正在使用这个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: ' '
答案 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():