Python中sys.stdin.readline()读取字典键触发KeyError的原因排查
问题原因分析与解决方案
嘿,这个问题我太熟啦!咱们来理清楚到底哪儿出问题了:
错误根源:多余的换行符
你看错误提示里的这行:
KeyError: 'truffelsalade\n'
注意到末尾的\n了吗?这是一个换行符。问题就出在sys.stdin.readline()这个方法上——它读取用户输入的时候,会把你按下回车的那个换行符也一并读取并存储到变量里。也就是说,当你输入truffelsalade然后按回车时,input变量实际存储的是'truffelsalade\n',而你的字典lijst_salades里的键是不带换行符的'truffelsalade',两者不匹配,自然就触发了KeyError。
而你直接写print(lijst_salades['Eiersalade'])能正常运行,是因为你直接传入了和字典键完全一致的字符串,没有多余的换行符干扰。
快速解决方法
只需要在读取输入后,用strip()方法去掉字符串前后的空白字符(包括换行符、空格等)就行,修改后的代码如下:
import sys lijst_salades = {'Eiersalade' : 5.99, 'Paprikasalade' : 6.05, 'truffelsalade': 3.99 } input = sys.stdin.readline().strip() # 加上.strip()处理换行符 print(lijst_salades[input])
这样处理后,不管你输入时带不带多余的换行或空格,都能精准匹配字典里的键啦!
内容的提问来源于stack exchange,提问作者Dakkie15
相关产品推荐
相关产品推荐

