为什么我的字典让我"None"值?

  • 本文关键字:None 字典 python dictionary
  • 更新时间 :
  • 英文 :

dic = {'A':'D','N':'Q','B':'E','O':'R','C':'F','P':'S','D':'G','Q':'T','E':'H','R':'U','F':'I','S':'V','G':'J','T':'W',
'H':'K','U':'X','I':'L','V':'Y','J':'M','W':'Z','K':'N','X':'A','L':'O','Y':'B','M':'P','Z':'C'}
user_input = input("Enter the word: ").upper()
Key=str(user_input)
print (dic.get(Key))

这是我的字典,但我得到的唯一答案是None

我试图改变这个结尾,但问题仍然存在:(

user_input = input("Enter the word: ").upper()
print (dic.get(user_input))

有人知道怎么做吗?

看来你误解了字典的工作原理。

如果我猜对了,当你输入ABCD时,你想要得到DEFG。您目前所做的工作仅适用于单个字母(如果您运行dic.get('A'),您将有'D',但dic.get('ABC')将输出None,因为'ABC'不是密钥)。

我相信您想要的是执行某种替换密码,这很容易用str.maketransstr.translate完成:

dic = {'A':'D','N':'Q','B':'E','O':'R','C':'F','P':'S','D':'G',
'Q':'T','E':'H','R':'U','F':'I','S':'V','G':'J','T':'W',
'H':'K','U':'X','I':'L','V':'Y','J':'M','W':'Z','K':'N',
'X':'A','L':'O','Y':'B','M':'P','Z':'C'}
# define a translation table
table = str.maketrans(dic)
# get user input and translate
user_input =input("Enter the word: ").upper()
print(user_input.translate(table))

的例子:

Enter the word: ABCD
DEFG

您需要遍历字符串中的值:

dict_a={'A':'D','N':'Q','B':'E','O':'R','C':'F','P':'S','D':'G','Q':'T','E':'H','R':'U','F':'I','S':'V','G':'J','T':'W',
'H':'K','U':'X','I':'L','V':'Y','J':'M','W':'Z','K':'N','X':'A','L':'O','Y':'B','M':'P','Z':'C'}
user_input =(input("Enter the word: ")).upper()
key=user_input
print(''.join([dict_a.get(k) for k in key]))

不要将dict命名为dict,给它一个与默认类不冲突的名称。