Python 使用用户取消打印检查字符串中的字符
当我在代码中为字符串声明变量时,它会起作用,例如:Python 使用用户取消打印检查字符串中的字符,python,Python,当我在代码中为字符串声明变量时,它会起作用,例如: messagetoencode="readthis" encodedMsg=[] for letter in messagetoencode: encodedMsg.append(encode[letter.upper()]) print "result is ", encodedMsg 但是,当我尝试对用户输入执行相同的操作时,它不起作用: lst = list(raw_input("Please enter a messag
messagetoencode="readthis"
encodedMsg=[]
for letter in messagetoencode:
encodedMsg.append(encode[letter.upper()])
print "result is ", encodedMsg
但是,当我尝试对用户输入执行相同的操作时,它不起作用:
lst = list(raw_input("Please enter a message to encode: "))
encodedMsg=[]
for letter in lst:
encodedMsg.append(encode[letter.upper()])
print "result is ", encodedMsg
我发现了一个回溯错误,知道为什么吗
错误:
Please enter a message to encode: hello
Traceback (most recent call last):
File "Untitled 3.py", line 27, in <module>
obfuse.append(encode[letter.upper()])
KeyError: 'O'
请输入要编码的消息:hello
回溯(最近一次呼叫最后一次):
文件“Untitled 3.py”,第27行,在
obfuse.append(编码[letter.upper()])
KeyError:'O'
问题是,O
不在encode
字典中。如果您想分配一个默认值,而不是像这样失败,您可以使用这样的方法
obfuse.append(encode.get(letter.upper(), None))
现在,如果在encode
中找不到任何键,则返回None
。实际上,您可能希望在代码中包含O
的映射。问题在于字典中的键O
。文本中不存在该错误,因此没有发生错误。但如果在输入中包含o
,则会出现此错误
好的,真正的解决方案是在编码字典中有键'O'
要处理意外输入,可以执行如下检查:
for letter in lst:
if letter not in encode:
raise KeyError("Sorry i don't know how to encode this letter!")
encodedMsg.append(encode[letter.upper()])
你能把错误贴在这里吗?顺便问一下,encode
的内容是什么?这里的encode
是什么?实际上,我对大量的投票结果感到惊讶。我确信OP将能够显示更多信息,只花了3分钟。错误很明显,encode
字典不包含键'O'
。这不是问题所在。我尝试了另一个字符串,得到了这个“TypeError:'dict'对象不可调用”@user1902535-您是否碰巧使用了括号而不是方括号?换句话说,当您应该执行此操作时,您是否正在执行此encode(letter.upper())
编码[letter.upper()]
?您的代码有很多错误。在这里发布整个代码。@iCodez-我想这就是它不起作用的原因,比如@user1902535。请向我们展示您正在使用的代码和encode
字典。